Browse Source

adicion de comentarios

Oniel Méndez Nieves 4 years ago
parent
commit
3d25696be4

BIN
__pycache__/adminver.cpython-36.pyc View File


BIN
__pycache__/enfermeriaver.cpython-36.pyc View File


BIN
__pycache__/transcripcionmaker.cpython-36.pyc View File


BIN
__pycache__/visitas_enfermeria.cpython-36.pyc View File


BIN
__pycache__/visitas_oficina.cpython-36.pyc View File


+ 348
- 141
adminver.py View File

6
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de administradores
6
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de administradores
7
 #   url: /admin/ver/admin
7
 #   url: /admin/ver/admin
8
 def admin():
8
 def admin():
9
-    query = 'SELECT u.id, u.nombres, u.apellidos, u.email FROM usuarios u,administracion a WHERE u.id = a.user_id'
10
-    result_db = connection.execute(query).fetchall()
9
+
11
 
10
 
12
     ###### headers
11
     ###### headers
12
+    # headers contiene los titulos de las columnas
13
 
13
 
14
     headers = '['
14
     headers = '['
15
     headers += '{"nombre":"Nombre"}'
15
     headers += '{"nombre":"Nombre"}'
22
     headers += ','
22
     headers += ','
23
     headers += '{"nombre":"Editar"}'
23
     headers += '{"nombre":"Editar"}'
24
     headers += ']'
24
     headers += ']'
25
+    #
26
+    # headers={}
27
+    # headers.update({"nombre":"Nombre"})
28
+    # headers.update({"nombre":"Posicion"})
29
+    # headers.update({"nombre":"Email"})
30
+    # headers.update({"1":"Codigo"})
31
+    # headers.update({"nombre":"Informacion"})
32
+    # headers.update({"nombre":"Editar"})
25
 
33
 
26
-    ###### tabla
27
 
34
 
28
 
35
 
29
-    modal_content = '['
36
+    ###### tabla
37
+    # tabla contiene la informacion que sale en las filas
38
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
39
+            FROM usuarios u,administracion a \
40
+            WHERE u.id = a.user_id'
41
+    result_db = connection.execute(query).fetchall()
42
+
30
     tabla = '['
43
     tabla = '['
31
     i = 0
44
     i = 0
32
     len_result = len(result_db)
45
     len_result = len(result_db)
33
     for q in result_db:
46
     for q in result_db:
34
         i = i+1
47
         i = i+1
35
         tabla += '{'
48
         tabla += '{'
36
-        modal_content += '{'
37
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
49
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
38
-        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
39
         tabla += ','
50
         tabla += ','
40
-        modal_content += ','
41
 
51
 
42
         query = 'SELECT posicion FROM administracion a WHERE a.user_id = ' + str(q[0])
52
         query = 'SELECT posicion FROM administracion a WHERE a.user_id = ' + str(q[0])
43
         posicion = connection.execute(query).fetchall()
53
         posicion = connection.execute(query).fetchall()
44
-
45
         tabla += '"Posicion":"'+(str(posicion[0][0]))+'"'
54
         tabla += '"Posicion":"'+(str(posicion[0][0]))+'"'
46
-        modal_content += '"Posicion":"'+(str(posicion[0][0]))+'"'
47
 
55
 
48
         tabla += ','
56
         tabla += ','
49
-        modal_content += ','
50
         tabla += '"Email":"'+(q[3])+'"'
57
         tabla += '"Email":"'+(q[3])+'"'
51
-        modal_content += '"Email":"'+(q[3])+'"'
52
         tabla += ','
58
         tabla += ','
53
-        modal_content += ','
54
         tabla += '"user_id":"'+(str(q[0]))+'"'
59
         tabla += '"user_id":"'+(str(q[0]))+'"'
55
-        modal_content += '"user_id":"'+(str(q[0]))+'"'
56
         tabla += '}'
60
         tabla += '}'
57
-        modal_content += '}'
61
+
58
         if i < len_result:
62
         if i < len_result:
59
             tabla += ','
63
             tabla += ','
60
-            modal_content += ','
61
     tabla += ']'
64
     tabla += ']'
65
+
66
+
67
+    ###### modal_content
68
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
69
+
70
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
71
+            FROM usuarios u,administracion a \
72
+            WHERE u.id = a.user_id'
73
+    result_db = connection.execute(query).fetchall()
74
+
75
+    modal_content = '['
76
+    i = 0
77
+    len_result = len(result_db)
78
+    for q in result_db:
79
+        i = i+1
80
+
81
+        modal_content += '{'
82
+        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
83
+        modal_content += ','
84
+        query = 'SELECT posicion FROM administracion a WHERE a.user_id = ' + str(q[0])
85
+        posicion = connection.execute(query).fetchall()
86
+        modal_content += '"Posicion":"'+(str(posicion[0][0]))+'"'
87
+        modal_content += ','
88
+        modal_content += '"Email":"'+(q[3])+'"'
89
+        modal_content += ','
90
+        modal_content += '"user_id":"'+(str(q[0]))+'"'
91
+        modal_content += '}'
92
+
93
+        if i < len_result:
94
+            modal_content += ','
62
     modal_content += ']'
95
     modal_content += ']'
63
 
96
 
64
     ###### info
97
     ###### info
65
 
98
 
66
     info = '{'
99
     info = '{'
67
-    info += '"dash_name":"Manejar Administracion"'
100
+    info += '"dash_name":"Manejar Administracion"' #nombre en el header
68
     info += ','
101
     info += ','
69
-    info += '"dash_link":"/admin/ver/"'
102
+    info += '"dash_link":"/admin/ver/"' #link si click el header
70
     info += ','
103
     info += ','
71
-    info += '"dash_sub_name":"Administracion Registrados"'
104
+    info += '"dash_sub_name":"Administracion Registrados"' #titulo grande de la pagina
72
     info += ','
105
     info += ','
73
-    info += '"add":"Anadir Administracion"'
106
+    info += '"add":"Anadir Administracion"' #texto en el boton para a~nadir perfil
74
     info += ','
107
     info += ','
75
-    info += '"add_link":"/admin/forma/add/administracion/"'
108
+    info += '"add_link":"/admin/forma/add/administracion/"' #direccion para el boton para a~nadir perfil
76
     info += ','
109
     info += ','
77
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
110
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
78
     info += ','
111
     info += ','
79
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
112
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
80
     info += ','
113
     info += ','
81
-    info += '"dir2":"/admin/forma/edit/administracion/"'
114
+    info += '"dir2":"/admin/forma/edit/administracion/"' #direccion del segundo boton
82
     info += '}'
115
     info += '}'
83
 
116
 
117
+
84
     ###### modal
118
     ###### modal
119
+    # modal contiene el titulo y la direccion parcial del modal
85
 
120
 
86
     modal = '{'
121
     modal = '{'
87
     modal += '"infoName":"Ver informacion"'
122
     modal += '"infoName":"Ver informacion"'
91
 
126
 
92
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
127
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
93
 
128
 
94
-    # print(result)
95
     return(result)
129
     return(result)
96
 
130
 
97
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de encargados
131
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de encargados
98
 #   url: /admin/ver/encargados
132
 #   url: /admin/ver/encargados
99
 def encargados():
133
 def encargados():
100
-    query = 'SELECT u.id, u.nombres, u.apellidos, u.email FROM usuarios u,madres m WHERE u.id = m.user_id'
101
-    result_db = connection.execute(query).fetchall()
102
 
134
 
103
     ###### headers
135
     ###### headers
136
+    # headers contiene los titulos de las columnas
104
 
137
 
105
     headers = '['
138
     headers = '['
106
     headers += '{"nombre":"Nombre"}'
139
     headers += '{"nombre":"Nombre"}'
114
     headers += '{"nombre":"Editar"}'
147
     headers += '{"nombre":"Editar"}'
115
     headers += ']'
148
     headers += ']'
116
 
149
 
150
+
117
     ###### tabla
151
     ###### tabla
152
+    # tabla contiene la informacion que sale en las filas
118
 
153
 
154
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
155
+    FROM usuarios u,madres m \
156
+    WHERE u.id = m.user_id'
157
+    result_db = connection.execute(query).fetchall()
119
 
158
 
120
     tabla = '['
159
     tabla = '['
121
-    modal_content = '['
122
     i = 0
160
     i = 0
123
     len_result = len(result_db)
161
     len_result = len(result_db)
124
     for q in result_db:
162
     for q in result_db:
125
         i = i+1
163
         i = i+1
126
         tabla += '{'
164
         tabla += '{'
127
-        modal_content += '{'
128
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
165
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
129
-        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
130
         tabla += ','
166
         tabla += ','
131
-        modal_content += ','
132
 
167
 
133
         query = 'SELECT count(*) FROM madres_estudiantes me WHERE me.madre_id = ' + str(q[0])
168
         query = 'SELECT count(*) FROM madres_estudiantes me WHERE me.madre_id = ' + str(q[0])
134
         total_hijos = connection.execute(query).fetchall()
169
         total_hijos = connection.execute(query).fetchall()
135
 
170
 
136
         tabla += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
171
         tabla += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
137
-        modal_content += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
138
 
172
 
139
         tabla += ','
173
         tabla += ','
140
-        modal_content += ','
141
         tabla += '"Email":"'+(q[3])+'"'
174
         tabla += '"Email":"'+(q[3])+'"'
142
-        modal_content += '"Email":"'+(q[3])+'"'
143
         tabla += ','
175
         tabla += ','
144
-        modal_content += ','
145
         tabla += '"user_id":"'+str(q[0])+'"'
176
         tabla += '"user_id":"'+str(q[0])+'"'
146
-        modal_content += '"user_id":"'+str(q[0])+'"'
147
         tabla += '}'
177
         tabla += '}'
148
-        modal_content += '}'
149
         if i < len_result:
178
         if i < len_result:
150
             tabla += ','
179
             tabla += ','
151
-            modal_content += ','
152
     tabla += ']'
180
     tabla += ']'
181
+
182
+
183
+
184
+
185
+    ###### modal_content
186
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
187
+
188
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
189
+    FROM usuarios u,madres m \
190
+    WHERE u.id = m.user_id'
191
+    result_db = connection.execute(query).fetchall()
192
+
193
+    modal_content = '['
194
+    i = 0
195
+    len_result = len(result_db)
196
+    for q in result_db:
197
+        i = i+1
198
+        modal_content += '{'
199
+        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
200
+        modal_content += ','
201
+
202
+        query = 'SELECT count(*) FROM madres_estudiantes me WHERE me.madre_id = ' + str(q[0])
203
+        total_hijos = connection.execute(query).fetchall()
204
+
205
+        modal_content += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
206
+
207
+        modal_content += ','
208
+        modal_content += '"Email":"'+(q[3])+'"'
209
+        modal_content += ','
210
+        modal_content += '"user_id":"'+str(q[0])+'"'
211
+        modal_content += '}'
212
+        if i < len_result:
213
+            modal_content += ','
153
     modal_content += ']'
214
     modal_content += ']'
154
 
215
 
216
+
217
+
155
     ###### info
218
     ###### info
156
 
219
 
157
     info = '{'
220
     info = '{'
158
-    info += '"dash_name":"Manejar Encargados"'
221
+    info += '"dash_name":"Manejar Encargados"' #nombre en el header
159
     info += ','
222
     info += ','
160
-    info += '"dash_link":"/admin/ver/"'
223
+    info += '"dash_link":"/admin/ver/"' #link si click el header
161
     info += ','
224
     info += ','
162
-    info += '"dash_sub_name":"Encargados Registrados"'
225
+    info += '"dash_sub_name":"Encargados Registrados"' #titulo grande de la pagina
163
     info += ','
226
     info += ','
164
-    info += '"add":"Anadir Encargados"'
227
+    info += '"add":"Anadir Encargados"' #texto en el boton para a~nadir perfil
165
     info += ','
228
     info += ','
166
-    info += '"add_link":"/admin/forma/add/madre/"'
229
+    info += '"add_link":"/admin/forma/add/madre/"' #direccion para el boton para a~nadir perfil
167
     info += ','
230
     info += ','
168
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
231
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
169
     info += ','
232
     info += ','
170
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
233
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
171
     info += ','
234
     info += ','
172
-    info += '"dir2":"/admin/forma/edit/madre/"'
235
+    info += '"dir2":"/admin/forma/edit/madre/"' #direccion del segundo boton
173
     info += '}'
236
     info += '}'
174
 
237
 
175
     ###### modal
238
     ###### modal
239
+    # modal contiene el titulo y la direccion parcial del modal
176
 
240
 
177
     modal = '{'
241
     modal = '{'
178
     modal += '"infoName":"Ver informacion"'
242
     modal += '"infoName":"Ver informacion"'
182
 
246
 
183
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
247
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
184
 
248
 
185
-    # print(result)
186
     return(result)
249
     return(result)
187
 
250
 
188
 
251
 
189
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de enfermeras
252
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de enfermeras
190
 #   url: /admin/ver/enfermeria
253
 #   url: /admin/ver/enfermeria
191
 def enfermeria():
254
 def enfermeria():
192
-    query = 'SELECT u.id, u.nombres, u.apellidos, u.email FROM usuarios u,enfermeras e WHERE u.id = e.user_id'
193
-    result_db = connection.execute(query).fetchall()
194
 
255
 
195
     ###### headers
256
     ###### headers
257
+    # headers contiene los titulos de las columnas
196
 
258
 
197
     headers = '['
259
     headers = '['
198
     headers += '{"nombre":"Nombre"}'
260
     headers += '{"nombre":"Nombre"}'
206
     headers += '{"nombre":"Editar"}'
268
     headers += '{"nombre":"Editar"}'
207
     headers += ']'
269
     headers += ']'
208
 
270
 
271
+
209
     ###### tabla
272
     ###### tabla
273
+    # tabla contiene la informacion que sale en las filas
210
 
274
 
275
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
276
+            FROM usuarios u,enfermeras e \
277
+            WHERE u.id = e.user_id'
278
+    result_db = connection.execute(query).fetchall()
211
 
279
 
212
     tabla = '['
280
     tabla = '['
213
-    modal_content = '['
214
     i = 0
281
     i = 0
215
     len_result = len(result_db)
282
     len_result = len(result_db)
216
     for q in result_db:
283
     for q in result_db:
217
         i = i+1
284
         i = i+1
218
         tabla += '{'
285
         tabla += '{'
219
-        modal_content += '{'
220
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
286
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
221
-        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
222
         tabla += ','
287
         tabla += ','
223
-        modal_content += ','
224
 
288
 
225
         query = 'SELECT especialidad FROM enfermeras e WHERE e.user_id = ' + str(q[0])
289
         query = 'SELECT especialidad FROM enfermeras e WHERE e.user_id = ' + str(q[0])
226
         especialidad = connection.execute(query).fetchall()
290
         especialidad = connection.execute(query).fetchall()
227
 
291
 
228
         tabla += '"Especialidad":"'+(str(especialidad[0][0]))+'"'
292
         tabla += '"Especialidad":"'+(str(especialidad[0][0]))+'"'
229
-        modal_content += '"Especialidad":"'+(str(especialidad[0][0]))+'"'
230
 
293
 
231
         tabla += ','
294
         tabla += ','
232
-        modal_content += ','
233
         tabla += '"Email":"'+(q[3])+'"'
295
         tabla += '"Email":"'+(q[3])+'"'
234
-        modal_content += '"Email":"'+(q[3])+'"'
235
         tabla += ','
296
         tabla += ','
236
-        modal_content += ','
237
         tabla += '"user_id":"'+str(q[0])+'"'
297
         tabla += '"user_id":"'+str(q[0])+'"'
238
-        modal_content += '"user_id":"'+str(q[0])+'"'
239
         tabla += '}'
298
         tabla += '}'
240
-        modal_content += '}'
241
         if i < len_result:
299
         if i < len_result:
242
             tabla += ','
300
             tabla += ','
243
-            modal_content += ','
244
     tabla += ']'
301
     tabla += ']'
302
+
303
+
304
+
305
+    ###### modal_content
306
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
307
+
308
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
309
+            FROM usuarios u,enfermeras e \
310
+            WHERE u.id = e.user_id'
311
+    result_db = connection.execute(query).fetchall()
312
+
313
+    modal_content = '['
314
+    i = 0
315
+    len_result = len(result_db)
316
+    for q in result_db:
317
+        i = i+1
318
+
319
+        query = 'SELECT especialidad FROM enfermeras e WHERE e.user_id = ' + str(q[0])
320
+        especialidad = connection.execute(query).fetchall()
321
+
322
+        modal_content += '{'
323
+        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
324
+        modal_content += ','
325
+        modal_content += '"Especialidad":"'+(str(especialidad[0][0]))+'"'
326
+        modal_content += ','
327
+        modal_content += '"Email":"'+(q[3])+'"'
328
+        modal_content += ','
329
+        modal_content += '"user_id":"'+str(q[0])+'"'
330
+        modal_content += '}'
331
+        if i < len_result:
332
+            modal_content += ','
245
     modal_content += ']'
333
     modal_content += ']'
246
 
334
 
335
+
247
     ###### info
336
     ###### info
248
 
337
 
249
     info = '{'
338
     info = '{'
250
-    info += '"dash_name":"Manejar Enfermeria"'
339
+    info += '"dash_name":"Manejar Enfermeria"' #nombre en el header
251
     info += ','
340
     info += ','
252
-    info += '"dash_link":"/admin/ver/"'
341
+    info += '"dash_link":"/admin/ver/"' #link si click el header
253
     info += ','
342
     info += ','
254
-    info += '"dash_sub_name":"Enfermeras Registrados"'
343
+    info += '"dash_sub_name":"Enfermeras Registrados"' #titulo grande de la pagina
255
     info += ','
344
     info += ','
256
-    info += '"add":"Anadir Enfermera"'
345
+    info += '"add":"Anadir Enfermera"' #texto en el boton para a~nadir perfil
257
     info += ','
346
     info += ','
258
-    info += '"add_link":"/admin/forma/add/enfermera/"'
347
+    info += '"add_link":"/admin/forma/add/enfermera/"' #direccion para el boton para a~nadir perfil
259
     info += ','
348
     info += ','
260
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
349
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
261
     info += ','
350
     info += ','
262
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
351
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
263
     info += ','
352
     info += ','
264
-    info += '"dir2":"/admin/forma/edit/enfermera/"'
353
+    info += '"dir2":"/admin/forma/edit/enfermera/"' #direccion del segundo boton
265
     info += '}'
354
     info += '}'
266
 
355
 
267
     ###### modal
356
     ###### modal
357
+    # modal contiene el titulo y la direccion parcial del modal
268
 
358
 
269
     modal = '{'
359
     modal = '{'
270
     modal += '"infoName":"Ver informacion"'
360
     modal += '"infoName":"Ver informacion"'
274
 
364
 
275
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
365
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
276
 
366
 
277
-    # print(result)
278
     return(result)
367
     return(result)
279
 
368
 
280
 
369
 
281
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de estudiantes
370
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de estudiantes
282
 #   url: /admin/ver/estudiantes
371
 #   url: /admin/ver/estudiantes
283
 def estudiantes():
372
 def estudiantes():
284
-    query = 'SELECT u.id, u.nombres, u.apellidos, u.email FROM usuarios u, estudiantes m WHERE u.id = m.user_id'
285
-    result_db = connection.execute(query).fetchall()
286
 
373
 
287
     ###### headers
374
     ###### headers
375
+    # headers contiene los titulos de las columnas
288
 
376
 
289
     headers = '['
377
     headers = '['
290
     headers += '{"nombre":"Nombre"}'
378
     headers += '{"nombre":"Nombre"}'
297
     headers += ','
385
     headers += ','
298
     headers += '{"nombre":"Editar"}'
386
     headers += '{"nombre":"Editar"}'
299
     headers += ']'
387
     headers += ']'
300
-    # headers = '[{"nombre":"Nombre"},{"nombre":"Posicion"},{"nombre":"Informacion"},{"nombre":"Editar"}]'
388
+
389
+
301
 
390
 
302
     ###### tabla
391
     ###### tabla
392
+    # tabla contiene la informacion que sale en las filas
303
 
393
 
394
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
395
+            FROM usuarios u, estudiantes m \
396
+            WHERE u.id = m.user_id'
397
+    result_db = connection.execute(query).fetchall()
304
 
398
 
305
     tabla = '['
399
     tabla = '['
306
-    modal_content = '['
307
     i = 0
400
     i = 0
308
     len_result = len(result_db)
401
     len_result = len(result_db)
309
     for q in result_db:
402
     for q in result_db:
310
         i = i+1
403
         i = i+1
311
         tabla += '{'
404
         tabla += '{'
312
-        modal_content += '{'
313
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
405
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
314
-        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
315
         tabla += ','
406
         tabla += ','
316
-        modal_content += ','
317
 
407
 
318
         query = 'SELECT grado FROM estudiantes e WHERE e.user_id = ' + str(q[0])
408
         query = 'SELECT grado FROM estudiantes e WHERE e.user_id = ' + str(q[0])
319
         total_hijos = connection.execute(query).fetchall()
409
         total_hijos = connection.execute(query).fetchall()
320
 
410
 
321
         tabla += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
411
         tabla += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
322
-        modal_content += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
323
 
412
 
324
         tabla += ','
413
         tabla += ','
325
-        modal_content += ','
326
         tabla += '"Email":"'+(q[3])+'"'
414
         tabla += '"Email":"'+(q[3])+'"'
327
-        modal_content += '"Email":"'+(q[3])+'"'
328
         tabla += ','
415
         tabla += ','
329
-        modal_content += ','
330
         tabla += '"user_id":"'+str(q[0])+'"'
416
         tabla += '"user_id":"'+str(q[0])+'"'
331
-        modal_content += '"user_id":"'+str(q[0])+'"'
332
         tabla += '}'
417
         tabla += '}'
333
-        modal_content += '}'
334
         if i < len_result:
418
         if i < len_result:
335
             tabla += ','
419
             tabla += ','
336
-            modal_content += ','
337
     tabla += ']'
420
     tabla += ']'
421
+
422
+
423
+
424
+    ###### modal_content
425
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
426
+
427
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
428
+            FROM usuarios u, estudiantes m \
429
+            WHERE u.id = m.user_id'
430
+    result_db = connection.execute(query).fetchall()
431
+
432
+    modal_content = '['
433
+    i = 0
434
+    len_result = len(result_db)
435
+    for q in result_db:
436
+        i = i+1
437
+
438
+        query = 'SELECT grado FROM estudiantes e WHERE e.user_id = ' + str(q[0])
439
+        total_hijos = connection.execute(query).fetchall()
440
+
441
+        modal_content += '{'
442
+        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
443
+        modal_content += ','
444
+        modal_content += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
445
+        modal_content += ','
446
+        modal_content += '"Email":"'+(q[3])+'"'
447
+        modal_content += ','
448
+        modal_content += '"user_id":"'+str(q[0])+'"'
449
+        modal_content += '}'
450
+        if i < len_result:
451
+            modal_content += ','
338
     modal_content += ']'
452
     modal_content += ']'
339
 
453
 
454
+
340
     ###### info
455
     ###### info
341
 
456
 
342
     info = '{'
457
     info = '{'
358
     info += '}'
473
     info += '}'
359
 
474
 
360
     ###### modal
475
     ###### modal
476
+    # modal contiene el titulo y la direccion parcial del modal
361
 
477
 
362
     modal = '{'
478
     modal = '{'
363
     modal += '"infoName":"Ver informacion"'
479
     modal += '"infoName":"Ver informacion"'
375
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de
491
 # esta funcion se obtiene cuando un administrador quiere ver los perfiles de
376
 #   url: /admin/ver/facultad
492
 #   url: /admin/ver/facultad
377
 def facultad():
493
 def facultad():
494
+    # headers contiene los titulos de las columnas
378
 
495
 
379
     ###### headers
496
     ###### headers
380
 
497
 
389
     headers += ','
506
     headers += ','
390
     headers += '{"nombre":"Editar"}'
507
     headers += '{"nombre":"Editar"}'
391
     headers += ']'
508
     headers += ']'
392
-    # headers = '[{"nombre":"Nombre"},{"nombre":"Posicion"},{"nombre":"Informacion"},{"nombre":"Editar"}]'
393
 
509
 
394
 
510
 
395
     ###### tabla
511
     ###### tabla
512
+    # tabla contiene la informacion que sale en las filas
396
 
513
 
397
-    query = 'SELECT u.id, u.nombres, u.apellidos, u.email FROM usuarios u,facultad f WHERE u.id = f.user_id'
514
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
515
+            FROM usuarios u,facultad f \
516
+            WHERE u.id = f.user_id'
398
     result_db = connection.execute(query).fetchall()
517
     result_db = connection.execute(query).fetchall()
399
 
518
 
400
 
519
 
401
     tabla = '['
520
     tabla = '['
402
-    modal_content = '['
403
     i = 0
521
     i = 0
404
     len_result = len(result_db)
522
     len_result = len(result_db)
405
     for q in result_db:
523
     for q in result_db:
406
         i = i+1
524
         i = i+1
407
         tabla += '{'
525
         tabla += '{'
408
-        modal_content += '{'
409
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
526
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
410
-        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
411
         tabla += ','
527
         tabla += ','
412
-        modal_content += ','
413
 
528
 
414
         query = 'SELECT f.especialidad FROM facultad f WHERE f.user_id =' + str(q[0])
529
         query = 'SELECT f.especialidad FROM facultad f WHERE f.user_id =' + str(q[0])
415
         total_hijos = connection.execute(query).fetchall()
530
         total_hijos = connection.execute(query).fetchall()
416
 
531
 
417
         tabla += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
532
         tabla += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
418
-        modal_content += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
419
 
533
 
420
         tabla += ','
534
         tabla += ','
421
-        modal_content += ','
422
         tabla += '"Email":"'+(q[3])+'"'
535
         tabla += '"Email":"'+(q[3])+'"'
423
-        modal_content += '"Email":"'+(q[3])+'"'
424
         tabla += ','
536
         tabla += ','
425
-        modal_content += ','
426
         tabla += '"user_id":"'+str(q[0])+'"'
537
         tabla += '"user_id":"'+str(q[0])+'"'
427
-        modal_content += '"user_id":"'+str(q[0])+'"'
428
         tabla += '}'
538
         tabla += '}'
429
-        modal_content += '}'
430
         if i < len_result:
539
         if i < len_result:
431
             tabla += ','
540
             tabla += ','
432
-            modal_content += ','
433
     tabla += ']'
541
     tabla += ']'
542
+
543
+
544
+
545
+    ###### modal_content
546
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
547
+
548
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
549
+            FROM usuarios u,facultad f \
550
+            WHERE u.id = f.user_id'
551
+    result_db = connection.execute(query).fetchall()
552
+
553
+
554
+    modal_content = '['
555
+    i = 0
556
+    len_result = len(result_db)
557
+    for q in result_db:
558
+        i = i+1
559
+
560
+        query = 'SELECT f.especialidad FROM facultad f WHERE f.user_id =' + str(q[0])
561
+        total_hijos = connection.execute(query).fetchall()
562
+
563
+        modal_content += '{'
564
+        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
565
+        modal_content += ','
566
+        modal_content += '"Hijos Matriculados":"'+str(total_hijos[0][0])+'"'
567
+        modal_content += ','
568
+        modal_content += '"Email":"'+(q[3])+'"'
569
+        modal_content += ','
570
+        modal_content += '"user_id":"'+str(q[0])+'"'
571
+        modal_content += '}'
572
+        if i < len_result:
573
+            modal_content += ','
434
     modal_content += ']'
574
     modal_content += ']'
435
 
575
 
576
+
577
+
436
     ###### info
578
     ###### info
437
 
579
 
438
     info = '{'
580
     info = '{'
439
-    info += '"dash_name":"Manejar Facultad"'
581
+    info += '"dash_name":"Manejar Facultad"' #nombre en el header
440
     info += ','
582
     info += ','
441
-    info += '"dash_link":"/admin/ver/"'
583
+    info += '"dash_link":"/admin/ver/"' #link si click el header
442
     info += ','
584
     info += ','
443
-    info += '"dash_sub_name":"Facultad Registrados"'
585
+    info += '"dash_sub_name":"Facultad Registrados"' #titulo grande de la pagina
444
     info += ','
586
     info += ','
445
-    info += '"add":"Anadir Facultad"'
587
+    info += '"add":"Anadir Facultad"' #texto en el boton para a~nadir perfil
446
     info += ','
588
     info += ','
447
-    info += '"add_link":"/admin/forma/add/facultad/"'
589
+    info += '"add_link":"/admin/forma/add/facultad/"' #direccion para el boton para a~nadir perfil
448
     info += ','
590
     info += ','
449
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
591
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
450
     info += ','
592
     info += ','
451
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
593
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
452
     info += ','
594
     info += ','
453
-    info += '"dir2":"/admin/forma/edit/facultad/"'
595
+    info += '"dir2":"/admin/forma/edit/facultad/"' #direccion del segundo boton
454
     info += '}'
596
     info += '}'
455
 
597
 
456
     ###### modal
598
     ###### modal
599
+    # modal contiene el titulo y la direccion parcial del modal
457
 
600
 
458
     modal = '{'
601
     modal = '{'
459
     modal += '"infoName":"Ver informacion"'
602
     modal += '"infoName":"Ver informacion"'
471
 #   url: /admin/ver/visitas_oficina
614
 #   url: /admin/ver/visitas_oficina
472
 
615
 
473
 def visita():
616
 def visita():
474
-    query ='SELECT t1.id, t2.nombres e_nombre, t2.apellidos e_apellido,\
475
-                t1.nombres p_nombre, t1.apellidos p_apellido, t1.razon, t1.acciones, t1.fecha\
476
-            FROM (SELECT v.id, u.nombres, u.apellidos,v.razon, v.acciones, v.fecha\
477
-                  	FROM visitas_oficina v, usuarios u\
478
-                  	WHERE v.estudiante_id = u.id) t1,\
479
-            	 (SELECT v.id, u.nombres, u.apellidos\
480
-                  	FROM visitas_oficina v, usuarios u\
481
-                  	WHERE v.administradora_id = u.id) t2\
482
-            WHERE t1.id=t2.id'
483
-    result_db = connection.execute(query).fetchall()
484
 
617
 
485
     ###### headers
618
     ###### headers
619
+    # headers contiene los titulos de las columnas
486
 
620
 
487
     headers = '['
621
     headers = '['
488
     headers += '{"nombre":"Dia y hora"}'
622
     headers += '{"nombre":"Dia y hora"}'
496
     headers += '{"nombre":"Editar"}'
630
     headers += '{"nombre":"Editar"}'
497
     headers += ']'
631
     headers += ']'
498
 
632
 
633
+
634
+
499
     ###### tabla
635
     ###### tabla
636
+    # tabla contiene la informacion que sale en las filas
637
+
638
+    query ='SELECT t1.id, t2.nombres e_nombre, t2.apellidos e_apellido,\
639
+                t1.nombres p_nombre, t1.apellidos p_apellido, t1.razon, t1.acciones, t1.fecha\
640
+            FROM (SELECT v.id, u.nombres, u.apellidos,v.razon, v.acciones, v.fecha\
641
+                  	FROM visitas_oficina v, usuarios u\
642
+                  	WHERE v.estudiante_id = u.id) t1,\
643
+            	 (SELECT v.id, u.nombres, u.apellidos\
644
+                  	FROM visitas_oficina v, usuarios u\
645
+                  	WHERE v.administradora_id = u.id) t2\
646
+            WHERE t1.id=t2.id'
647
+    result_db = connection.execute(query).fetchall()
500
 
648
 
501
-    modal_content = '['
502
     tabla = '['
649
     tabla = '['
503
     i = 0
650
     i = 0
504
     len_result = len(result_db)
651
     len_result = len(result_db)
512
         dia_hora = dia + ' ' + hora
659
         dia_hora = dia + ' ' + hora
513
 
660
 
514
         tabla           += '{'
661
         tabla           += '{'
515
-        modal_content   += '{'
516
         tabla           += '"Dia y hora":"'+dia_hora+'"'
662
         tabla           += '"Dia y hora":"'+dia_hora+'"'
517
         tabla           += ','
663
         tabla           += ','
518
         tabla           += '"Nombre Administrador":"'+(q[1])+' '+(q[2])+'"'
664
         tabla           += '"Nombre Administrador":"'+(q[1])+' '+(q[2])+'"'
519
-        modal_content   += '"Nombre Administrador":"'+(q[1])+' '+(q[2])+'"'
520
         tabla           += ','
665
         tabla           += ','
521
-        modal_content   += ','
522
         tabla           += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
666
         tabla           += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
523
-        modal_content   += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
524
         tabla           += ','
667
         tabla           += ','
668
+
669
+
670
+        tabla           += '"user_id":"'+str(q[0])+'"'
671
+        tabla           += '}'
672
+
673
+        if i < len_result:
674
+            tabla        += ','
675
+    tabla               += ']'
676
+
677
+
678
+
679
+    ###### modal_content
680
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
681
+
682
+    query ='SELECT t1.id, t2.nombres e_nombre, t2.apellidos e_apellido,\
683
+                t1.nombres p_nombre, t1.apellidos p_apellido, t1.razon, t1.acciones, t1.fecha\
684
+            FROM (SELECT v.id, u.nombres, u.apellidos,v.razon, v.acciones, v.fecha\
685
+                  	FROM visitas_oficina v, usuarios u\
686
+                  	WHERE v.estudiante_id = u.id) t1,\
687
+            	 (SELECT v.id, u.nombres, u.apellidos\
688
+                  	FROM visitas_oficina v, usuarios u\
689
+                  	WHERE v.administradora_id = u.id) t2\
690
+            WHERE t1.id=t2.id'
691
+    result_db = connection.execute(query).fetchall()
692
+
693
+    modal_content = '['
694
+    i = 0
695
+    len_result = len(result_db)
696
+    for q in result_db:
697
+        i = i+1
698
+
699
+        dia = str(q[7]).split(' ')[0]
700
+        hora = str(q[7]).split(' ')[1]
701
+        hora = hora.split(':')
702
+        hora = hora[0]+':'+hora[1]
703
+        dia_hora = dia + ' ' + hora
704
+
705
+        modal_content   += '{'
706
+        modal_content   += '"Nombre Administrador":"'+(q[1])+' '+(q[2])+'"'
707
+        modal_content   += ','
708
+        modal_content   += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
525
         modal_content   += ','
709
         modal_content   += ','
526
 
710
 
527
         modal_content   += '"Dia y hora":"'+dia_hora+'"'
711
         modal_content   += '"Dia y hora":"'+dia_hora+'"'
529
         modal_content   += '"Razon":"'+(q[5])+'"'
713
         modal_content   += '"Razon":"'+(q[5])+'"'
530
         modal_content   += ','
714
         modal_content   += ','
531
         modal_content   += '"Explicación":"'+(q[6])+'"'
715
         modal_content   += '"Explicación":"'+(q[6])+'"'
532
-
533
-
534
         modal_content   += ','
716
         modal_content   += ','
535
-        tabla           += '"user_id":"'+str(q[0])+'"'
536
         modal_content   += '"user_id":"'+str(q[0])+'"'
717
         modal_content   += '"user_id":"'+str(q[0])+'"'
537
-        tabla           += '}'
538
         modal_content   += '}'
718
         modal_content   += '}'
539
         if i < len_result:
719
         if i < len_result:
540
-            tabla        += ','
541
             modal_content+= ','
720
             modal_content+= ','
542
-    tabla               += ']'
543
     modal_content       += ']'
721
     modal_content       += ']'
544
 
722
 
723
+
724
+
545
     ###### info
725
     ###### info
546
 
726
 
547
     info = '{'
727
     info = '{'
548
-    info += '"dash_name":"Administración- Manejar Visitas"'
728
+    info += '"dash_name":"Administración- Manejar Visitas"' #nombre en el header
549
     info += ','
729
     info += ','
550
-    info += '"dash_link":"/admin/ver/"'
730
+    info += '"dash_link":"/admin/ver/"' #link si click el header
551
     info += ','
731
     info += ','
552
-    info += '"dash_sub_name":"Visitas hechas"'
732
+    info += '"dash_sub_name":"Visitas hechas"' #titulo grande de la pagina
553
     info += ','
733
     info += ','
554
-    info += '"add":"Anadir Visita"'
734
+    info += '"add":"Anadir Visita"' #texto en el boton para a~nadir perfil
555
     info += ','
735
     info += ','
556
-    info += '"add_link":"/admin/forma/add/visitas_oficina/"'
736
+    info += '"add_link":"/admin/forma/add/visitas_oficina/"' #direccion para el boton para a~nadir perfil
557
     info += ','
737
     info += ','
558
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
738
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
559
     info += ','
739
     info += ','
560
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
740
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
561
     info += ','
741
     info += ','
562
-    info += '"dir2":"/admin/forma/edit/visitas_oficina/"'
742
+    info += '"dir2":"/admin/forma/edit/visitas_oficina/"' #direccion del segundo boton
563
     info += '}'
743
     info += '}'
564
 
744
 
745
+
565
     ###### modal
746
     ###### modal
747
+    # modal contiene el titulo y la direccion parcial del modal
566
     modal = '{'
748
     modal = '{'
567
     modal += '"infoName":"Ver informacion"'
749
     modal += '"infoName":"Ver informacion"'
568
     modal += ','
750
     modal += ','
571
 
753
 
572
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
754
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
573
 
755
 
574
-    # print(result)
575
     return(result)
756
     return(result)
576
 
757
 
577
 
758
 
579
 #   url: /admin/ver/visitas_oficina
760
 #   url: /admin/ver/visitas_oficina
580
 
761
 
581
 def transcripcion():
762
 def transcripcion():
582
-    query = 'SELECT u.id, u.nombres, u.apellidos, u.email FROM usuarios u, estudiantes m WHERE u.id = m.user_id'
583
-    result_db = connection.execute(query).fetchall()
584
 
763
 
585
     ###### headers
764
     ###### headers
765
+    # headers contiene los titulos de las columnas
586
 
766
 
587
     headers = '['
767
     headers = '['
588
     headers += '{"nombre":"Nombre"}'
768
     headers += '{"nombre":"Nombre"}'
595
     headers += ','
775
     headers += ','
596
     headers += '{"nombre":"Transcripción"}'
776
     headers += '{"nombre":"Transcripción"}'
597
     headers += ']'
777
     headers += ']'
598
-    # headers = '[{"nombre":"Nombre"},{"nombre":"Posicion"},{"nombre":"Informacion"},{"nombre":"Editar"}]'
778
+
599
 
779
 
600
     ###### tabla
780
     ###### tabla
781
+    # tabla contiene la informacion que sale en las filas
782
+
783
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
784
+            FROM usuarios u, estudiantes m \
785
+            WHERE u.id = m.user_id'
786
+    result_db = connection.execute(query).fetchall()
601
 
787
 
602
 
788
 
603
     tabla = '['
789
     tabla = '['
604
-    modal_content = '['
605
     i = 0
790
     i = 0
606
     len_result = len(result_db)
791
     len_result = len(result_db)
607
     for q in result_db:
792
     for q in result_db:
608
         i = i+1
793
         i = i+1
609
         tabla += '{'
794
         tabla += '{'
610
-        modal_content += '{'
611
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
795
         tabla += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
612
-        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
613
         tabla += ','
796
         tabla += ','
614
-        modal_content += ','
615
 
797
 
616
         query = 'SELECT grado FROM estudiantes e WHERE e.user_id = ' + str(q[0])
798
         query = 'SELECT grado FROM estudiantes e WHERE e.user_id = ' + str(q[0])
617
-        total_hijos = connection.execute(query).fetchall()
799
+        grado = connection.execute(query).fetchall()
618
 
800
 
619
-        tabla += '"Grado":"'+str(total_hijos[0][0])+'"'
620
-        modal_content += '"Grado":"'+str(total_hijos[0][0])+'"'
801
+        tabla += '"Grado":"'+str(grado[0][0])+'"'
621
 
802
 
622
         tabla += ','
803
         tabla += ','
623
-        modal_content += ','
624
         tabla += '"Email":"'+(q[3])+'"'
804
         tabla += '"Email":"'+(q[3])+'"'
625
-        modal_content += '"Email":"'+(q[3])+'"'
626
         tabla += ','
805
         tabla += ','
627
-        modal_content += ','
628
         tabla += '"user_id":"'+str(q[0])+'"'
806
         tabla += '"user_id":"'+str(q[0])+'"'
629
-        modal_content += '"user_id":"'+str(q[0])+'"'
630
         tabla += '}'
807
         tabla += '}'
631
-        modal_content += '}'
632
         if i < len_result:
808
         if i < len_result:
633
             tabla += ','
809
             tabla += ','
634
-            modal_content += ','
635
     tabla += ']'
810
     tabla += ']'
811
+
812
+
813
+    ###### modal_content
814
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
815
+    query = 'SELECT u.id, u.nombres, u.apellidos, u.email \
816
+            FROM usuarios u, estudiantes m \
817
+            WHERE u.id = m.user_id'
818
+    result_db = connection.execute(query).fetchall()
819
+
820
+    modal_content = '['
821
+    i = 0
822
+    len_result = len(result_db)
823
+    for q in result_db:
824
+        i = i+1
825
+
826
+        query = 'SELECT grado FROM estudiantes e WHERE e.user_id = ' + str(q[0])
827
+        grado = connection.execute(query).fetchall()
828
+
829
+        modal_content += '{'
830
+        modal_content += '"Nombre":"'+(q[1])+' '+(q[2])+'"'
831
+        modal_content += ','
832
+        modal_content += '"Grado":"'+str(grado[0][0])+'"'
833
+        modal_content += ','
834
+        modal_content += '"Email":"'+(q[3])+'"'
835
+        modal_content += ','
836
+        modal_content += '"user_id":"'+str(q[0])+'"'
837
+        modal_content += '}'
838
+        if i < len_result:
839
+            modal_content += ','
636
     modal_content += ']'
840
     modal_content += ']'
637
 
841
 
842
+
843
+
844
+
638
     ###### info
845
     ###### info
639
 
846
 
640
     info = '{'
847
     info = '{'
641
     info += '"dash_name":"Manejar Estudiantes"' #nombre en el header
848
     info += '"dash_name":"Manejar Estudiantes"' #nombre en el header
642
     info += ','
849
     info += ','
643
-    info += '"dash_link":"/admin/ver/"' #link al click el header
850
+    info += '"dash_link":"/admin/ver/"' #link si click el header
644
     info += ','
851
     info += ','
645
     info += '"dash_sub_name":"Estudiantes Registrados"' #titulo grande de la pagina
852
     info += '"dash_sub_name":"Estudiantes Registrados"' #titulo grande de la pagina
646
     info += ','
853
     info += ','
656
     info += '}'
863
     info += '}'
657
 
864
 
658
     ###### modal
865
     ###### modal
866
+    # modal contiene el titulo y la direccion parcial del modal
659
 
867
 
660
     modal = '{'
868
     modal = '{'
661
     modal += '"infoName":"Ver informacion"'
869
     modal += '"infoName":"Ver informacion"'
665
 
873
 
666
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
874
     result = '{"headers":'+headers+',"tabla":'+tabla+',"modal_content":'+modal_content+',"info":'+info+',"modal":'+modal+'}'
667
 
875
 
668
-    # print(result)
669
     return(result)
876
     return(result)

+ 23
- 11
dash-run.py View File

10
 
10
 
11
 app = Flask(__name__)
11
 app = Flask(__name__)
12
 
12
 
13
+############# estas direcciones no son del producto final. son para pruebas.
13
 @app.route("/", methods=['GET', 'POST'])
14
 @app.route("/", methods=['GET', 'POST'])
14
 @app.route("/home/", methods=['GET', 'POST'])
15
 @app.route("/home/", methods=['GET', 'POST'])
15
 def home():
16
 def home():
16
     return render_template('dash.html', jscript="perfilesInfo.js")
17
     return render_template('dash.html', jscript="perfilesInfo.js")
17
-
18
-
18
+#############
19
+
20
+
21
+'''
22
+estas direcciones permiten ver las siguientes paginas de los siguientes perfiles:
23
+    admin:
24
+        ver y editar los perfiles de
25
+                            admin
26
+                            facultad
27
+                            enfermeria
28
+                            encargados
29
+                            estudiantes
30
+        ver y manejar las visitas en la oficina
31
+        crear las transcripcion
32
+
33
+    enfermeras:
34
+        pueden ver y crear visitas hechas en la enfermeria
35
+'''
19
 @app.route("/<perfil>/ver/", methods=['GET', 'POST'])
36
 @app.route("/<perfil>/ver/", methods=['GET', 'POST'])
20
 @app.route("/<perfil>/ver/<pagina>/", methods=['GET', 'POST'])
37
 @app.route("/<perfil>/ver/<pagina>/", methods=['GET', 'POST'])
21
 def perfil(perfil, pagina=None):
38
 def perfil(perfil, pagina=None):
31
             return render_template('table.html', jscript="enfermeriaver.js", pagina=pagina)
48
             return render_template('table.html', jscript="enfermeriaver.js", pagina=pagina)
32
     return render_template('error.html')
49
     return render_template('error.html')
33
 
50
 
34
-# @app.route("/<perfil>/editar/<pagina>/", methods=['GET', 'POST'])
35
-# @app.route("/<perfil>/editar/<pagina>/<id>", methods=['GET', 'POST'])
36
-# def perfil(perfil, pagina, id=None):
37
-#     if (perfil=='admin'):
38
-#         if (pagina=='estudiante'):
39
-#             return render_template('dash.html', jscript="admin.js", pagina=pagina)
40
-#         if(pagina in ['admin','facultad','enfermeria','encargados','estudiantes']):
41
-#             return render_template('table.html', jscript="adminver.js", pagina=pagina)
42
-#     return render_template('error.html')
43
 
51
 
52
+'''
53
+estas direcciones son llamadas por las paginass de la seccion anterior.
54
+    estas direcciones regresan la informacion guardada en la base de datos.
55
+'''
44
 @app.route('/<perfil>/datos/', methods=['GET', 'POST'])
56
 @app.route('/<perfil>/datos/', methods=['GET', 'POST'])
45
 @app.route('/<perfil>/datos/<pagina>/', methods=['GET', 'POST'])
57
 @app.route('/<perfil>/datos/<pagina>/', methods=['GET', 'POST'])
46
 def datos(perfil, pagina=None):
58
 def datos(perfil, pagina=None):

+ 67
- 27
enfermeriaver.py View File

2
 import sqlalchemy as db
2
 import sqlalchemy as db
3
 
3
 
4
 def visitas():
4
 def visitas():
5
-    query ='SELECT t1.id, t2.nombres e_nombre, t2.apellidos e_apellido,\
6
-                t1.nombres p_nombre, t1.apellidos p_apellido, t1.razon, t1.acciones, t1.fecha\
7
-            FROM (SELECT v.id, u.nombres, u.apellidos,v.razon, v.acciones, v.fecha\
8
-                  	FROM visitas_enfermeria v, usuarios u\
9
-                  	WHERE v.estudiante_id = u.id) t1,\
10
-            	 (SELECT v.id, u.nombres, u.apellidos\
11
-                  	FROM visitas_enfermeria v, usuarios u\
12
-                  	WHERE v.enfermera_id = u.id) t2\
13
-            WHERE t1.id=t2.id'
14
-    result_db = connection.execute(query).fetchall()
15
 
5
 
16
     ###### headers
6
     ###### headers
7
+    # headers contiene los titulos de las columnas
17
 
8
 
18
     headers = '['
9
     headers = '['
19
     headers += '{"nombre":"Dia y hora"}'
10
     headers += '{"nombre":"Dia y hora"}'
27
     headers += '{"nombre":"Editar"}'
18
     headers += '{"nombre":"Editar"}'
28
     headers += ']'
19
     headers += ']'
29
 
20
 
21
+
30
     ###### tabla
22
     ###### tabla
23
+    # tabla contiene la informacion que sale en las filas
24
+
25
+    query ='SELECT t1.id, t2.nombres e_nombre, t2.apellidos e_apellido,\
26
+                t1.nombres p_nombre, t1.apellidos p_apellido, t1.razon, t1.acciones, t1.fecha\
27
+            FROM (SELECT v.id, u.nombres, u.apellidos,v.razon, v.acciones, v.fecha\
28
+                  	FROM visitas_enfermeria v, usuarios u\
29
+                  	WHERE v.estudiante_id = u.id) t1,\
30
+            	 (SELECT v.id, u.nombres, u.apellidos\
31
+                  	FROM visitas_enfermeria v, usuarios u\
32
+                  	WHERE v.enfermera_id = u.id) t2\
33
+            WHERE t1.id=t2.id'
34
+    result_db = connection.execute(query).fetchall()
31
 
35
 
32
-    modal_content = '['
33
     tabla = '['
36
     tabla = '['
34
     i = 0
37
     i = 0
35
     len_result = len(result_db)
38
     len_result = len(result_db)
43
         dia_hora = dia + ' ' + hora
46
         dia_hora = dia + ' ' + hora
44
 
47
 
45
         tabla           += '{'
48
         tabla           += '{'
46
-        modal_content   += '{'
47
         tabla           += '"Dia y hora":"'+dia_hora+'"'
49
         tabla           += '"Dia y hora":"'+dia_hora+'"'
48
-        modal_content   += '"Nombre Enfermera":"'+(q[1])+' '+(q[2])+'"'
49
         tabla           += ','
50
         tabla           += ','
50
-        modal_content   += ','
51
         tabla           += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
51
         tabla           += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
52
-        modal_content   += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
53
         tabla           += ','
52
         tabla           += ','
54
-        modal_content   += ','
55
 
53
 
56
         tabla           += '"Razon":"'+(q[5])+'"'
54
         tabla           += '"Razon":"'+(q[5])+'"'
55
+
56
+
57
+        tabla           += ','
58
+        tabla           += '"user_id":"'+str(q[0])+'"'
59
+        tabla           += '}'
60
+        if i < len_result:
61
+            tabla        += ','
62
+    tabla               += ']'
63
+
64
+
65
+
66
+    ###### modal_content
67
+    # modal_content contiene la informacion única de cada fila al presionar 'ver mas'
68
+
69
+    query ='SELECT t1.id, t2.nombres e_nombre, t2.apellidos e_apellido,\
70
+                t1.nombres p_nombre, t1.apellidos p_apellido, t1.razon, t1.acciones, t1.fecha\
71
+            FROM (SELECT v.id, u.nombres, u.apellidos,v.razon, v.acciones, v.fecha\
72
+                  	FROM visitas_enfermeria v, usuarios u\
73
+                  	WHERE v.estudiante_id = u.id) t1,\
74
+            	 (SELECT v.id, u.nombres, u.apellidos\
75
+                  	FROM visitas_enfermeria v, usuarios u\
76
+                  	WHERE v.enfermera_id = u.id) t2\
77
+            WHERE t1.id=t2.id'
78
+    result_db = connection.execute(query).fetchall()
79
+
80
+    modal_content = '['
81
+    i = 0
82
+    len_result = len(result_db)
83
+    for q in result_db:
84
+        i = i+1
85
+
86
+        dia = str(q[7]).split(' ')[0]
87
+        hora = str(q[7]).split(' ')[1]
88
+        hora = hora.split(':')
89
+        hora = hora[0]+':'+hora[1]
90
+        dia_hora = dia + ' ' + hora
91
+
92
+        modal_content   += '{'
93
+        modal_content   += '"Nombre Enfermera":"'+(q[1])+' '+(q[2])+'"'
94
+        modal_content   += ','
95
+        modal_content   += '"Nombre Estudiante":"'+(q[3])+' '+(q[4])+'"'
96
+        modal_content   += ','
97
+
57
         modal_content   += '"Razon":"'+(q[5])+'"'
98
         modal_content   += '"Razon":"'+(q[5])+'"'
58
         modal_content   += ','
99
         modal_content   += ','
59
         modal_content   += '"Explicación":"'+(q[6])+'"'
100
         modal_content   += '"Explicación":"'+(q[6])+'"'
61
         modal_content   += '"Dia y hora":"'+dia_hora+'"'
102
         modal_content   += '"Dia y hora":"'+dia_hora+'"'
62
 
103
 
63
 
104
 
64
-        tabla           += ','
65
         modal_content   += ','
105
         modal_content   += ','
66
-        tabla           += '"user_id":"'+str(q[0])+'"'
67
         modal_content   += '"user_id":"'+str(q[0])+'"'
106
         modal_content   += '"user_id":"'+str(q[0])+'"'
68
-        tabla           += '}'
69
         modal_content   += '}'
107
         modal_content   += '}'
70
         if i < len_result:
108
         if i < len_result:
71
-            tabla        += ','
72
             modal_content+= ','
109
             modal_content+= ','
73
-    tabla               += ']'
74
     modal_content       += ']'
110
     modal_content       += ']'
75
 
111
 
112
+
113
+
76
     ###### info
114
     ###### info
77
 
115
 
78
     info = '{'
116
     info = '{'
79
-    info += '"dash_name":"Enfermeria- Manejar Visitas"'
117
+    info += '"dash_name":"Enfermeria- Manejar Visitas"' #nombre en el header
80
     info += ','
118
     info += ','
81
-    info += '"dash_link":"/enfermeria/ver/"'
119
+    info += '"dash_link":"/enfermeria/ver/"' #link si click el header
82
     info += ','
120
     info += ','
83
-    info += '"dash_sub_name":"Visitas hechas"'
121
+    info += '"dash_sub_name":"Visitas hechas"' #titulo grande de la pagina
84
     info += ','
122
     info += ','
85
-    info += '"add":"Anadir Visita"'
123
+    info += '"add":"Anadir Visita"'  #texto en el boton para a~nadir perfil
86
     info += ','
124
     info += ','
87
-    info += '"add_link":"/enfermeria/forma/add/visitas_enfermeria/"'
125
+    info += '"add_link":"/enfermeria/forma/add/visitas_enfermeria/"'  #direccion para el boton para a~nadir perfil
88
     info += ','
126
     info += ','
89
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
127
     info += '"bot1":"Ver Mas"' #texto del primer boton en una fila
90
     info += ','
128
     info += ','
91
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
129
     info += '"bot2":"Editar"' #texto del segundo boton en una fila
92
     info += ','
130
     info += ','
93
-    info += '"dir2":"/enfermeria/forma/edit/visitas_enfermeria/"'
131
+    info += '"dir2":"/enfermeria/forma/edit/visitas_enfermeria/"'  #direccion del segundo boton
94
     info += '}'
132
     info += '}'
95
 
133
 
96
     ###### modal
134
     ###### modal
135
+    # modal contiene el titulo y la direccion parcial del modal
136
+
97
     modal = '{'
137
     modal = '{'
98
     modal += '"infoName":"Ver informacion"'
138
     modal += '"infoName":"Ver informacion"'
99
     modal += ','
139
     modal += ','

+ 9
- 1
static/admin.js View File

1
+/*
2
+este archivo contiene la siguiente informacion de cada boton que le aparece en
3
+  el dashboard del administrador ($scope.opciones):
4
+      texto
5
+      direccion
6
+tambien contiene el nombre que aparece en la esquina superior izq. y la dirreccion
7
+  al presionarlo ($scope.info)
8
+*/
1
 var dash = angular.module('dash',[]);
9
 var dash = angular.module('dash',[]);
2
 
10
 
3
 dash.controller('dashController', function($scope){
11
 dash.controller('dashController', function($scope){
52
     }
60
     }
53
   ];
61
   ];
54
   $scope.info = {
62
   $scope.info = {
55
-      dash_name:'Dashboard de Administracion',
63
+      dash_name:'Dashboard de Administración',
56
       dash_link:'/',
64
       dash_link:'/',
57
     };
65
     };
58
 });
66
 });

+ 19
- 5
static/adminver.js View File

1
+/*
2
+este archivo llama a la base de datos con la informacion adecuada basado en cual
3
+pagina el administrador esta accesando
4
+*/
1
 var table = angular.module('table',['ngSanitize']);
5
 var table = angular.module('table',['ngSanitize']);
2
-// var table = angular.module('table',[]);
3
 
6
 
4
 table.controller('tableController', function tableController($http, $scope, pagina){
7
 table.controller('tableController', function tableController($http, $scope, pagina){
5
 
8
 
7
   console.log(',datos,admin,'+pagina);
10
   console.log(',datos,admin,'+pagina);
8
 
11
 
9
   $http.get(url).then(function(response) {
12
   $http.get(url).then(function(response) {
13
+    // headers contiene los titulos de las columnas
10
     $scope.headers = response.data.headers;
14
     $scope.headers = response.data.headers;
15
+
16
+    // tabla contiene la informacion de cada fila
11
     $scope.tabla = response.data.tabla;
17
     $scope.tabla = response.data.tabla;
18
+
19
+    // info contiene la siguiente informacion:
20
+    //    texto del header y su link
21
+    //    titulo de la pagina
22
+    //    texto y link del boton de añadir
23
+    //    texto del boton de 'ver mas'
24
+    //    texto y link del boton de 'editar'
12
     $scope.info = response.data.info;
25
     $scope.info = response.data.info;
26
+
27
+    // modal contiene el titulo y la direccion parcial del modal
13
     $scope.modal = response.data.modal;
28
     $scope.modal = response.data.modal;
29
+
30
+    // modal_content contiene la informacion única de cada fila al presionar 'ver mas'
14
     $scope.modal_content = response.data.modal_content;
31
     $scope.modal_content = response.data.modal_content;
32
+
15
     console.log(response.data);
33
     console.log(response.data);
16
-    // document.write(response.data.headers);
17
-    // document.write(response.data.tabla);
18
-    // document.write(response.data.info);
19
-    // document.write(response.data.modal);
20
   });
34
   });
21
 });
35
 });

+ 8
- 0
static/enfermeria.js View File

1
+/*
2
+este archivo contiene la siguiente informacion de cada boton que le aparece en
3
+  el dashboard del enfermeria ($scope.opciones):
4
+      texto
5
+      direccion
6
+tambien contiene el nombre que aparece en la esquina superior izq. y la dirreccion
7
+  al presionarlo ($scope.info)
8
+*/
1
 var dash = angular.module('dash',[]);
9
 var dash = angular.module('dash',[]);
2
 
10
 
3
 dash.controller('dashController', function($scope){
11
 dash.controller('dashController', function($scope){

+ 19
- 5
static/enfermeriaver.js View File

1
+/*
2
+este archivo llama a la base de datos con la informacion adecuada basado en cual
3
+pagina la enfermera esta accesando
4
+*/
1
 var table = angular.module('table',['ngSanitize']);
5
 var table = angular.module('table',['ngSanitize']);
2
-// var table = angular.module('table',[]);
3
 
6
 
4
 table.controller('tableController', function tableController($http, $scope, pagina){
7
 table.controller('tableController', function tableController($http, $scope, pagina){
5
 
8
 
7
   console.log(',datos,admin,'+pagina);
10
   console.log(',datos,admin,'+pagina);
8
 
11
 
9
   $http.get(url).then(function(response) {
12
   $http.get(url).then(function(response) {
13
+    // headers contiene los titulos de las columnas
10
     $scope.headers = response.data.headers;
14
     $scope.headers = response.data.headers;
15
+
16
+    // tabla contiene la informacion de cada fila
11
     $scope.tabla = response.data.tabla;
17
     $scope.tabla = response.data.tabla;
18
+
19
+    // info contiene la siguiente informacion:
20
+    //    texto del header y su link
21
+    //    titulo de la pagina
22
+    //    texto y link del boton de añadir
23
+    //    texto del boton de 'ver mas'
24
+    //    texto y link del boton de 'editar'
12
     $scope.info = response.data.info;
25
     $scope.info = response.data.info;
26
+
27
+    // modal contiene el titulo y la direccion parcial del modal
13
     $scope.modal = response.data.modal;
28
     $scope.modal = response.data.modal;
29
+
30
+    // modal_content contiene la informacion única de cada fila al presionar 'ver mas'
14
     $scope.modal_content = response.data.modal_content;
31
     $scope.modal_content = response.data.modal_content;
32
+
15
     console.log(response.data);
33
     console.log(response.data);
16
-    // document.write(response.data.headers);
17
-    // document.write(response.data.tabla);
18
-    // document.write(response.data.info);
19
-    // document.write(response.data.modal);
20
   });
34
   });
21
 });
35
 });

+ 1
- 1
static/forma.js View File

5
 forma.controller('FormController', function FormController($http, $scope, accion, tipo, id, user_type, $window) {
5
 forma.controller('FormController', function FormController($http, $scope, accion, tipo, id, user_type, $window) {
6
   	console.log(accion +","+ tipo +","+ id);
6
   	console.log(accion +","+ tipo +","+ id);
7
   	var url = '/'+user_type+'/formaDatos/'+accion+'/'+tipo+'/'
7
   	var url = '/'+user_type+'/formaDatos/'+accion+'/'+tipo+'/'
8
-  	if(id)
8
+  	if(id!='None')
9
   	{
9
   	{
10
   		url+= id;
10
   		url+= id;
11
   	}
11
   	}

+ 5
- 12
templates/dash.html View File

1
 <html>
1
 <html>
2
 
2
 
3
-  <!-- empieza los includes -->
4
   <head>
3
   <head>
5
     <title>Draft</title>
4
     <title>Draft</title>
6
     <meta name="viewport" content="width=device-width, initial-scale=1">
5
     <meta name="viewport" content="width=device-width, initial-scale=1">
7
     <meta charset="UTF-8">
6
     <meta charset="UTF-8">
8
     <link rel="icon" href="/../Icon.ico" sizes="32x32">
7
     <link rel="icon" href="/../Icon.ico" sizes="32x32">
9
-    <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> -->
10
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
8
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
11
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
9
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
12
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
10
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
13
     <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
11
     <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
14
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
12
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
15
-
16
-
17
-    <!-- el .css -->
18
     <link rel="stylesheet" href="{{ url_for('static', filename='estilo.css') }}" />
13
     <link rel="stylesheet" href="{{ url_for('static', filename='estilo.css') }}" />
19
-
20
-    <!-- los .js que quiero usar -->
21
     <script type="text/javascript" src="{{ url_for('static', filename=jscript) }}"></script>
14
     <script type="text/javascript" src="{{ url_for('static', filename=jscript) }}"></script>
22
     <script>
15
     <script>
16
+    // la variable 'pagina' la usa el javascript para que el *-run.py sepa
17
+    //      cual funcion del python file llamar, basado en la direccion.
18
+    //        esta funcion se encarga de comunicarse con la base de datos.
23
       dash.value("pagina", "{{pagina}}")
19
       dash.value("pagina", "{{pagina}}")
24
     </script>
20
     </script>
25
-    {% raw %}
26
-    {{perfil}}{{pagina}}{{id}}{{jscript}}
27
-    {% endraw %}
28
-
29
   </head>
21
   </head>
30
-  <!-- termina los includes -->
31
 
22
 
32
   <body ng-app="dash" ng-controller="dashController">
23
   <body ng-app="dash" ng-controller="dashController">
33
     <nav class="navbar header navbar-dark bg-dark navbar-expand">
24
     <nav class="navbar header navbar-dark bg-dark navbar-expand">
34
       {% raw %}
25
       {% raw %}
26
+      <!-- el texto en la parte superior izquerda -->
35
       <a class="navbar-brand" href="{{info.dash_link}}">{{info.dash_name}}</a>
27
       <a class="navbar-brand" href="{{info.dash_link}}">{{info.dash_name}}</a>
36
       {% endraw %}
28
       {% endraw %}
37
     </nav>
29
     </nav>
38
 
30
 
39
     <div class="container-fluid text-center">
31
     <div class="container-fluid text-center">
40
       {% raw %}
32
       {% raw %}
33
+      <!-- esto genera cada boton -->
41
       <a ng-repeat="opcion in opciones" href="{{opcion.dir}}" class="btn task boton mr-4">{{opcion.nombre}}</a>
34
       <a ng-repeat="opcion in opciones" href="{{opcion.dir}}" class="btn task boton mr-4">{{opcion.nombre}}</a>
42
       {% endraw %}
35
       {% endraw %}
43
     </div>
36
     </div>

+ 9
- 20
templates/table.html View File

1
 <html>
1
 <html>
2
 
2
 
3
-  <!-- empieza los includes -->
4
   <head>
3
   <head>
5
     <title>Draft</title>
4
     <title>Draft</title>
6
     <meta name="viewport" content="width=device-width, initial-scale=1">
5
     <meta name="viewport" content="width=device-width, initial-scale=1">
7
     <meta charset="UTF-8">
6
     <meta charset="UTF-8">
8
     <link rel="icon" href="/../Icon.ico" sizes="32x32">
7
     <link rel="icon" href="/../Icon.ico" sizes="32x32">
9
-    <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"> -->
10
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
8
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
11
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
9
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
12
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
10
     <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>
13
-    <!-- <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script> -->
14
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
11
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
15
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
12
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
16
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-sanitize.js"></script>
13
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-sanitize.js"></script>
17
-
18
-    <!-- el .css -->
19
     <link rel="stylesheet" href="{{ url_for('static', filename='estilo.css') }}" />
14
     <link rel="stylesheet" href="{{ url_for('static', filename='estilo.css') }}" />
20
-
21
-    <!-- los .js que quiero usar -->
22
     <script type="text/javascript" src="{{ url_for('static', filename=jscript) }}"></script>
15
     <script type="text/javascript" src="{{ url_for('static', filename=jscript) }}"></script>
23
     <script>
16
     <script>
24
-    // la variable 'pagina' la usa el javascript para que el run.py sepa cual python file abrir.
25
-    //        este python file se encarga de comunicarse con la base de datos.
17
+    // la variable 'pagina' la usa el javascript para que el *-run.py sepa
18
+    //      cual funcion del python file llamar, basado en la direccion.
19
+    //        esta funcion se encarga de comunicarse con la base de datos.
26
       table.value("pagina", "{{pagina}}")
20
       table.value("pagina", "{{pagina}}")
27
     </script>
21
     </script>
28
-    {% raw %}
29
-    <!-- {{headers}} -->
30
-    <!-- {{tabla}} -->
31
-    <!-- {{info}} -->
32
-    <!-- {{modal}} -->
33
-    <!-- {{modal_content}} -->
34
-    {% endraw %}
35
-
36
   </head>
22
   </head>
37
-  <!-- termina los includes -->
38
-
39
 
23
 
40
   <body ng-app="table" ng-controller="tableController">
24
   <body ng-app="table" ng-controller="tableController">
41
     <nav class="navbar navbar-dark bg-dark navbar-expand">
25
     <nav class="navbar navbar-dark bg-dark navbar-expand">
55
       <div class="row" >
39
       <div class="row" >
56
         <div class="col-2" >
40
         <div class="col-2" >
57
           <div class="topnav">
41
           <div class="topnav">
42
+            <!-- la proxima seccion de codigo es solamente para el searchbox sobre la tabla. -->
58
             <!-- ################################ con ayuda de w3schools:
43
             <!-- ################################ con ayuda de w3schools:
59
-                                                How TO - Filter/Search Table-->
44
+                                                How TO - Filter/Search Table
45
+            -->
60
             <input type="text" id="myInput" onkeyup="filter_search()" placeholder="Search..">
46
             <input type="text" id="myInput" onkeyup="filter_search()" placeholder="Search..">
61
             <script>
47
             <script>
62
               function filter_search() {
48
               function filter_search() {
94
           <!-- <button href='./' type="submit">Submit</button> -->
80
           <!-- <button href='./' type="submit">Submit</button> -->
95
         </div>
81
         </div>
96
         <div class="col-4" >
82
         <div class="col-4" >
83
+          <!-- el boton de a~nadir, el cual lleva a un form -->
97
           {% raw %}
84
           {% raw %}
98
           <a class="btn button boton mr-4" href="{{info.add_link}}">{{info.add}}</a>
85
           <a class="btn button boton mr-4" href="{{info.add_link}}">{{info.add}}</a>
99
           {% endraw %}
86
           {% endraw %}
104
           <table id='tabla'>
91
           <table id='tabla'>
105
             <tr>
92
             <tr>
106
               {% raw %}
93
               {% raw %}
94
+              <!-- imprime los titulos de cada columna -->
107
               <th ng-repeat="header in headers" class="header2">{{header.nombre}}</th>
95
               <th ng-repeat="header in headers" class="header2">{{header.nombre}}</th>
108
               {% endraw %}
96
               {% endraw %}
109
             </tr>
97
             </tr>
98
+            <!-- para imprimir cada fila -->
110
             <tr ng-repeat="row in tabla">
99
             <tr ng-repeat="row in tabla">
111
               {% raw %}
100
               {% raw %}
112
               <!-- la proxima linea asume que las entradas en la tabla tienen un id unico con -->
101
               <!-- la proxima linea asume que las entradas en la tabla tienen un id unico con -->

+ 2
- 1
templates/transcripcion.html View File

105
                 <td>
105
                 <td>
106
                   <div ng-bind-html="clase.nombre"></div>
106
                   <div ng-bind-html="clase.nombre"></div>
107
                 </td>
107
                 </td>
108
-                <td>
108
+                <td ng-if='clase.porciento'>
109
                   <div ng-if="clase.porciento >= 90                       " >A</div>
109
                   <div ng-if="clase.porciento >= 90                       " >A</div>
110
                   <div ng-if="clase.porciento >= 80 && clase.porciento <= 89" >B</div>
110
                   <div ng-if="clase.porciento >= 80 && clase.porciento <= 89" >B</div>
111
                   <div ng-if="clase.porciento >= 70 && clase.porciento <= 79" >C</div>
111
                   <div ng-if="clase.porciento >= 70 && clase.porciento <= 79" >C</div>
143
 //        este python file se encarga de comunicarse con la base de datos.
143
 //        este python file se encarga de comunicarse con la base de datos.
144
   // table.value("id", "{{id}}")
144
   // table.value("id", "{{id}}")
145
 </script>
145
 </script>
146
+<!-- /testing -->
146
 
147
 
147
 
148
 
148
 </html>
149
 </html>

+ 70
- 63
transcripcionmaker.py View File

7
 
7
 
8
 
8
 
9
     ###### headers
9
     ###### headers
10
+    # headers contiene los titulos de las columnas
10
     headers={}
11
     headers={}
11
     headers.update({"1":"Codigo"})
12
     headers.update({"1":"Codigo"})
12
     headers.update({"2":"Curso"})
13
     headers.update({"2":"Curso"})
13
     headers.update({"3":"Nota"})
14
     headers.update({"3":"Nota"})
14
     headers.update({"4":"Porciento"})
15
     headers.update({"4":"Porciento"})
15
 
16
 
16
-    ###### estudiante
17
 
17
 
18
+    ###### estudiante
19
+    # estudiante contiene la informacion del estudiante:
20
+    #     nombres, apellidos, email, fecha_nacimiento, direccion1, direccion2, ciudad
21
+    #       estudiante.update({"pais, zipcode, telefono1, telefono2
18
     query = 'SELECT nombres, apellidos, email, fecha_nacimiento, direccion1, direccion2, ciudad, pais, zipcode,\
22
     query = 'SELECT nombres, apellidos, email, fecha_nacimiento, direccion1, direccion2, ciudad, pais, zipcode,\
19
                 telefono1, telefono2\
23
                 telefono1, telefono2\
20
             FROM usuarios u, estudiantes m \
24
             FROM usuarios u, estudiantes m \
48
 
52
 
49
 
53
 
50
     ###### semestres
54
     ###### semestres
51
-
55
+    # semestres se encarga de agrupar las clases por semestre
52
 
56
 
53
     #funcion para obtener el promedio en un semestre dado
57
     #funcion para obtener el promedio en un semestre dado
54
     def get_promedio_del_semestre(id, semestre):
58
     def get_promedio_del_semestre(id, semestre):
78
     ctr3=1
82
     ctr3=1
79
     if len(clases)>0:
83
     if len(clases)>0:
80
         codigo_semestre = clases[0][1]
84
         codigo_semestre = clases[0][1]
85
+        # por cada clase en el resultado
81
         for clase in clases:
86
         for clase in clases:
82
-            #add clases al semestre
87
+            #se agrupan las clases si el codigo del semestre es el mismo
83
             if codigo_semestre == clase[1]:
88
             if codigo_semestre == clase[1]:
84
                 curso = {}
89
                 curso = {}
85
                 curso.update({"id":str(clase[0])})
90
                 curso.update({"id":str(clase[0])})
92
                 semestre.update({codigo_semestre+'//'+str(ctr):curso})
97
                 semestre.update({codigo_semestre+'//'+str(ctr):curso})
93
             #si el semestre es distinto,
98
             #si el semestre es distinto,
94
 
99
 
100
+            #si el codigo del semestre cambia, se inserte el semestre con el codigo viejo en semestres,
101
+            #       y se comienza un semestre nuevo con el nuevo codigo
95
             elif codigo_semestre != clase[1]:
102
             elif codigo_semestre != clase[1]:
96
                 # add semestre a semestres
103
                 # add semestre a semestres
97
                 promedio = {}
104
                 promedio = {}
118
             ctr += 1
125
             ctr += 1
119
             ctr2 += 1
126
             ctr2 += 1
120
 
127
 
128
+            # si estamo con la ultima clase, se inserte en el semestre actual, y el semestre en semestres
121
             if ctr2==len(clases):
129
             if ctr2==len(clases):
122
                 promedio = {}
130
                 promedio = {}
123
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
131
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
134
     result.update({"estudiante":estudiante})
142
     result.update({"estudiante":estudiante})
135
     result.update({"semestres":semestres})
143
     result.update({"semestres":semestres})
136
 
144
 
137
-    # print(result)
138
-
139
-    #####################################################################
140
-    #####################################################################
141
-    #####################################################################
142
-
143
-
144
-    # https://www.blog.pythonlibrary.org/2018/06/05/creating-pdfs-with-pyfpdf-and-python/
145
-    from fpdf import FPDF, HTMLMixin
146
-
147
-    class HTML2PDF(FPDF, HTMLMixin):
148
-        pass
149
-
150
-    html = '''<h1 align="center">PyFPDF HTML Demo</h1>
151
-    <p>This is regular text</p>
152
-    <p>You can also <b>bold</b>, <i>italicize</i> or <u>underline</u>
153
-    '''
154
-    pdf = HTML2PDF()
155
-    pdf.add_page()
156
-    pdf.write_html(html)
157
-    # pdf.output('html2pdf.pdf')
158
-
159
-    ##########
160
 
145
 
161
-    # pdf = FPDF()
146
+    # #####################################################################
147
+    # #####################################################################
148
+    # #####################################################################
149
+    #
150
+    #
151
+    # # https://www.blog.pythonlibrary.org/2018/06/05/creating-pdfs-with-pyfpdf-and-python/
152
+    # from fpdf import FPDF, HTMLMixin
153
+    #
154
+    # class HTML2PDF(FPDF, HTMLMixin):
155
+    #     pass
156
+    #
157
+    # html = '''<h1 align="center">PyFPDF HTML Demo</h1>
158
+    # <p>This is regular text</p>
159
+    # <p>You can also <b>bold</b>, <i>italicize</i> or <u>underline</u>
160
+    # '''
161
+    # pdf = HTML2PDF()
162
     # pdf.add_page()
162
     # pdf.add_page()
163
-    pdf.set_font("Arial", size=12)
164
-    pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
165
-    pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
166
-    pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
167
-    pdf.rect(20, 20, 100, 50)
168
-
169
-    ###########
170
-    spacing=1
171
-    data = [['First Name', 'Last Name', 'email', 'zip'],
172
-            ['Mike', 'Driscoll', 'mike@somewhere.com', '55555'],
173
-            ['John', 'Doe', 'jdoe@doe.com', '12345'],
174
-            ['Nina', 'Ma', 'inane@where.com', '54321']
175
-            ]
176
-
177
-    # pdf = FPDF()
178
-    pdf.set_font("Arial", size=12)
179
-    # pdf.add_page()
180
-
181
-    col_width = pdf.w / 4.5
182
-    row_height = pdf.font_size
183
-    for row in data:
184
-        for item in row:
185
-            pdf.cell(col_width, row_height*spacing,
186
-                     txt=item, border=1)
187
-        pdf.ln(row_height*spacing)
188
-
189
-
190
-    ###########
191
-
192
-    pdf.output("simple_demo.pdf")
193
-
194
-
195
-
196
-    #####################################################################
197
-    #####################################################################
198
-    #####################################################################
163
+    # pdf.write_html(html)
164
+    # # pdf.output('html2pdf.pdf')
165
+    #
166
+    # ##########
167
+    #
168
+    # # pdf = FPDF()
169
+    # # pdf.add_page()
170
+    # pdf.set_font("Arial", size=12)
171
+    # pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
172
+    # pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
173
+    # pdf.cell(200, 10, txt="Welcome to Python!", ln=1, align="C")
174
+    # pdf.rect(20, 20, 100, 50)
175
+    #
176
+    # ###########
177
+    # spacing=1
178
+    # data = [['First Name', 'Last Name', 'email', 'zip'],
179
+    #         ['Mike', 'Driscoll', 'mike@somewhere.com', '55555'],
180
+    #         ['John', 'Doe', 'jdoe@doe.com', '12345'],
181
+    #         ['Nina', 'Ma', 'inane@where.com', '54321']
182
+    #         ]
183
+    #
184
+    # # pdf = FPDF()
185
+    # pdf.set_font("Arial", size=12)
186
+    # # pdf.add_page()
187
+    #
188
+    # col_width = pdf.w / 4.5
189
+    # row_height = pdf.font_size
190
+    # for row in data:
191
+    #     for item in row:
192
+    #         pdf.cell(col_width, row_height*spacing,
193
+    #                  txt=item, border=1)
194
+    #     pdf.ln(row_height*spacing)
195
+    #
196
+    #
197
+    # ###########
198
+    #
199
+    # pdf.output("simple_demo.pdf")
200
+    #
201
+    #
202
+    #
203
+    # #####################################################################
204
+    # #####################################################################
205
+    # #####################################################################
199
 
206
 
200
     return jsonify(result)
207
     return jsonify(result)

+ 3
- 0
visitas_enfermeria.py View File

21
 			values_list.update({item:data[item]})
21
 			values_list.update({item:data[item]})
22
 	return values_list
22
 	return values_list
23
 
23
 
24
+# esta funcion se encarga de editar las entradas de visitas
24
 def edit(data):
25
 def edit(data):
25
 	visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine)
26
 	visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine)
26
 	values_list=prepara_values_visita(data)
27
 	values_list=prepara_values_visita(data)
30
 
31
 
31
 	return redirect(url_for("formas",perfil='enfermeria', accion="edit", tipo="visitas_enfermeria", id=data['id']))
32
 	return redirect(url_for("formas",perfil='enfermeria', accion="edit", tipo="visitas_enfermeria", id=data['id']))
32
 
33
 
34
+# esta funcion se encarga de crear nuevas entradas a las visitas
33
 def add(data):
35
 def add(data):
34
 	visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine)
36
 	visitas_enfermeria = db.Table('visitas_enfermeria', metadata, autoload=True, autoload_with=engine)
35
 	values_list=prepara_values_visita(data)
37
 	values_list=prepara_values_visita(data)
38
 	return redirect(url_for("formas",perfil='enfermeria', accion="edit", tipo="visitas_enfermeria", id=data['id']))
40
 	return redirect(url_for("formas",perfil='enfermeria', accion="edit", tipo="visitas_enfermeria", id=data['id']))
39
 
41
 
40
 
42
 
43
+# cuando se desea add datos de la base de datos, esta funcion
41
 def add_form():
44
 def add_form():
42
 	i=1
45
 	i=1
43
 	orden=1
46
 	orden=1

+ 4
- 0
visitas_oficina.py View File

18
 		values_list.update({item:data[item]})
18
 		values_list.update({item:data[item]})
19
 	return values_list
19
 	return values_list
20
 
20
 
21
+# esta funcion se encarga de editar las entradas de visitas
21
 def edit(data):
22
 def edit(data):
22
 	visitas_oficina = db.Table('visitas_oficina', metadata, autoload=True, autoload_with=engine)
23
 	visitas_oficina = db.Table('visitas_oficina', metadata, autoload=True, autoload_with=engine)
23
 	values_list=prepara_values_visita(data)
24
 	values_list=prepara_values_visita(data)
27
 
28
 
28
 	return redirect(url_for("formas",perfil='admin', accion="edit", tipo="visitas_oficina", id=data['id']))
29
 	return redirect(url_for("formas",perfil='admin', accion="edit", tipo="visitas_oficina", id=data['id']))
29
 
30
 
31
+# esta funcion se encarga de crear nuevas entradas a las visitas
30
 def add(data):
32
 def add(data):
31
 	visitas_oficina = db.Table('visitas_oficina', metadata, autoload=True, autoload_with=engine)
33
 	visitas_oficina = db.Table('visitas_oficina', metadata, autoload=True, autoload_with=engine)
32
 	values_list=prepara_values_visita(data)
34
 	values_list=prepara_values_visita(data)
35
 	return redirect(url_for("formas",perfil='admin', accion="edit", tipo="visitas_oficina", id=data['id']))
37
 	return redirect(url_for("formas",perfil='admin', accion="edit", tipo="visitas_oficina", id=data['id']))
36
 
38
 
37
 
39
 
40
+# cuando se desea add datos de la base de datos, esta funcion
38
 def add_form():
41
 def add_form():
39
 	i=1
42
 	i=1
40
 	orden=1
43
 	orden=1
52
 	data.update({"abled":True})
55
 	data.update({"abled":True})
53
 	return jsonify(data)
56
 	return jsonify(data)
54
 
57
 
58
+# cuando se desea editar datos de la base de datos, esta funcion llena los campos con los valores actulaes.
55
 def edit_form(id, disabled=False):
59
 def edit_form(id, disabled=False):
56
 	visitas_oficina = db.Table('visitas_oficina', metadata, autoload=True, autoload_with=engine)
60
 	visitas_oficina = db.Table('visitas_oficina', metadata, autoload=True, autoload_with=engine)
57
 	query = db.select([visitas_oficina.columns.razon, visitas_oficina.columns.acciones, visitas_oficina.columns.fecha])
61
 	query = db.select([visitas_oficina.columns.razon, visitas_oficina.columns.acciones, visitas_oficina.columns.fecha])