File size: 3,311 Bytes
0392324
 
 
 
 
 
 
 
 
 
 
 
 
 
2e3ffc9
0392324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2ecc792
0392324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2ecc792
0392324
 
 
 
 
 
 
2e3ffc9
0392324
2e3ffc9
0392324
2e3ffc9
0392324
 
2e3ffc9
0392324
 
44df0dd
0392324
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
import json
import requests
from PIL import Image

import streamlit as st
from Login import auth_page

st.set_page_config(
    page_title="Welcome",
    page_icon="πŸ‘‹",
    layout="wide",
    initial_sidebar_state="expanded",
)

st.write("# Welcome to Techdocs: Where Code Meets Clarity! πŸš€")

def logout():
    del st.session_state["access_token"]
    del st.session_state["refresh_token"]
    del st.session_state["username"]

with st.sidebar:
    if 'username' not in st.session_state:
        st.header("Login/Signup")
    else:
        st.header(f"Welcome, {st.session_state.username}!")
        st.warning("Generating a new API Key will invalidate the previous one from all your projects. Do you wish to continue?")
        if st.button("Generate API KEY"):
            with st.spinner("Generating API Key..."):
                try:
                    base_url = "http://localhost:8000"
                    headers={"accept":"application/json", "Authorization": f"Bearer {st.session_state.access_token}"}
                    response = requests.put(url=base_url + "/auth/regenerate_api_key", headers=headers, data=json.dumps({"username":st.session_state.username}))
                    if (response.status_code!=200):
                        raise Exception("API Key Generation Failed")
                    st.info("Please save the API KEY as it will be shown only once.")
                    st.code(response.json()["api_key"],"bash")
                    st.success("API Key Generated Successfully")
                except Exception as e:
                    st.error(e)
        


        with st.expander("More Options"):
            if st.button("Logout"):
                logout()
                st.experimental_rerun()


def code_page():
    base_url = 'http://localhost:8000'

    def query_post(url, headers, data=None, params=None):
        response = requests.post(url, data=data, headers=headers, params=params)
        return response
    
    headers={"accept":"application/json"}

    st.subheader("Enter your API key to generate documentation.")
    API_KEY = st.text_input(label="Enter your API key", label_visibility="hidden",placeholder="Enter your API key", type="password")
    st.subheader("Enter your code and click 'Generate Documentation' to get the corresponding comment.")

    code_input = st.text_area("Code Input", height=300)
    comment_placeholder = st.empty()

    if st.button("Generate Documentation"):
        if code_input:
            headers['Authorization'] = f"Bearer {st.session_state.access_token}"
            response = query_post(base_url + '/api/inference', headers=headers, params={'code_block':code_input, 'api_key':API_KEY})
            docstr = response.json()["docstr"]
            comment_placeholder.subheader("Generated Comment:")
            comment_placeholder.markdown(f"<pre><code>{docstr}</code></pre>", unsafe_allow_html=True)
            # Scroll to the comment section
            comment_placeholder.empty()
            comment_placeholder.markdown(f"<pre><code>{docstr}</code></pre>", unsafe_allow_html=True)
        else:
            st.warning("Please enter some code.")


if 'access_token' not in st.session_state:
    st.session_state.runpage = auth_page  
else:
    st.session_state.runpage = code_page
st.session_state.runpage()