Browse Source

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)
Oniel Méndez Nieves 4 years ago
parent
commit
1fa76b3d12

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


+ 8
- 0
static/adminver.js View File

10
   console.log(',datos,admin,'+pagina);
10
   console.log(',datos,admin,'+pagina);
11
 
11
 
12
   $http.get(url).then(function(response) {
12
   $http.get(url).then(function(response) {
13
+    if(response.data.error!==true)
14
+    {
13
     // headers contiene los titulos de las columnas
15
     // headers contiene los titulos de las columnas
14
     $scope.headers = response.data.headers;
16
     $scope.headers = response.data.headers;
15
 
17
 
31
     $scope.modal_content = response.data.modal_content;
33
     $scope.modal_content = response.data.modal_content;
32
 
34
 
33
     console.log(response.data);
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 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, id){
7
 table.controller('tableController', function tableController($http, $scope, id){
5
 
8
 
6
-
7
   var url = '/admin/formaDatos/crear/transcripcion/'+ id +'/'
9
   var url = '/admin/formaDatos/crear/transcripcion/'+ id +'/'
8
   console.log(',datos,admin,transcripcion');
10
   console.log(',datos,admin,transcripcion');
9
 
11
 
10
   $http.get(url).then(function(response) {
12
   $http.get(url).then(function(response) {
11
     if(response.data.error!==true)
13
     if(response.data.error!==true)
12
     {
14
     {
13
-      // document.write('if');
15
+      // headers contiene el nombre de las columnas.
14
       $scope.headers = response.data.headers;
16
       $scope.headers = response.data.headers;
17
+
18
+      // estudiante contiene informacion del estudiante.
15
       $scope.estudiante = response.data.estudiante;
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
       $scope.semestres = response.data.semestres;
23
       $scope.semestres = response.data.semestres;
24
+
17
       console.log(response.data);
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
     else
28
     else
24
     {
29
     {
25
-      // document.write('else');
26
       $window.location.href = '/'+user_type+'/error/'+response.data.tipo;
30
       $window.location.href = '/'+user_type+'/error/'+response.data.tipo;
27
       console.log(response.data);
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 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='transcripcion.js') }}"></script>
15
     <script type="text/javascript" src="{{ url_for('static', filename='transcripcion.js') }}"></script>
23
     <script>
16
     <script>
24
     // la variable 'pagina' la usa el javascript para que el run.py sepa cual python file abrir.
17
     // la variable 'pagina' la usa el javascript para que el run.py sepa cual python file abrir.
27
     </script>
20
     </script>
28
 
21
 
29
   </head>
22
   </head>
30
-  <!-- termina los includes -->
31
-
32
 
23
 
33
   <body ng-app="table" ng-controller="tableController">
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
     <div class="container-fluid" >
26
     <div class="container-fluid" >
41
       <div class="row" >
27
       <div class="row" >
42
-        <!-- <h1 class='text-center'>
43
-          Transcripción del estudiante {% raw %}{{estudiante.nombres}} {{estudiante.apellidos}}{% endraw %}
44
-        </h1> -->
45
       </div>
28
       </div>
46
       <br>
29
       <br>
47
       <br>
30
       <br>
87
             <table id='tabla' align='center'>
70
             <table id='tabla' align='center'>
88
               <tr>
71
               <tr>
89
                 {% raw %}
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
                 {% endraw %}
74
                 {% endraw %}
92
               </tr>
75
               </tr>
93
               <tr>
76
               <tr>
95
                 <th ng-repeat="header in headers" class="header2">{{header}}</th>
78
                 <th ng-repeat="header in headers" class="header2">{{header}}</th>
96
                 {% endraw %}
79
                 {% endraw %}
97
               </tr>
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
                 {% raw %}
82
                 {% raw %}
100
                 <!-- la proxima linea asume que las entradas en la tabla tienen un id unico con -->
83
                 <!-- la proxima linea asume que las entradas en la tabla tienen un id unico con -->
101
                 <!-- el mismo nombre de identificador a traves de los javascript, json, etc. -->
84
                 <!-- el mismo nombre de identificador a traves de los javascript, json, etc. -->
122
             <br>
105
             <br>
123
             <div align'center' align='center'>
106
             <div align'center' align='center'>
124
               {% raw %}
107
               {% raw %}
125
-              Promedio este semestre: {{semestre.promedio.acumulado}}
108
+              Promedio este semestre: {{semestre.info.promedio_acumulado}}
126
               <br>
109
               <br>
127
-              Promedio Acumulado: {{semestre.promedio.total}}
110
+              Promedio Acumulado: {{semestre.info.promedio_total}}
128
               {% endraw %}
111
               {% endraw %}
129
               <br>
112
               <br>
130
               <hr>
113
               <hr>

+ 46
- 35
transcripcionmaker.py View File

1
+from flask import jsonify
1
 from connect import connection
2
 from connect import connection
2
-import sqlalchemy as db
3
 
3
 
4
 def crear_transcripcion(id):
4
 def crear_transcripcion(id):
5
 
5
 
6
-    from flask import jsonify
7
-
8
-
9
     ###### headers
6
     ###### headers
10
     # headers contiene los titulos de las columnas
7
     # headers contiene los titulos de las columnas
11
     headers={}
8
     headers={}
23
                 telefono1, telefono2\
20
                 telefono1, telefono2\
24
             FROM usuarios u, estudiantes m \
21
             FROM usuarios u, estudiantes m \
25
             WHERE u.id = '+id+ ' AND u.id = m.user_id'
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
     estudiante={}
25
     estudiante={}
31
     estudiante.update({"nombres":str(q[0])})
26
     estudiante.update({"nombres":str(q[0])})
40
     estudiante.update({"telefono1":str(q[9])})
35
     estudiante.update({"telefono1":str(q[9])})
41
     estudiante.update({"telefono2":str(q[10])})
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
     ###### semestres
39
     ###### semestres
55
     # semestres se encarga de agrupar las clases por semestre
40
     # semestres se encarga de agrupar las clases por semestre
56
 
41
 
57
     #funcion para obtener el promedio en un semestre dado
42
     #funcion para obtener el promedio en un semestre dado
58
     def get_promedio_del_semestre(id, semestre):
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
         result = connection.execute(query).fetchall()
52
         result = connection.execute(query).fetchall()
65
         return str((result[0][0]))
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
     query = 'SELECT o.id, o.semestre, c.codigo, c.titulo, \
74
     query = 'SELECT o.id, o.semestre, c.codigo, c.titulo, \
68
             		sum(e.valor) as total, sum(n.valor) as puntos, \
75
             		sum(e.valor) as total, sum(n.valor) as puntos, \
69
                     sum(n.valor)/sum(e.valor) as promedio\
76
                     sum(n.valor)/sum(e.valor) as promedio\
70
             FROM matricula m, oferta o, cursos c, evaluaciones e, notas n\
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
             GROUP BY o.id ORDER BY o.semestre'
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
     promedio_acumulado = 0
86
     promedio_acumulado = 0
78
     semestres={}
87
     semestres={}
79
     semestre={}
88
     semestre={}
101
             #       y se comienza un semestre nuevo con el nuevo codigo
110
             #       y se comienza un semestre nuevo con el nuevo codigo
102
             elif codigo_semestre != clase[1]:
111
             elif codigo_semestre != clase[1]:
103
                 # add semestre a semestres
112
                 # add semestre a semestres
104
-                promedio = {}
113
+                info = {}
105
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
114
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
106
                 promedio_acumulado += float(promedio_semestre)
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
                 semestres.update({"semestre "+codigo_semestre:semestre})
120
                 semestres.update({"semestre "+codigo_semestre:semestre})
111
                 # y vaciar semestre
121
                 # y vaciar semestre
112
                 semestre={}
122
                 semestre={}
127
 
137
 
128
             # si estamo con la ultima clase, se inserte en el semestre actual, y el semestre en semestres
138
             # si estamo con la ultima clase, se inserte en el semestre actual, y el semestre en semestres
129
             if ctr2==len(clases):
139
             if ctr2==len(clases):
130
-                promedio = {}
140
+                info = {}
131
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
141
                 promedio_semestre = get_promedio_del_semestre(id, curso.get('Semestre'))
132
                 promedio_acumulado += float(promedio_semestre)
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
                 semestres.update({"semestre "+clase[1]:semestre})
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
     result = {}
151
     result = {}