JSenkCC commited on
Commit
1549781
·
verified ·
1 Parent(s): 178e3f9

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -7
app.py CHANGED
@@ -93,6 +93,7 @@ def login_page():
93
  else:
94
  st.error("Please fill in all fields.")
95
 
 
96
  def workspace_page():
97
  # Sidebar with logout button
98
  st.sidebar.title(f"Hello, {st.session_state.username}!")
@@ -101,6 +102,16 @@ def workspace_page():
101
  st.session_state.username = None
102
  st.session_state.page = "login"
103
 
 
 
 
 
 
 
 
 
 
 
104
  # Main content area
105
  st.subheader("Workspace")
106
  st.write("You can create a new project by uploading files or folders, or by cloning a GitHub repository.")
@@ -118,12 +129,12 @@ def workspace_page():
118
 
119
  if uploaded_files and project_name:
120
  if st.button("Upload Project"):
121
- user_folder = os.path.join("user_projects", st.session_state.username, project_name)
122
- os.makedirs(user_folder, exist_ok=True)
123
 
124
  for uploaded_file in uploaded_files:
125
  # Save uploaded .zip files or regular files
126
- file_path = os.path.join(user_folder, uploaded_file.name)
127
 
128
  with open(file_path, "wb") as f:
129
  f.write(uploaded_file.getbuffer())
@@ -132,13 +143,14 @@ def workspace_page():
132
  if uploaded_file.name.endswith(".zip"):
133
  try:
134
  with zipfile.ZipFile(file_path, "r") as zip_ref:
135
- zip_ref.extractall(user_folder)
136
  os.remove(file_path) # Remove the .zip file after extraction
137
  st.success(f"Folder from {uploaded_file.name} extracted successfully!")
138
  except zipfile.BadZipFile:
139
  st.error(f"File {uploaded_file.name} is not a valid .zip file.")
140
  else:
141
  st.success(f"File {uploaded_file.name} saved successfully!")
 
142
 
143
  elif action == "Clone GitHub Repository":
144
  st.subheader("Clone GitHub Repository")
@@ -146,15 +158,40 @@ def workspace_page():
146
 
147
  if repo_url and project_name:
148
  if st.button("Upload Project"):
149
- user_folder = os.path.join("user_projects", st.session_state.username, project_name)
150
- os.makedirs(user_folder, exist_ok=True)
151
 
152
  try:
153
- Repo.clone_from(repo_url, user_folder)
154
  st.success(f"Project '{project_name}' cloned successfully!")
155
  except Exception as e:
156
  st.error(f"Failed to clone repository: {e}")
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  if __name__ == "__main__":
159
  main()
160
 
 
93
  else:
94
  st.error("Please fill in all fields.")
95
 
96
+
97
  def workspace_page():
98
  # Sidebar with logout button
99
  st.sidebar.title(f"Hello, {st.session_state.username}!")
 
102
  st.session_state.username = None
103
  st.session_state.page = "login"
104
 
105
+ # Display "Projects" dropdown
106
+ user_folder = os.path.join("user_projects", st.session_state.username)
107
+ os.makedirs(user_folder, exist_ok=True)
108
+ projects = [d for d in os.listdir(user_folder) if os.path.isdir(os.path.join(user_folder, d))]
109
+ selected_project = st.sidebar.selectbox("Projects", ["Select a project"] + projects)
110
+
111
+ if selected_project != "Select a project":
112
+ st.session_state.current_project = selected_project
113
+ st.session_state.page = "project_view"
114
+
115
  # Main content area
116
  st.subheader("Workspace")
117
  st.write("You can create a new project by uploading files or folders, or by cloning a GitHub repository.")
 
129
 
130
  if uploaded_files and project_name:
131
  if st.button("Upload Project"):
132
+ project_folder = os.path.join(user_folder, project_name)
133
+ os.makedirs(project_folder, exist_ok=True)
134
 
135
  for uploaded_file in uploaded_files:
136
  # Save uploaded .zip files or regular files
137
+ file_path = os.path.join(project_folder, uploaded_file.name)
138
 
139
  with open(file_path, "wb") as f:
140
  f.write(uploaded_file.getbuffer())
 
143
  if uploaded_file.name.endswith(".zip"):
144
  try:
145
  with zipfile.ZipFile(file_path, "r") as zip_ref:
146
+ zip_ref.extractall(project_folder)
147
  os.remove(file_path) # Remove the .zip file after extraction
148
  st.success(f"Folder from {uploaded_file.name} extracted successfully!")
149
  except zipfile.BadZipFile:
150
  st.error(f"File {uploaded_file.name} is not a valid .zip file.")
151
  else:
152
  st.success(f"File {uploaded_file.name} saved successfully!")
153
+ st.success(f"Project '{project_name}' uploaded successfully!")
154
 
155
  elif action == "Clone GitHub Repository":
156
  st.subheader("Clone GitHub Repository")
 
158
 
159
  if repo_url and project_name:
160
  if st.button("Upload Project"):
161
+ project_folder = os.path.join(user_folder, project_name)
162
+ os.makedirs(project_folder, exist_ok=True)
163
 
164
  try:
165
+ Repo.clone_from(repo_url, project_folder)
166
  st.success(f"Project '{project_name}' cloned successfully!")
167
  except Exception as e:
168
  st.error(f"Failed to clone repository: {e}")
169
 
170
+ def project_view_page():
171
+ # Sidebar with logout and return buttons
172
+ st.sidebar.title(f"Project: {st.session_state.current_project}")
173
+ if st.sidebar.button("Back to Workspace"):
174
+ st.session_state.page = "workspace"
175
+ if st.sidebar.button("Log Out"):
176
+ st.session_state.authenticated = False
177
+ st.session_state.username = None
178
+ st.session_state.page = "login"
179
+
180
+ # Display project file structure
181
+ st.subheader(f"Project: {st.session_state.current_project}")
182
+ user_folder = os.path.join("user_projects", st.session_state.username)
183
+ project_folder = os.path.join(user_folder, st.session_state.current_project)
184
+
185
+ st.write("File structure:")
186
+ for root, dirs, files in os.walk(project_folder):
187
+ level = root.replace(project_folder, "").count(os.sep)
188
+ indent = " " * 4 * level
189
+ st.text(f"{indent}{os.path.basename(root)}/")
190
+ sub_indent = " " * 4 * (level + 1)
191
+ for file in files:
192
+ st.text(f"{sub_indent}{file}")
193
+
194
+
195
  if __name__ == "__main__":
196
  main()
197