소스 검색

cambios a visitas, transcripciones

visitas:
   -al añadir visitas (tanto visitas en las oficinas como enfermeria) ahora te permite seleccionar las dos personas involucradas

transcipciones:
   -mejoras a la pagina de transcripcion (mayormente los queries)
부모
커밋
1fa76b3d12
5개의 변경된 파일69개의 추가작업 그리고 66개의 파일을 삭제
  1. BIN
      __pycache__/transcripcionmaker.cpython-36.pyc
  2. 8
    0
      static/adminver.js
  3. 11
    10
      static/transcripcion.js
  4. 4
    21
      templates/transcripcion.html
  5. 46
    35
      transcripcionmaker.py

BIN
__pycache__/transcripcionmaker.cpython-36.pyc 파일 보기


+ 8
- 0
static/adminver.js 파일 보기

@@ -10,6 +10,8 @@ table.controller('tableController', function tableController($http, $scope, pagi
10 10
   console.log(',datos,admin,'+pagina);
11 11
 
12 12
   $http.get(url).then(function(response) {
13
+    if(response.data.error!==true)
14
+    {
13 15
     // headers contiene los titulos de las columnas
14 16
     $scope.headers = response.data.headers;
15 17
 
@@ -31,5 +33,11 @@ table.controller('tableController', function tableController($http, $scope, pagi
31 33
     $scope.modal_content = response.data.modal_content;
32 34
 
33 35
     console.log(response.data);
36
+  }
37
+  else
38
+  {
39
+    $window.location.href = '/'+user_type+'/error/'+response.data.tipo;
40
+    console.log(response.data);
41
+  }
34 42
   });
35 43
 });

+ 11
- 10
static/transcripcion.js 파일 보기

@@ -1,33 +1,34 @@
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 5
 var table = angular.module('table',['ngSanitize']);
2
-// var table = angular.module('table',[]);
3 6
 
4 7
 table.controller('tableController', function tableController($http, $scope, id){
5 8
 
6
-
7 9
   var url = '/admin/formaDatos/crear/transcripcion/'+ id +'/'
8 10
   console.log(',datos,admin,transcripcion');
9 11
 
10 12
   $http.get(url).then(function(response) {
11 13
     if(response.data.error!==true)
12 14
     {
13
-      // document.write('if');
15
+      // headers contiene el nombre de las columnas.
14 16
       $scope.headers = response.data.headers;
17
+
18
+      // estudiante contiene informacion del estudiante.
15 19
       $scope.estudiante = response.data.estudiante;
20
+
21
+      // semestres contiene la informacion de cada semestre.
22
+      //      cada semestre tiene sus cursos, e info de cada uno.
16 23
       $scope.semestres = response.data.semestres;
24
+
17 25
       console.log(response.data);
18 26
 
19
-      // document.write(response.data.headers);
20
-      // document.write(response.data.estudiante);
21
-      // document.write(response.data.semestres);
22 27
     }
23 28
     else
24 29
     {
25
-      // document.write('else');
26 30
       $window.location.href = '/'+user_type+'/error/'+response.data.tipo;
27 31
       console.log(response.data);
28 32
     }
29 33
   });
30
-  $scope.myFilter = function (item) {
31
-      return item === 'promedio_acumulado' || item === 'promedio_total';
32
-  }
33 34
 });

+ 4
- 21
templates/transcripcion.html 파일 보기

@@ -1,24 +1,17 @@
1 1
 <html>
2 2
 
3
-  <!-- empieza los includes -->
4 3
   <head>
5 4
     <title>Draft</title>
6 5
     <meta name="viewport" content="width=device-width, initial-scale=1">
7 6
     <meta charset="UTF-8">
8 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 8
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
11 9
     <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
12 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 11
     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
15 12
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular.min.js"></script>
16 13
     <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.9/angular-sanitize.js"></script>
17
-
18
-    <!-- el .css -->
19 14
     <link rel="stylesheet" href="{{ url_for('static', filename='estilo.css') }}" />
20
-
21
-    <!-- los .js que quiero usar -->
22 15
     <script type="text/javascript" src="{{ url_for('static', filename='transcripcion.js') }}"></script>
23 16
     <script>
24 17
     // la variable 'pagina' la usa el javascript para que el run.py sepa cual python file abrir.
@@ -27,21 +20,11 @@
27 20
     </script>
28 21
 
29 22
   </head>
30
-  <!-- termina los includes -->
31
-
32 23
 
33 24
   <body ng-app="table" ng-controller="tableController">
34
-    <!-- <nav class="navbar navbar-dark bg-dark navbar-expand">
35
-      {% raw %}
36
-      <a class="navbar-brand" href="{{info.dash_link}}">Transcripción: {{estudiante.nombres}} {{estudiante.apellidos}}</a>
37
-      {% endraw %}
38
-    </nav> -->
39 25
 
40 26
     <div class="container-fluid" >
41 27
       <div class="row" >
42
-        <!-- <h1 class='text-center'>
43
-          Transcripción del estudiante {% raw %}{{estudiante.nombres}} {{estudiante.apellidos}}{% endraw %}
44
-        </h1> -->
45 28
       </div>
46 29
       <br>
47 30
       <br>
@@ -87,7 +70,7 @@
87 70
             <table id='tabla' align='center'>
88 71
               <tr>
89 72
                 {% raw %}
90
-                <th colspan="4" class="header2 text-center">{{key}}</th>
73
+                <th colspan="4" class="header2 text-center">{{semestre.info.nombre}}</th>
91 74
                 {% endraw %}
92 75
               </tr>
93 76
               <tr>
@@ -95,7 +78,7 @@
95 78
                 <th ng-repeat="header in headers" class="header2">{{header}}</th>
96 79
                 {% endraw %}
97 80
               </tr>
98
-              <tr ng-repeat="(key, clase) in semestre" ng-if='key != "promedio"'>
81
+              <tr ng-repeat="(key, clase) in semestre" ng-if='key != "info"'>
99 82
                 {% raw %}
100 83
                 <!-- la proxima linea asume que las entradas en la tabla tienen un id unico con -->
101 84
                 <!-- el mismo nombre de identificador a traves de los javascript, json, etc. -->
@@ -122,9 +105,9 @@
122 105
             <br>
123 106
             <div align'center' align='center'>
124 107
               {% raw %}
125
-              Promedio este semestre: {{semestre.promedio.acumulado}}
108
+              Promedio este semestre: {{semestre.info.promedio_acumulado}}
126 109
               <br>
127
-              Promedio Acumulado: {{semestre.promedio.total}}
110
+              Promedio Acumulado: {{semestre.info.promedio_total}}
128 111
               {% endraw %}
129 112
               <br>
130 113
               <hr>

+ 46
- 35
transcripcionmaker.py 파일 보기

@@ -1,11 +1,8 @@
1
+from flask import jsonify
1 2
 from connect import connection
2
-import sqlalchemy as db
3 3
 
4 4
 def crear_transcripcion(id):
5 5
 
6
-    from flask import jsonify
7
-
8
-
9 6
     ###### headers
10 7
     # headers contiene los titulos de las columnas
11 8
     headers={}
@@ -23,9 +20,7 @@ def crear_transcripcion(id):
23 20
                 telefono1, telefono2\
24 21
             FROM usuarios u, estudiantes m \
25 22
             WHERE u.id = '+id+ ' AND u.id = m.user_id'
26
-    result_db = connection.execute(query).fetchall()
27
-
28
-    q = result_db[0]
23
+    q = connection.execute(query).fetchall()[0]
29 24
 
30 25
     estudiante={}
31 26
     estudiante.update({"nombres":str(q[0])})
@@ -40,40 +35,54 @@ def crear_transcripcion(id):
40 35
     estudiante.update({"telefono1":str(q[9])})
41 36
     estudiante.update({"telefono2":str(q[10])})
42 37
 
43
-    query = 'SELECT sum(e.valor) as total, sum(n.valor) as puntos, \
44
-            		sum(n.valor)/sum(e.valor) as promedio\
45
-            FROM matricula m, oferta o, cursos c, evaluaciones e, notas n\
46
-            WHERE  m.oferta_id = o.curso_id AND o.curso_id = c.id \
47
-            	AND c.id = e.oferta_id AND e.id = n.evaluacion_id AND n.estudiante_id = ' + id
48
-    result_db = connection.execute(query).fetchall()
49
-
50
-    q = result_db[0]
51
-
52
-
53 38
 
54 39
     ###### semestres
55 40
     # semestres se encarga de agrupar las clases por semestre
56 41
 
57 42
     #funcion para obtener el promedio en un semestre dado
58 43
     def get_promedio_del_semestre(id, semestre):
59
-        query = 'SELECT sum(n.valor)/sum(e.valor) as promedio\
60
-            FROM matricula m, oferta o, cursos c, evaluaciones e, notas n\
61
-            WHERE  m.oferta_id = o.curso_id AND o.curso_id = c.id \
62
-            		AND c.id = e.oferta_id AND e.id = n.evaluacion_id AND n.estudiante_id ='+ id + '\
63
-                    AND o.semestre = "' + str(semestre) + '"'
44
+        query = 'SELECT sum(n.valor)/sum(e.valor) as promedio \
45
+                FROM matricula m, oferta o, cursos c, evaluaciones e, notas n \
46
+                WHERE c.id = o.curso_id AND  \
47
+                    o.id = m.oferta_id AND  \
48
+                    n.evaluacion_id = e.id AND  \
49
+                    e.oferta_id = o.id AND  \
50
+                    m.estudiante_id = ' + id + '  \
51
+                    AND o.semestre = "' + semestre +'"'
64 52
         result = connection.execute(query).fetchall()
65 53
         return str((result[0][0]))
66 54
 
55
+
56
+    def get_semestre(semestre):
57
+        semestre = semestre.split('a')[1]
58
+        semestre = semestre.split('s')
59
+
60
+        year = semestre[0]
61
+        semestre = semestre[1]
62
+
63
+        if semestre == '1':
64
+            semestre = 'Otoño'
65
+        elif semestre == '2':
66
+            semestre = 'Primavera'
67
+        else:
68
+            semestre = 'Verano'
69
+
70
+        nombre = semestre + ' ' + year
71
+        return nombre
72
+
73
+
67 74
     query = 'SELECT o.id, o.semestre, c.codigo, c.titulo, \
68 75
             		sum(e.valor) as total, sum(n.valor) as puntos, \
69 76
                     sum(n.valor)/sum(e.valor) as promedio\
70 77
             FROM matricula m, oferta o, cursos c, evaluaciones e, notas n\
71
-            WHERE  m.oferta_id = o.curso_id AND o.curso_id = c.id \
72
-            		AND c.id = e.oferta_id AND e.id = n.evaluacion_id AND n.estudiante_id = ' + id +'\
78
+            WHERE c.id = o.curso_id AND \
79
+                o.id = m.oferta_id AND \
80
+                n.evaluacion_id = e.id AND \
81
+                e.oferta_id = o.id AND \
82
+                m.estudiante_id =' + id +'\
73 83
             GROUP BY o.id ORDER BY o.semestre'
74
-    result_db = connection.execute(query).fetchall()
84
+    clases = connection.execute(query).fetchall()
75 85
 
76
-    clases = result_db
77 86
     promedio_acumulado = 0
78 87
     semestres={}
79 88
     semestre={}
@@ -101,12 +110,13 @@ def crear_transcripcion(id):
101 110
             #       y se comienza un semestre nuevo con el nuevo codigo
102 111
             elif codigo_semestre != clase[1]:
103 112
                 # add semestre a semestres
104
-                promedio = {}
113
+                info = {}
105 114
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
106 115
                 promedio_acumulado += float(promedio_semestre)
107
-                promedio.update({"acumulado":promedio_semestre[:-2]})
108
-                promedio.update({"total":str(promedio_acumulado/ctr3)[:-2]})
109
-                semestre.update({"promedio":promedio})
116
+                info.update({"promedio_acumulado":promedio_semestre[:4]})
117
+                info.update({"promedio_total":str(promedio_acumulado/ctr3)[:4]})
118
+                info.update({"nombre":get_semestre(codigo_semestre)})
119
+                semestre.update({"info":info})
110 120
                 semestres.update({"semestre "+codigo_semestre:semestre})
111 121
                 # y vaciar semestre
112 122
                 semestre={}
@@ -127,14 +137,15 @@ def crear_transcripcion(id):
127 137
 
128 138
             # si estamo con la ultima clase, se inserte en el semestre actual, y el semestre en semestres
129 139
             if ctr2==len(clases):
130
-                promedio = {}
140
+                info = {}
131 141
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
132 142
                 promedio_acumulado += float(promedio_semestre)
133
-                promedio.update({"acumulado":promedio_semestre[:-2]})
134
-                promedio.update({"total":str(promedio_acumulado/ctr3)[:-2]})
135
-                semestre.update({"promedio":promedio})
143
+                info.update({"promedio_acumulado":promedio_semestre[:4]})
144
+                info.update({"promedio_total":str(promedio_acumulado/ctr3)[:4]})
145
+                info.update({"nombre":get_semestre(str(clase[1]))})
146
+                semestre.update({"info":info})
136 147
                 semestres.update({"semestre "+clase[1]:semestre})
137
-    estudiante.update({"promedio":str(promedio_acumulado/ctr3)[:-2]+'%'})
148
+    estudiante.update({"promedio":str(promedio_acumulado/ctr3)[:4]+'%'})
138 149
 
139 150
 
140 151
     result = {}