Update app/main.py
Browse files- app/main.py +23 -1
app/main.py
CHANGED
|
@@ -10,6 +10,7 @@ def main(page: ft.Page):
|
|
| 10 |
page.theme_mode = ft.ThemeMode.DARK
|
| 11 |
page.padding = 10
|
| 12 |
|
|
|
|
| 13 |
TG_TOKEN = os.getenv("TELEGRAM_TOKEN")
|
| 14 |
TG_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")
|
| 15 |
GITLAB_URL = "https://gitlab.com"
|
|
@@ -53,6 +54,8 @@ def main(page: ft.Page):
|
|
| 53 |
|
| 54 |
def route_change(route):
|
| 55 |
page.views.clear()
|
|
|
|
|
|
|
| 56 |
if page.route == "/":
|
| 57 |
page.views.append(
|
| 58 |
ft.View("/", [
|
|
@@ -64,6 +67,8 @@ def main(page: ft.Page):
|
|
| 64 |
], spacing=20, horizontal_alignment=ft.CrossAxisAlignment.CENTER)
|
| 65 |
])
|
| 66 |
)
|
|
|
|
|
|
|
| 67 |
elif page.route == "/prestamos":
|
| 68 |
ahora_rd = (datetime.datetime.utcnow() - datetime.timedelta(hours=4)).strftime('%H:%M')
|
| 69 |
nombre = ft.TextField(label="Alumno", expand=True)
|
|
@@ -110,6 +115,8 @@ def main(page: ft.Page):
|
|
| 110 |
], scroll=ft.ScrollMode.ADAPTIVE, expand=True, spacing=10)
|
| 111 |
])
|
| 112 |
)
|
|
|
|
|
|
|
| 113 |
elif page.route == "/repos":
|
| 114 |
repo_list = ft.ListView(expand=True, spacing=10)
|
| 115 |
page.views.append(ft.View("/repos", [ft.AppBar(title=ft.Text("Proyectos")), repo_list, ft.TextButton("Volver", on_click=lambda _: page.go("/"))]))
|
|
@@ -119,6 +126,8 @@ def main(page: ft.Page):
|
|
| 119 |
repo_list.controls.append(ft.ListTile(title=ft.Text(p.name), on_click=lambda _, pid=p.id, pname=p.name: page.go(f"/ver/{pid}/{pname}")))
|
| 120 |
page.update()
|
| 121 |
except: pass
|
|
|
|
|
|
|
| 122 |
elif page.route.startswith("/ver/"):
|
| 123 |
parts = page.route.split("/")
|
| 124 |
pid, pname = parts[2], parts[3]
|
|
@@ -127,12 +136,25 @@ def main(page: ft.Page):
|
|
| 127 |
try:
|
| 128 |
gl = gitlab.Gitlab(GITLAB_URL, private_token=GIT_TOKEN)
|
| 129 |
project = gl.projects.get(pid)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 130 |
c_area.controls.append(ft.Row([
|
| 131 |
ft.ElevatedButton("ZIP", icon=ft.Icons.DOWNLOAD, on_click=lambda _: page.launch_url(f"{GITLAB_URL}/api/v4/projects/{pid}/repository/archive.zip?private_token={GIT_TOKEN}")),
|
| 132 |
ft.OutlinedButton("WEB", icon=ft.Icons.OPEN_IN_NEW, on_click=lambda _: page.launch_url(project.web_url))
|
| 133 |
], alignment=ft.MainAxisAlignment.CENTER))
|
| 134 |
page.update()
|
| 135 |
except: pass
|
|
|
|
| 136 |
page.update()
|
| 137 |
|
| 138 |
page.on_route_change = route_change
|
|
@@ -140,4 +162,4 @@ def main(page: ft.Page):
|
|
| 140 |
|
| 141 |
if __name__ == "__main__":
|
| 142 |
port = int(os.getenv("PORT", 7860))
|
| 143 |
-
ft.app(target=main, view=ft.AppView.WEB_BROWSER, host="0.0.0.0", port=port)
|
|
|
|
| 10 |
page.theme_mode = ft.ThemeMode.DARK
|
| 11 |
page.padding = 10
|
| 12 |
|
| 13 |
+
# --- CONFIGURACIÓN DE VARIABLES ---
|
| 14 |
TG_TOKEN = os.getenv("TELEGRAM_TOKEN")
|
| 15 |
TG_CHAT_ID = os.getenv("TELEGRAM_CHAT_ID")
|
| 16 |
GITLAB_URL = "https://gitlab.com"
|
|
|
|
| 54 |
|
| 55 |
def route_change(route):
|
| 56 |
page.views.clear()
|
| 57 |
+
|
| 58 |
+
# --- MENÚ PRINCIPAL ---
|
| 59 |
if page.route == "/":
|
| 60 |
page.views.append(
|
| 61 |
ft.View("/", [
|
|
|
|
| 67 |
], spacing=20, horizontal_alignment=ft.CrossAxisAlignment.CENTER)
|
| 68 |
])
|
| 69 |
)
|
| 70 |
+
|
| 71 |
+
# --- SECCIÓN PRÉSTAMOS ---
|
| 72 |
elif page.route == "/prestamos":
|
| 73 |
ahora_rd = (datetime.datetime.utcnow() - datetime.timedelta(hours=4)).strftime('%H:%M')
|
| 74 |
nombre = ft.TextField(label="Alumno", expand=True)
|
|
|
|
| 115 |
], scroll=ft.ScrollMode.ADAPTIVE, expand=True, spacing=10)
|
| 116 |
])
|
| 117 |
)
|
| 118 |
+
|
| 119 |
+
# --- SECCIÓN LISTA REPOS ---
|
| 120 |
elif page.route == "/repos":
|
| 121 |
repo_list = ft.ListView(expand=True, spacing=10)
|
| 122 |
page.views.append(ft.View("/repos", [ft.AppBar(title=ft.Text("Proyectos")), repo_list, ft.TextButton("Volver", on_click=lambda _: page.go("/"))]))
|
|
|
|
| 126 |
repo_list.controls.append(ft.ListTile(title=ft.Text(p.name), on_click=lambda _, pid=p.id, pname=p.name: page.go(f"/ver/{pid}/{pname}")))
|
| 127 |
page.update()
|
| 128 |
except: pass
|
| 129 |
+
|
| 130 |
+
# --- VISTA DETALLE REPO (CON README) ---
|
| 131 |
elif page.route.startswith("/ver/"):
|
| 132 |
parts = page.route.split("/")
|
| 133 |
pid, pname = parts[2], parts[3]
|
|
|
|
| 136 |
try:
|
| 137 |
gl = gitlab.Gitlab(GITLAB_URL, private_token=GIT_TOKEN)
|
| 138 |
project = gl.projects.get(pid)
|
| 139 |
+
|
| 140 |
+
# Intentar cargar README
|
| 141 |
+
readme_text = "README.md no encontrado en main/master."
|
| 142 |
+
for branch in ["main", "master"]:
|
| 143 |
+
try:
|
| 144 |
+
f = project.files.get(file_path='README.md', ref=branch)
|
| 145 |
+
readme_text = base64.b64decode(f.content).decode("utf-8")
|
| 146 |
+
break
|
| 147 |
+
except: continue
|
| 148 |
+
|
| 149 |
+
c_area.controls.append(ft.Markdown(readme_text, selectable=True, extension_set=ft.MarkdownExtensionSet.GITHUB_WEB))
|
| 150 |
+
c_area.controls.append(ft.Divider())
|
| 151 |
c_area.controls.append(ft.Row([
|
| 152 |
ft.ElevatedButton("ZIP", icon=ft.Icons.DOWNLOAD, on_click=lambda _: page.launch_url(f"{GITLAB_URL}/api/v4/projects/{pid}/repository/archive.zip?private_token={GIT_TOKEN}")),
|
| 153 |
ft.OutlinedButton("WEB", icon=ft.Icons.OPEN_IN_NEW, on_click=lambda _: page.launch_url(project.web_url))
|
| 154 |
], alignment=ft.MainAxisAlignment.CENTER))
|
| 155 |
page.update()
|
| 156 |
except: pass
|
| 157 |
+
|
| 158 |
page.update()
|
| 159 |
|
| 160 |
page.on_route_change = route_change
|
|
|
|
| 162 |
|
| 163 |
if __name__ == "__main__":
|
| 164 |
port = int(os.getenv("PORT", 7860))
|
| 165 |
+
ft.app(target=main, view=ft.AppView.WEB_BROWSER, host="0.0.0.0", port=port)
|