Skip to content
Snippets Groups Projects
Commit 26cafa47 authored by Álvaro Berruezo's avatar Álvaro Berruezo
Browse files

Muchos cambios, los comento en el pull request

parent af3d13ac
No related branches found
No related tags found
1 merge request!31Muchos cambios, los comento en el pull request
...@@ -52,16 +52,17 @@ def incidencia(idIncidencia): ...@@ -52,16 +52,17 @@ def incidencia(idIncidencia):
elif request.form['action']=="Solucion": elif request.form['action']=="Solucion":
cambio_estado_incidencia(idIncidencia,5, current_user.nick) cambio_estado_incidencia(idIncidencia,5, current_user.nick)
elif request.form['action']=="add_comentario": elif request.form['action']=="add_comentario":
return render_template('add_comentario.html', incidencia=incidencia) return redirect(url_for('add_comentario', idIncidencia=idIncidencia))
elif request.form['action']=="add_tiempoSol": elif request.form['action']=="add_tiempoSol":
return render_template('add_time.html', incidencia=incidencia) return redirect(url_for('add_tiempo', idIncidencia=idIncidencia))
listaTecnicos = get_tecnicos()
cambioApertura = get_cambio_by_estado(idIncidencia, 0) cambioApertura = get_cambio_by_estado(idIncidencia, 0)
cambioAsignada = get_cambio_by_estado(idIncidencia, 1) cambioAsignada = get_cambio_by_estado(idIncidencia, 1)
cambioCierre = get_cambio_by_estado(idIncidencia, 3) cambioCierre = get_cambio_by_estado(idIncidencia, 3)
return render_template('info_incidencia.html', incidencia=incidencia, listaTecnicos=listaTecnicos, cambioApertura=cambioApertura, cambioAsignada=cambioAsignada, cambioCierre=cambioCierre) estado = get_estado(incidencia.estado)
categoria = get_categoria(incidencia.categoria)
return render_template('info_incidencia.html', incidencia=incidencia, estado=estado, categoria=categoria, cambioApertura=cambioApertura, cambioAsignada=cambioAsignada, cambioCierre=cambioCierre)
@app.route('/index') @app.route('/index')
@login_required @login_required
...@@ -113,10 +114,10 @@ def registrar_incidencia(): ...@@ -113,10 +114,10 @@ def registrar_incidencia():
categoria = request.form.get('categoria') categoria = request.form.get('categoria')
insert_incidencia(titulo, descripcion, fecha, estado, reportadaPor, categoria, comentario, prioridad, tiempoEstimado, tecnicoAsignado) insert_incidencia(titulo, descripcion, fecha, estado, reportadaPor, categoria, comentario, prioridad, tiempoEstimado, tecnicoAsignado)
return redirect(url_for('index')) return redirect(url_for('index'))
return render_template('registrar_incidencia.html') categorias = get_categorias()
return render_template('registrar_incidencia.html', categorias=categorias)
@app.route('/completar_incidencia/<idIncidencia>', methods=['GET', 'POST']) @app.route('/completar_incidencia/<idIncidencia>', methods=['GET', 'POST'])
@login_required @login_required
...@@ -140,26 +141,24 @@ def add_comentario(idIncidencia): ...@@ -140,26 +141,24 @@ def add_comentario(idIncidencia):
if request.form['action']=="add_com": if request.form['action']=="add_com":
comentario = request.form.get('comentario') comentario = request.form.get('comentario')
comentar_incidencia(idIncidencia, comentario) comentar_incidencia(idIncidencia, comentario)
return redirect(url_for('incidencia', idIncidencia=idIncidencia))
elif request.form['action']=="cancelar":
return redirect(url_for('incidencia', idIncidencia=idIncidencia)) return redirect(url_for('incidencia', idIncidencia=idIncidencia))
return render_template('info_incidencia.html') incidencia = get_incidencia(idIncidencia)
return render_template('add_comentario.html', incidencia=incidencia)
@app.route('/add_time/<idIncidencia>', methods=['GET', 'POST']) @app.route('/add_tiempo/<idIncidencia>', methods=['GET', 'POST'])
@login_required @login_required
def add_time(idIncidencia): def add_tiempo(idIncidencia):
if request.method == 'POST': if request.method == 'POST':
if request.form['action']=="add_time": if request.form['action']=="add_tiempo":
tiempo = request.form.get('tiempo') tiempo = request.form.get('tiempo')
addTiempo_incidencia(idIncidencia, tiempo) addTiempo_incidencia(idIncidencia, tiempo)
return redirect(url_for('incidencia', idIncidencia=idIncidencia))
elif request.form['action']=="cancelar":
return redirect(url_for('incidencia', idIncidencia=idIncidencia)) return redirect(url_for('incidencia', idIncidencia=idIncidencia))
return render_template('info_incidencia.html') incidencia = get_incidencia(idIncidencia)
return render_template('add_tiempo.html', incidencia=incidencia)
################################################### ###################################################
...@@ -208,9 +207,13 @@ class Cambio(db.Model): ...@@ -208,9 +207,13 @@ class Cambio(db.Model):
tecnico = db.Column(db.String(50)) tecnico = db.Column(db.String(50))
incidencia = db.Column(db.Integer) incidencia = db.Column(db.Integer)
class ElementoIncidencia(db.Model): class Estado(db.Model):
incidencia = db.Column(db.Integer, primary_key=True) id = db.Column(db.Integer, primary_key=True)
elemento = db.Column(db.Integer, primary_key=True) estado = db.Column(db.String(30))
class CategoriaIncidencia(db.Model):
id = db.Column(db.Integer, primary_key=True)
categoria = db.Column(db.String(40))
####################### #######################
...@@ -296,12 +299,19 @@ def insert_cambio(estado, tecnico, incidencia): ...@@ -296,12 +299,19 @@ def insert_cambio(estado, tecnico, incidencia):
def get_cambio_by_estado(id, estado): def get_cambio_by_estado(id, estado):
return next(iter(list(Cambio.query.filter_by(incidencia=id, estado=estado))), None) return next(iter(list(Cambio.query.filter_by(incidencia=id, estado=estado))), None)
####################### #######################
# INVENTARIO # # ESTADO #
####################### #######################
def insert_elemento_incidencia(incidencia, elemento): def get_estado(id):
db.session.add(ElementoIncidencia(incidencia=incidencia, elemento=elemento)) return Estado.query.get(id).estado
db.session.commit()
#######################
# CATEGORÍA #
#######################
def get_categorias():
return list(CategoriaIncidencia.query.all())
def get_elementos_incidencia(incidencia): def get_categoria(id):
return list(ElementoIncidencia.query.filter_by(incidencia=incidencia)) return CategoriaIncidencia.query.get(id).categoria
USE PGPI_grupo02; USE PGPI_grupo02;
DROP TABLE IF EXISTS estado; DROP TABLE IF EXISTS estado;
DROP TABLE IF EXISTS tipoUsuario; DROP TABLE IF EXISTS tipo_usuario;
DROP TABLE IF EXISTS elementoInventario; DROP TABLE IF EXISTS categoria_incidencia;
DROP TABLE IF EXISTS elemento_inventario;
DROP TABLE IF EXISTS usuario; DROP TABLE IF EXISTS usuario;
DROP TABLE IF EXISTS incidencia; DROP TABLE IF EXISTS incidencia;
DROP TABLE IF EXISTS elementoIncidencia; DROP TABLE IF EXISTS elemento_incidencia;
DROP TABLE IF EXISTS cambio; DROP TABLE IF EXISTS cambio;
DROP TABLE IF EXISTS categoriaIncidencia;
/* Valores para estado de la incidencia:
[0, abierta]
[1, asignada a un tecnico]
[2, pendiente de cerrar]
[3, cerrada con solucion]
[4, cerrada sin solucion]
*/
CREATE TABLE estado( CREATE TABLE estado(
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
estado VARCHAR (30) estado VARCHAR (30)
...@@ -28,23 +21,17 @@ CREATE TABLE estado( ...@@ -28,23 +21,17 @@ CREATE TABLE estado(
[1, tecnico] [1, tecnico]
[2, cliente] [2, cliente]
*/ */
CREATE TABLE tipoUsuario( CREATE TABLE tipo_usuario(
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
tipoUsuario VARCHAR(20) tipo_usuario VARCHAR(20)
); );
/* Valores para categoria de incidencia: CREATE TABLE categoria_incidencia(
[0, hardware]
[1, problemas con las comunicaciones]
[2, software basico]
[3, software de aplicaciones]
*/
CREATE TABLE categoriaIncidencia(
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
categoria VARCHAR(40) categoria VARCHAR(40)
); );
CREATE TABLE elementoInventario( CREATE TABLE elemento_inventario(
id INTEGER PRIMARY KEY, id INTEGER PRIMARY KEY,
nombre VARCHAR(200), nombre VARCHAR(200),
fechaAdquisicion INTEGER fechaAdquisicion INTEGER
...@@ -58,7 +45,7 @@ CREATE TABLE usuario( ...@@ -58,7 +45,7 @@ CREATE TABLE usuario(
apellidos VARCHAR(100), apellidos VARCHAR(100),
biografia VARCHAR(200), biografia VARCHAR(200),
fotoPerfil VARCHAR(200), fotoPerfil VARCHAR(200),
tipo INTEGER REFERENCES tipoUsuario(id) tipo INTEGER REFERENCES tipo_usuario(id)
); );
CREATE TABLE incidencia( CREATE TABLE incidencia(
...@@ -72,12 +59,12 @@ CREATE TABLE incidencia( ...@@ -72,12 +59,12 @@ CREATE TABLE incidencia(
estado INTEGER REFERENCES estado(id), estado INTEGER REFERENCES estado(id),
tecnicoAsignado VARCHAR(50) REFERENCES usuario(nick), tecnicoAsignado VARCHAR(50) REFERENCES usuario(nick),
reportadaPor VARCHAR(50) REFERENCES usuario(nick), reportadaPor VARCHAR(50) REFERENCES usuario(nick),
categoria INTEGER REFERENCES categoriaIncidencia(id) categoria INTEGER REFERENCES categoria_incidencia(id)
); );
CREATE TABLE elementoIncidencia( CREATE TABLE elemento_incidencia(
incidencia INTEGER REFERENCES incidencia(id), incidencia INTEGER REFERENCES incidencia(id),
elemento INTEGER REFERENCES elementoInventario(id) elemento INTEGER REFERENCES elemento_inventario(id)
); );
CREATE TABLE cambio( CREATE TABLE cambio(
...@@ -88,21 +75,26 @@ CREATE TABLE cambio( ...@@ -88,21 +75,26 @@ CREATE TABLE cambio(
); );
/* Poblando la tabla: estado */ /* Poblando la tabla: estado */
INSERT INTO estado (id, estado) VALUES (0, 'abierta'); INSERT INTO estado (id, estado) VALUES (0, 'Abierta');
INSERT INTO estado (id, estado) VALUES (1, 'asignada a un tecnico'); INSERT INTO estado (id, estado) VALUES (1, 'Asignada a un técnico');
INSERT INTO estado (id, estado) VALUES (2, 'pendiente de cerrar cliente'); INSERT INTO estado (id, estado) VALUES (2, 'Solicitado cierre por el cliente');
INSERT INTO estado (id, estado) VALUES (3, 'pendiente de cerrar tecnico'); INSERT INTO estado (id, estado) VALUES (3, 'Solicitado cierre por el técnico');
INSERT INTO estado (id, estado) VALUES (4, 'cerrada sin solucion'); INSERT INTO estado (id, estado) VALUES (4, 'Cerrada sin solucion');
INSERT INTO estado (id, estado) VALUES (5, 'cerrada con solusion'); INSERT INTO estado (id, estado) VALUES (5, 'Cerrada con solusion');
/* Poblando la tabla: tipoUsuario */ /* Poblando la tabla: tipo_usuario */
INSERT INTO tipoUsuario (id, tipoUsuario) VALUES (0, 'supervisor'); INSERT INTO tipo_usuario (id, tipo_usuario) VALUES (0, 'supervisor');
INSERT INTO tipoUsuario (id, tipoUsuario) VALUES (1, 'tecnnico'); INSERT INTO tipo_usuario (id, tipo_usuario) VALUES (1, 'tecnnico');
INSERT INTO tipoUsuario (id, tipoUsuario) VALUES (2, 'cliente'); INSERT INTO tipo_usuario (id, tipo_usuario) VALUES (2, 'cliente');
/* Poblando la tabla: categoria_incidencia */
INSERT INTO categoria_incidencia (id, categoria) VALUES (0, 'Hardware');
INSERT INTO categoria_incidencia (id, categoria) VALUES (1, 'Problemas con las comunicaciones');
INSERT INTO categoria_incidencia (id, categoria) VALUES (2, 'Software básico');
INSERT INTO categoria_incidencia (id, categoria) VALUES (3, 'Software de aplicaciones');
INSERT INTO categoria_incidencia (id, categoria) VALUES (4, 'Otros');
/* Poblando la tabla: usuario */ /* Poblando la tabla: usuario */
INSERT INTO usuario (nick, email, password, nombre, apellidos, biografia, fotoPerfil, tipo) VALUES ('supervisor', 'super@mail.com', 'password', 'super', 'visor', 'probando la biografia del supervisor', 'fotoPerfil', 0); INSERT INTO usuario (nick, email, password, nombre, apellidos, biografia, fotoPerfil, tipo) VALUES ('supervisor', 'super@mail.com', 'password', 'super', 'visor', 'probando la biografia del supervisor', 'fotoPerfil', 0);
INSERT INTO usuario (nick, email, password, nombre, apellidos, biografia, fotoPerfil, tipo) VALUES ('tecnico', 'tecnico@mail.com', 'password', 'tec', 'nico', 'probando la biografia del tecnico', 'fotoPerfil', 1); INSERT INTO usuario (nick, email, password, nombre, apellidos, biografia, fotoPerfil, tipo) VALUES ('tecnico', 'tecnico@mail.com', 'password', 'tec', 'nico', 'probando la biografia del tecnico', 'fotoPerfil', 1);
INSERT INTO usuario (nick, email, password, nombre, apellidos, biografia, fotoPerfil, tipo) VALUES ('cliente', 'cliente@mail.com', 'password', 'clie', 'nte', 'probando la biografia del cliente', 'fotoPerfil', 2); INSERT INTO usuario (nick, email, password, nombre, apellidos, biografia, fotoPerfil, tipo) VALUES ('cliente', 'cliente@mail.com', 'password', 'clie', 'nte', 'probando la biografia del cliente', 'fotoPerfil', 2);
...@@ -63,12 +63,12 @@ ...@@ -63,12 +63,12 @@
<div class="addCom"> <div class="addCom">
<div class="formuCom"> <div class="formuCom">
<form class="formCom" method='POST' action='/add_time/{{ incidencia.id }}'> <form class="formCom" method='POST' action='/add_tiempo/{{ incidencia.id }}'>
<h4>Identificador: {{ incidencia.id}}</h4> <h4>Identificador: {{ incidencia.id}}</h4>
<h4>Título: {{ incidencia.titulo }}</h4> <h4>Título: {{ incidencia.titulo }}</h4>
<h5>Descripción: {{ incidencia.descripcion }}</h5> <h5>Descripción: {{ incidencia.descripcion }}</h5>
<input type="number" pattern="[1-999]" name="tiempo"> <input type="number" pattern="[1-999]" name="tiempo">
<button type="submit" name="action" value="add_time">Añadir tiempo</button> <button type="submit" name="action" value="add_tiempo">Añadir tiempo</button>
<button type="submit" name="action" value="cancelar">Cancelar</button> <button type="submit" name="action" value="cancelar">Cancelar</button>
</form> </form>
......
...@@ -77,28 +77,36 @@ ...@@ -77,28 +77,36 @@
<tbody> <tbody>
<tr> <tr>
<th scope="row">1</th> <th scope="row">1</th>
<td>Estado</td> <td>ID Incidencia</td>
<td>{{ incidencia.estado }}</td> <td>{{ incidencia.id }}</td>
</tr> </tr>
<tr> <tr>
<th scope="row">2</th> <th scope="row">2</th>
<td>Fecha de Apertura</td> <td>Estado</td>
<td>24 de Diciembre de 2018</td> <td>{{ estado }}</td>
</tr> </tr>
<tr> <tr>
<th scope="row">3</th> <th scope="row">3</th>
<td>Fecha Apertura</td> <td>Prioridad</td>
<td>24 de Dicimbre de 2018</td> {% if incidencia.prioridad != 0 %}
<td>{{ incidencia.prioridad }}</td>
{% else %}
<td>No asignada</td>
{% endif %}
</tr> </tr>
<tr> <tr>
<th scope="row">4</th> <th scope="row">4</th>
<td>Fecha estimada de cierre</td> <td>Tiempo estimado de resolución</td>
<td>23 de Julio de 2065</td> {% if incidencia.tiempoEstimado != 0 %}
<td>{{ incidencia.tiempoEstimado }} horas</td>
{% else %}
<td>No estimado</td>
{% endif %}
</tr> </tr>
<tr> <tr>
<th scope="row">5</th> <th scope="row">5</th>
<td>{{ incidencia.reportadaPor}}</td> <td>Categoría</td>
<td></td> <td>{{ categoria }}</td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
......
...@@ -56,11 +56,9 @@ ...@@ -56,11 +56,9 @@
<input type="number" pattern="[0-9]" placeholder="Id elemento inventario " name="idElementoInventario"/> <input type="number" pattern="[0-9]" placeholder="Id elemento inventario " name="idElementoInventario"/>
<input type="date" id="fecha" name="fecha" required> <input type="date" id="fecha" name="fecha" required>
<select name="categoria" required> <select name="categoria" required>
<option value="hw">Hardware</option> {% for c in range(categorias|length) %}
<option value="com">Comunicaciones</option> <option value="{{ c }}">{{ categorias[c].categoria }}</option>
<option value="softwareBa">Software básico</option> {% endfor %}
<option value="softwareApp">Software de aplicaciones</option>
<option value="otros">Otros</option>
</select> </select>
<button type="submit" onsubmit="validarCampos()">Enviar</button> <button type="submit" onsubmit="validarCampos()">Enviar</button>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment