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

Merge branch 'master' into solicitud_cierre

parents 5c582b91 b4817f8e
No related branches found
No related tags found
1 merge request!19Solicitud cierre
import os import os
from datetime import datetime from datetime import datetime
#from functools import wrap
from flask import Flask, render_template, request, flash, redirect, url_for from flask import Flask, render_template, request, flash, redirect, url_for
from flask_login import LoginManager, current_user, login_user, logout_user, login_required, UserMixin from flask_login import LoginManager, current_user, login_user, logout_user, login_required, UserMixin
...@@ -37,21 +36,12 @@ def logout(): ...@@ -37,21 +36,12 @@ def logout():
logout_user() logout_user()
return redirect(url_for('login')) return redirect(url_for('login'))
@app.route('/incidencia/<idIncidencia>', methods=['GET', 'POST'])
@app.route('/informacion_incidencia/<idIncidencia>', methods=['GET', 'POST'])
@login_required @login_required
def informacion_incidencia_cliente(idIncidencia): def informacion_incidencia_cliente(idIncidencia):
incidencias = get_incidencia(idIncidencia) incidencia = get_incidencia(idIncidencia)
listaTecnicos = get_tecnicos() listaTecnicos = get_tecnicos()
if request.method == 'POST': if request.method == 'POST':
"""if incidencias[0].estado==0:
tecnico = request.form['tecnicoAsignado']
cambio_estado_incidencia(idIncidencia, 1, tecnico)
elif incidencias[0].estado==1:
cambio_estado(idIncidencia, 3)
elif incidencias[0].estado==3 :
cambio_estado(idIncidencia,4)"""
if request.form['action']=="cierre_cliente": if request.form['action']=="cierre_cliente":
cambio_estado(idIncidencia,2) cambio_estado(idIncidencia,2)
elif request.form['action']=="cierre_tecnico": elif request.form['action']=="cierre_tecnico":
...@@ -70,39 +60,38 @@ def informacion_incidencia_cliente(idIncidencia): ...@@ -70,39 +60,38 @@ def informacion_incidencia_cliente(idIncidencia):
@app.route('/index') @app.route('/index')
@login_required @login_required
def index(): def index():
userType = current_user.tipo if current_user.tipo == 0: #Supervisor
if userType == 0:
# supervisor
incidencias = get_incidencias()
incidencias_abiertas = get_incidencias_abiertas_super() incidencias_abiertas = get_incidencias_abiertas_super()
incidencias_notif_cierre = get_incidencias_notif_cierre_super() incidencias_notif_cierre = get_incidencias_notif_cierre_super()
login_user(get_user(current_user.nick)) return render_template('incidencias_supervisor.html', incidencias_abiertas=incidencias_abiertas, incidencias_notif_cierre=incidencias_notif_cierre)
return render_template('incidencias_supervisor.html', userType=userType, userName=current_user.nick, incidencias=incidencias, incidencias_abiertas = incidencias_abiertas, incidencias_notif_cierre = incidencias_notif_cierre)
if userType == 1:
# tecnico
incidencias = get_incidencias_by_user(current_user.nick)
elif current_user.tipo == 1: #Tecnico
incidencias_abiertas = get_incidencias_abiertas(current_user.nick) incidencias_abiertas = get_incidencias_abiertas(current_user.nick)
incidencias_notif_cierre = get_incidencias_notif_cierre(current_user.nick) incidencias_notif_cierre = get_incidencias_notif_cierre(current_user.nick)
incidencias_pendientes_cierre=get_inciencias_pendientes_cierre(current_user.nick) incidencias_pendientes_cierre=get_inciencias_pendientes_cierre(current_user.nick)
login_user(get_user(current_user.nick)) return render_template('incidencias_tecnico.html', incidencias_abiertas=incidencias_abiertas, incidencias_notif_cierre=incidencias_notif_cierre)
return render_template('incidencias_columnas.html', userType=userType, userName=current_user.nick, incidencias=incidencias, incidencias_abiertas = incidencias_abiertas, incidencias_notif_cierre = incidencias_notif_cierre, incidencias_pendientes_cierre=incidencias_pendientes_cierre)
if userType == 2: elif current_user.tipo == 2: #Cliente
# cliente
incidencias = get_incidencias_by_user(current_user.nick) incidencias = get_incidencias_by_user(current_user.nick)
login_user(get_user(current_user.nick))
return render_template('incidencias_cliente.html', userType=userType, userName=current_user.nick, incidencias=incidencias)
return render_template('incidencias_cliente.html', incidencias=incidencias)
@app.route('/incidencia/<idIncidencia>', methods=['GET', 'POST'])
@login_required
def incidencia(idIncidencia):
if request.method == 'POST':
tecnico = request.form['tecnicoAsignado']
cambio_estado_incidencia(idIncidencia, 1, tecnico)
incidencia = get_incidencia(idIncidencia)
listaTecnicos = get_tecnicos()
return render_template('info_incidencia.html', incidencia=incidencia, listaTecnicos=listaTecnicos)
@app.route('/registrar_nueva_incidencia', methods=['GET', 'POST']) @app.route('/registrar_incidencia', methods=['GET', 'POST'])
@login_required @login_required
#@requires_access_level([1, 2]) def registrar_incidencia():
def registrar_nueva_incidencia():
if request.method == 'POST': if request.method == 'POST':
titulo = request.form.get('titulo') titulo = request.form.get('titulo')
comentario = '' comentario = ''
...@@ -111,7 +100,7 @@ def registrar_nueva_incidencia(): ...@@ -111,7 +100,7 @@ def registrar_nueva_incidencia():
descripcion = request.form.get('descripcion') descripcion = request.form.get('descripcion')
fecha = datetime.strptime(request.form.get('fecha'), '%Y-%m-%d') fecha = datetime.strptime(request.form.get('fecha'), '%Y-%m-%d')
estado = 0 estado = 0
tecnicoAsignado = 'sin asignar' tecnicoAsignado = 'Sin asignar'
reportadaPor = current_user.nick reportadaPor = current_user.nick
idInventario = request.form.get('idElementoInventario') idInventario = request.form.get('idElementoInventario')
categoria = request.form.get('categoria') categoria = request.form.get('categoria')
...@@ -120,20 +109,7 @@ def registrar_nueva_incidencia(): ...@@ -120,20 +109,7 @@ def registrar_nueva_incidencia():
return redirect(url_for('index')) return redirect(url_for('index'))
return render_template('datos_incidencia_cliente.html') return render_template('registrar_incidencia.html')
'''
def requires_access_level(access_level):
def decorator(f):
@wraps(f)
def decorated_function(*args, **kwargs):
if current_user.tipo not in access_level:
return redirect(url_for('index'))
return f(*args, **kwargs)
return decorated_function
return decorator
'''
...@@ -175,16 +151,16 @@ class Incidencia(db.Model): ...@@ -175,16 +151,16 @@ class Incidencia(db.Model):
reportadaPor = db.Column(db.String(50)) reportadaPor = db.Column(db.String(50))
categoria = db.Column(db.String(40)) categoria = db.Column(db.String(40))
class ElementoIncidencia(db.Model):
incidencia = db.Column(db.Integer, primary_key=True)
elemento = db.Column(db.Integer, primary_key=True)
class Cambio(db.Model): class Cambio(db.Model):
fecha = db.Column(db.DateTime, primary_key=True) fecha = db.Column(db.DateTime, primary_key=True)
estado = db.Column(db.Integer) estado = db.Column(db.Integer)
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):
incidencia = db.Column(db.Integer, primary_key=True)
elemento = db.Column(db.Integer, primary_key=True)
####################### #######################
# USUARIO # # USUARIO #
...@@ -193,7 +169,6 @@ class Cambio(db.Model): ...@@ -193,7 +169,6 @@ class Cambio(db.Model):
def get_user(nick): def get_user(nick):
return Usuario.query.get(nick) return Usuario.query.get(nick)
def get_tecnicos(): def get_tecnicos():
return list(Usuario.query.filter_by(tipo=1)) return list(Usuario.query.filter_by(tipo=1))
...@@ -204,22 +179,20 @@ def insert_incidencia(titulo, descripcion, fecha, estado, reportadaPor, categori ...@@ -204,22 +179,20 @@ def insert_incidencia(titulo, descripcion, fecha, estado, reportadaPor, categori
db.session.add(Incidencia(titulo=titulo, comentario=comentario, prioridad=prioridad, tiempoEstimado=tiempoEstimado, descripcion=descripcion, fecha=fecha, estado=estado, tecnicoAsignado=tecnicoAsignado, reportadaPor=reportadaPor, categoria=categoria)) db.session.add(Incidencia(titulo=titulo, comentario=comentario, prioridad=prioridad, tiempoEstimado=tiempoEstimado, descripcion=descripcion, fecha=fecha, estado=estado, tecnicoAsignado=tecnicoAsignado, reportadaPor=reportadaPor, categoria=categoria))
db.session.commit() db.session.commit()
def get_incidencia(id):
return Incidencia.query.get(id)
def cambio_estado_incidencia(id, estado, tecnicoAsignado): def cambio_estado_incidencia(id, estado, tecnicoAsignado):
incidencia = Incidencia.query.get(id) incidencia = get_incidencia(id)
incidencia.estado = estado incidencia.estado = estado
incidencia.tecnicoAsignado = tecnicoAsignado incidencia.tecnicoAsignado = tecnicoAsignado
db.session.commit() db.session.commit()
def cambio_estado(id,estado): def cambio_estado(id,estado):
incidencia = Incidencia.query.get(id) incidencia = Incidencia.query.get(id)
incidencia.estado = estado incidencia.estado = estado
db.session.commit() db.session.commit()
def get_incidencias():
return list(Incidencia.query.all())
def get_incidencia(id):
return list(Incidencia.query.filter_by(id=id))
def get_incidencias_by_user(userNick): def get_incidencias_by_user(userNick):
return list(Incidencia.query.filter_by(reportadaPor=userNick)) return list(Incidencia.query.filter_by(reportadaPor=userNick))
...@@ -237,6 +210,15 @@ def get_incidencias_notif_cierre(userNick): ...@@ -237,6 +210,15 @@ def get_incidencias_notif_cierre(userNick):
def get_inciencias_pendientes_cierre(userNick): def get_inciencias_pendientes_cierre(userNick):
return list((Incidencia.query.filter_by(reportadaPor=userNick, estado=3))) return list((Incidencia.query.filter_by(reportadaPor=userNick, estado=3)))
#######################
# CAMBIO #
#######################
def insert_cambio(estado, tecnico, incidencia, fecha=datetime.now()):
db.session.add(Cambio(fecha=fecha, estado=estado, tecnico=tecnico, incidencia=incidencia))
db.session.commit()
####################### #######################
# INVENTARIO # # INVENTARIO #
####################### #######################
...@@ -246,11 +228,3 @@ def insert_elemento_incidencia(incidencia, elemento): ...@@ -246,11 +228,3 @@ def insert_elemento_incidencia(incidencia, elemento):
def get_elementos_incidencia(incidencia): def get_elementos_incidencia(incidencia):
return list(ElementoIncidencia.query.filter_by(incidencia=incidencia)) return list(ElementoIncidencia.query.filter_by(incidencia=incidencia))
#######################
# CAMBIO #
#######################
def insert_cambio(estado, tecnico, incidencia, fecha=datetime.now()):
db.session.add(Cambio(fecha=fecha, estado=estado, tecnico=tecnico, incidencia=incidencia))
db.session.commit()
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../static/css/formulario.css">
<title>Introducir incidencia</title>
</head>
<div class="inciCli">
<h1 align="center">PGPIncidents - Introducir incidencia</h1>
<div class="formCli">
<form class="incidentCli" method='POST' action='/registrar_nueva_incidencia'>
<input type="text" placeholder="Título" name="titulo"/>
<textarea placeholder="Descripción" name="descripcion"></textarea>
<input type="text" placeholder="Id elemento inventario " name="idElementoInventario"/>
<input type="date" id="fecha" name="fecha">
<select name="categoria">
<option value="hw">Hardware</option>
<option value="com">Comunicaciones</option>
<option value="softwareBa">Software básico</option>
<option value="softwareApp">Software de aplicaciones</option>
<option value="otros">Otros</option>
</select>
<button type="submit">Enviar</button>
</form>
</div>
</div>
</html>
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
<span class="collapse width align-top side-options">Item</span> <span class="collapse width align-top side-options">Item</span>
</a> </a>
</a> </a>
<a class="list-group-item d-flex justify-content-start align-items-center bg-light" href="/registrar_nueva_incidencia"> <a class="list-group-item d-flex justify-content-start align-items-center bg-light" href="/registrar_incidencia">
<span class="fas fa-project-diagram fa-m " style="color: gray;"></span> <span class="fas fa-project-diagram fa-m " style="color: gray;"></span>
<span class="collapse width align-top side-options">Registrar nueva incidencia</span> <span class="collapse width align-top side-options">Registrar nueva incidencia</span>
</a> </a>
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
{% for j in range(3) %} {% for j in range(3) %}
<div class="card" id="card1"> <div class="card" id="card1">
<div class="card-body"> <div class="card-body">
<a href="/informacion_incidencia/{{ incidencias[3*i+j]['id'] }}"> <a href="/incidencia/{{ incidencias[3*i+j]['id'] }}">
<p class="card-title">{{ incidencias[3*i+j]['titulo'] }}</p> <p class="card-title">{{ incidencias[3*i+j]['titulo'] }}</p>
<hr> <hr>
<p class="card-text">Descripcion</p> <p class="card-text">Descripcion</p>
...@@ -93,7 +93,7 @@ ...@@ -93,7 +93,7 @@
<div class="card" id="card1"> <div class="card" id="card1">
<div class="card-body"> <div class="card-body">
<a href="/informacion_incidencia/{{ incidencias[3*i+j]['id'] }}"> <a href="/incidencia/{{ incidencias[3*i+j]['id'] }}">
<p class="card-title">{{ incidencias[3*i+j]['titulo'] }}</p> <p class="card-title">{{ incidencias[3*i+j]['titulo'] }}</p>
<hr> <hr>
<p class="card-text">Descripcion</p> <p class="card-text">Descripcion</p>
......
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<div class="card-deck" style="margin: 1em;"> <div class="card-deck" style="margin: 1em;">
<div class="card" id="card1"> <div class="card" id="card1">
<div class="card-body"> <div class="card-body">
<a href="/informacion_incidencia/{{ incidencias_abiertas[i].id }}"> <a href="/incidencia/{{ incidencias_abiertas[i].id }}">
<p class="card-title">{{ incidencias_abiertas[i].titulo }}</p> <p class="card-title">{{ incidencias_abiertas[i].titulo }}</p>
<hr> <hr>
<p class="card-text">Descripción:</p> <p class="card-text">Descripción:</p>
...@@ -96,7 +96,7 @@ ...@@ -96,7 +96,7 @@
<div class="card-deck" style="margin: 1em;"> <div class="card-deck" style="margin: 1em;">
<div class="card" id="card2"> <div class="card" id="card2">
<div class="card-body"> <div class="card-body">
<a href="/informacion_incidencia/{{ incidencias_notif_cierre[i].id }}"> <a href="/incidencia/{{ incidencias_notif_cierre[i].id }}">
<p class="card-title">{{ incidencias_notif_cierre[i].titulo }}</p> <p class="card-title">{{ incidencias_notif_cierre[i].titulo }}</p>
<hr> <hr>
<p class="card-text">Descripción:</p> <p class="card-text">Descripción:</p>
......
...@@ -74,7 +74,7 @@ ...@@ -74,7 +74,7 @@
<div class="card-deck" style="margin: 1em;"> <div class="card-deck" style="margin: 1em;">
<div class="card" id="card1"> <div class="card" id="card1">
<div class="card-body"> <div class="card-body">
<a href="/informacion_incidencia/{{ incidencias_abiertas[i].id }}"> <a href="/incidencia/{{ incidencias_abiertas[i].id }}">
<p class="card-title">{{ incidencias_abiertas[i].titulo }}</p> <p class="card-title">{{ incidencias_abiertas[i].titulo }}</p>
<hr> <hr>
<p class="card-text">Descripción:</p> <p class="card-text">Descripción:</p>
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
<div class="card-deck" style="margin: 1em;"> <div class="card-deck" style="margin: 1em;">
<div class="card" id="card2"> <div class="card" id="card2">
<div class="card-body"> <div class="card-body">
<a href="/informacion_incidencia/{{ incidencias_notif_cierre[i].id }}"> <a href="/incidencia/{{ incidencias_notif_cierre[i].id }}">
<p class="card-title">{{ incidencias_notif_cierre[i].titulo }}</p> <p class="card-title">{{ incidencias_notif_cierre[i].titulo }}</p>
<hr> <hr>
<p class="card-text">Descripción:</p> <p class="card-text">Descripción:</p>
......
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
<!-- Body --> <!-- Body -->
<div class="row"> <div class="row">
<div class="col-md-12" style="font: bold; font-size: 2.5em; margin: 1em;"> <div class="col-md-12" style="font: bold; font-size: 2.5em; margin: 1em;">
<p>{{ incidencias[0].titulo }}</p> <p>{{ incidencia.titulo }}</p>
<hr> <hr>
</div> </div>
</div> </div>
...@@ -72,7 +72,7 @@ ...@@ -72,7 +72,7 @@
<div class="col-md-6"> <div class="col-md-6">
<div class="card" id="card1"> <div class="card" id="card1">
<div class="card-body"> <div class="card-body">
<p class="card-text text-justify" id="card-description">{{ incidencias[0].descripcion}}</p> <p class="card-text text-justify" id="card-description">{{ incidencia.descripcion}}</p>
</div> </div>
</div> </div>
</div> </div>
...@@ -90,7 +90,7 @@ ...@@ -90,7 +90,7 @@
<tr> <tr>
<th scope="row">1</th> <th scope="row">1</th>
<td>Estado</td> <td>Estado</td>
<td>{{ incidencias[0].estado }}</td> <td>{{ incidencia.estado }}</td>
</tr> </tr>
<tr> <tr>
<th scope="row">2</th> <th scope="row">2</th>
...@@ -109,7 +109,7 @@ ...@@ -109,7 +109,7 @@
</tr> </tr>
<tr> <tr>
<th scope="row">5</th> <th scope="row">5</th>
<td>{{ incidencias[0].reportadaPor}}</td> <td>{{ incidencia.reportadaPor}}</td>
<td></td> <td></td>
</tr> </tr>
</tbody> </tbody>
...@@ -126,12 +126,12 @@ ...@@ -126,12 +126,12 @@
Abierta Abierta
</h3> </h3>
<p class="steps-description"> <p class="steps-description">
Incidencia abierta por {{ incidencias[0].reportadaPor}} el 23/12/18 Incidencia abierta por {{ incidencia.reportadaPor}} el 23/12/18
</p> </p>
</div> </div>
<div class="steps-two"> <div class="steps-two">
{% if incidencias[0].estado == 1 or incidencias[0].estado == 2 or incidencias[0].estado == 3 or incidencias[0].estado == 4%} {% if incidencia.estado == 1 or incidencia.estado == 2 or incidencia.estado == 3 or incidencia.estado == 4%}
<img class="steps-img" src="http://placehold.it/50/3498DB/FFFFFF" alt="" /> <img class="steps-img" src="http://placehold.it/50/3498DB/FFFFFF" alt="" />
{% else %} {% else %}
<img class="steps-img" src="http://placehold.it/50/FF0000/FFFFFF" alt="" /> <img class="steps-img" src="http://placehold.it/50/FF0000/FFFFFF" alt="" />
...@@ -140,12 +140,12 @@ ...@@ -140,12 +140,12 @@
Aceptada Aceptada
</h3> </h3>
<p class="steps-description"> <p class="steps-description">
Aceptada y asignada a {{ incidencias[0].tecnico }} Aceptada y asignada a {{ incidencia.tecnico }}
</p> </p>
</div> </div>
<div class="steps-three"> <div class="steps-three">
{% if incidencias[0].estado == 3 or incidencias[0].etado == 4%} {% if incidencia.estado == 3 or incidencia.etado == 4%}
<img class="steps-img" src="http://placehold.it/50/3498DB/FFFFFF" alt="" /> <img class="steps-img" src="http://placehold.it/50/3498DB/FFFFFF" alt="" />
{% else %} {% else %}
<img class="steps-img" src="http://placehold.it/50/FF0000/FFFFFF" alt="" /> <img class="steps-img" src="http://placehold.it/50/FF0000/FFFFFF" alt="" />
...@@ -163,10 +163,10 @@ ...@@ -163,10 +163,10 @@
</section> </section>
<form method="POST" action='/informacion_incidencia/{{ incidencias[0].id }}'> <form method="POST" action='/incidencia/{{ incidencia.id }}'>
<footer> <footer>
{% if (current_user.tipo == 0) and (incidencias[0].estado == 0) %} {% if (current_user.tipo == 0) and (incidencia.estado == 0) %}
<!-- <form method="POST" action='/informacion_incidencia/{{ incidencias[0].id }}'> --> <!-- <form method="POST" action='/incidencia/{{ incidencia.id }}'> -->
<button type="button" class="btn btn-outline-primary">Añadir comentario</button> <button type="button" class="btn btn-outline-primary">Añadir comentario</button>
<button type="submit" class="btn btn-outline-primary" name="action" value="tecnico">Asignar tecnico</button> <button type="submit" class="btn btn-outline-primary" name="action" value="tecnico">Asignar tecnico</button>
...@@ -177,11 +177,11 @@ ...@@ -177,11 +177,11 @@
</select> </select>
{% endif %}} {% endif %}}
{% if (current_user.tipo == 0) and (incidencias[0].estado == 1) %} {% if (current_user.tipo == 0) and (incidencia.estado == 1) %}
<button type="button" class="btn btn-outline-primary">Añadir comentario</button> <button type="button" class="btn btn-outline-primary">Añadir comentario</button>
{% endif %}} {% endif %}}
{% if (current_user.tipo == 0) and (incidencias[0].estado == 3) %} {% if (current_user.tipo == 0) and (incidencia.estado == 2) %}
<button type="button" class="btn btn-outline-primary">Añadir comentario</button> <button type="button" class="btn btn-outline-primary">Añadir comentario</button>
<button type="submit" class="btn btn-outline-primary" name="action" value="Solucion">Cerrar Incidencia Solucionada</button> <button type="submit" class="btn btn-outline-primary" name="action" value="Solucion">Cerrar Incidencia Solucionada</button>
<button type="submit" class="btn btn-outline-primary" name="action" value="n-Solucion">Cerrar Incidencia sin Solucion</button> <button type="submit" class="btn btn-outline-primary" name="action" value="n-Solucion">Cerrar Incidencia sin Solucion</button>
......
...@@ -10,8 +10,8 @@ ...@@ -10,8 +10,8 @@
<div class="form"> <div class="form">
<form class="login-form" method="post" action="/"> <form class="login-form" method="post" action="/">
<h1 align="center">PGPIncidents</h1> <h1 align="center">PGPIncidents</h1>
<input type="text" placeholder="usuario" name="username"/> <input type="text" placeholder="usuario" name="username" required/>
<input type="password" placeholder="contraseña" name="password"/> <input type="password" placeholder="contraseña" name="password" required/>
<button>entrar</button> <button>entrar</button>
</form> </form>
</div> </div>
......
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>PGPIncidents</title>
<!-- Establecer el ancho al ancho del sistema y el zoom al 1 -->
<meta name="viewport" content="width = device-width, initial-scale = 1, shrink-to-fit=no">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="{{ url_for('static', filename='css/clientView.css') }}">
<!-- Link al css de Bootstrap -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoApmYm81iuXoPkFOJwJ8ERdknLPMO"
crossorigin="anonymous">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" integrity="sha384-gfdkjb5BdAXd+lj+gudLWI+BXq4IuLW5IT+brZEZsLFm++aCMlF1V92rMkPaX4PP"
crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="../static/css/formulario.css">
</head>
<body class="d-flex" style="min-height: 100%;min-width: 100%;">
<!-- barra principal del menú -->
<nav class="navbar navbar-expand-md navbar-dark bg-dark fixed-top pt-0" onmouseover="closeSide('side-nav')">
<div class="d-inline-flex justify-content-center w-100 align-items-center">
<span class="navbar-brand title" style="font-size: 25px;">PGPIncidents</span>
</div>
</nav>
<div id="side-nav" class="side-nav fixed-top flex-nowrap flex-column justify-content-start d-inline-flex align-items-start bg-light"
onmouseover="openSide('side-nav')">
<div class="side-title side-content d-flex ">
<img id="user-img" class="user-icon" src="../static/img/default-gravatar.png" alt="user icon">
<span class="collapse width align-self-center" style="min-width: 70%;padding-left: 5%">User Name</span>
</div>
<div class="list-group list-group-flush w-100 side-icons">
<a class="list-group-item d-flex justify-content-start align-items-center bg-light">
<span class="material-icons" style="color: black;">person_add</span>
<span class="collapse width align-top side-options">Add User</span>
</a>
<a class="list-group-item d-flex justify-content-start align-items-center bg-light">
<span class="fa fa-plus-square fa-m" style="color: black;"></span>
<span class="collapse width align-top side-options">Item</span>
</a>
</a>
<a class="list-group-item d-flex justify-content-start align-items-center bg-light" href="/registrar_nueva_incidencia">
<span class="fas fa-project-diagram fa-m " style="color: gray;"></span>
<span class="collapse width align-top side-options">Registrar nueva incidencia</span>
</a>
<a class="list-group-item d-flex justify-content-start align-items-center bg-light">
<span class="fas fa-code fa-m " style="color: green;"></span>
<span class="collapse width align-top side-options">Ver estadisticas</span>
</a>
<a class="list-group-item d-flex justify-content-start align-items-center bg-light">
<span class="fas fa-code fa-m " style="color: grey;"></span>
<span class="collapse width align-top side-options">Filtros de incidencias</span>
</a>
</div>
</div>
<div id="data-body" class="container-fluid flex-grow-1" onmouseover="closeSide('side-nav')" >
<!-- Body -->
<!DOCTYPE html>
<div class="inciCli">
<div class="formCli">
<form class="incidentCli" method='POST' action='/registrar_incidencia'>
<input type="text" placeholder="Título" name="titulo" required/>
<textarea placeholder="Descripción" name="descripcion" required></textarea>
<input type="text" placeholder="Id elemento inventario " name="idElementoInventario"/>
<input type="date" id="fecha" name="fecha" required>
<select name="categoria" required>
<option value="hw">Hardware</option>
<option value="com">Comunicaciones</option>
<option value="softwareBa">Software básico</option>
<option value="softwareApp">Software de aplicaciones</option>
<option value="otros">Otros</option>
</select>
<button type="submit" onsubmit="ValidarFecha">Enviar</button>
</form>
<script>
function ValidarFecha(){
var fechainicial = new Date();
var fechafinal = document.getElementById("fecha").value;
if(Date.parse(fechafinal) < Date.parse(fechainicial)) {
alert("La fecha introducida no puede ser anterior a la actual");}
}
</script>
</div>
</div>
</div>
<script>
function openSide(id) {
let el = document.getElementById(id);
if (!el.classList.contains('open')) {
$('.collapse').collapse('show');
el.classList.add('open');
document.getElementById('side-nav').style.width = "200px";
}
};
function closeSide(id) {
let el = document.getElementById(id);
if (el.classList.contains('open')) {
el.classList.remove('open');
$('.collapse').collapse('hide')
document.getElementById('side-nav').style.width = "64px";
}
};
</script>
<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo"
crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49"
crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy"
crossorigin="anonymous"></script>
</body>
</html>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment