def pasos_procesos(request): args = PostParametersList(request) args.check_parameter(key='proceso', required=True) args = args.__dict__() pasos = Paso.objects.filter(proceso_id=args['proceso']).values() pasos = [dict(p) for p in pasos] return JsonResponse(pasos, safe=False)
def subir_documento(request): args = PostParametersList(request) args.check_parameter(key='filename', required=True) args.check_parameter(key='content', required=True) admin = Administrador.objects.get(usuario=request.user) doc = Documento.objects.create(nombre=args['filename'], contenido_subido=args['content'], admin=admin, proceso_id=args['proceso']) contenido = json.loads(args['content']) for c in contenido['data']: fecha_1 = datetime.strptime(c['fecha_apertura'], '%m/%d/%y %H:%M') fecha_2 = datetime.strptime(c['fecha_ultima'], '%m/%d/%y %H:%M') p_ok = -1 p = 1 while (('paso_' + str(p)) in c): if c['paso_' + str(p)] == 'ok': p_ok = p p = p + 1 paso = None if p_ok != -1: paso = Paso.objects.filter(proceso_id=args['proceso'], numero=p_ok).first() tra = Tramitealumno.objects.create(matricula=c['matricula'], numero_ticket=c['ticket'], proceso_id=args['proceso'], fecha_inicio=fecha_1, fecha_ultima_actualizacion=fecha_2, paso_actual=paso) return JsonResponse(doc.id, safe=False)
def create_letter_template(request): # Validate body parameters args = PostParametersList(request) args.check_parameter(key='id_admin', required=True) args.check_parameter(key='descripcion', required=True) print(args['id_admin']) print(args['descripcion']) # Save file to templates uploadedFile = request.FILES['file'] handle_uploaded_file(uploadedFile) args = args.__dict__() ts = datetime.now().timestamp() # Sumbmit created letter data to db carta = Carta.objects.create(creado_por=args['id_admin'], nombre=uploadedFile.name, descripcion=args['descripcion'], fecha_creacion=ts, fecha_modificacion=ts, modificado_por=args['id_admin']) return JsonResponse({'message': 'File uploaded successfully'})
def get_pasos_tramites(request): args = PostParametersList(request) args.check_parameter(key='id', required=True) args = args.__dict__() tra = Paso.objects.filter( proceso_id=args['id']).order_by('numero').values() tra = [dict(t) for t in tra] return JsonResponse(tra, safe=False)
def registro_administradores(request): args = PostParametersList(request) args.check_parameter(key='email', required=True) args.check_parameter(key='nombre', required=True) args = args.__dict__() user = Usuario.objects.create_admin(email=args['email'], password=12345678, nombre=args['nombre']) return JsonResponse(1, safe=False)
def validate_password_token(request): args = PostParametersList(request) args.check_parameter(key='uid', required=True) args.check_parameter(key='token', required=True) user = PasswordToken.validate_token(args['uid'], args['token']) if user is None: raise APIExceptions.InvalidUIdToken else: return JsonResponse(1, safe=False)
def eliminar_documentos(request): args = PostParametersList(request) args.check_parameter(key='documentos', required=True, is_json=True) print(args['documentos']) for p in args['documentos']: try: doc = Documento.objects.get(id=p['id']) doc.delete() except IntegrityError: raise APIExceptions.PermissionDenied return JsonResponse(1, safe=False)
def registro_administradores(request): args = PostParametersList(request) args.check_parameter(key='email', required=True) args.check_parameter(key='nombre', required=True) args = args.__dict__() try: user = Usuario.objects.create_admin(email=args['email'], password=12345678, nombre=args['nombre']) except IntegrityError as e: raise exceptions.PermissionDenied(detail="Email ya registrado") return JsonResponse(1, safe=False)
def delete_letter_template(request): args = PostParametersList(request) args.check_parameter(key='cartas', required=True, is_json=True) print(args['cartas']) for p in args['cartas']: try: carta = Carta.objects.get(id=p['id']) carta.delete() except IntegrityError: raise APIExceptions.PermissionDenied return JsonResponse(1, safe=False)
def eliminar_administradores(request): args = PostParametersList(request) args.check_parameter(key='admin', required=True, is_json=True) print(args['admin']) for a in args['admin']: try: doc = Administrador.objects.get(id=a['id']) doc.delete() except IntegrityError: raise APIExceptions.PermissionDenied return JsonResponse(1, safe=False)
def eliminar_alumnos(request): args = PostParametersList(request) args.check_parameter(key='alumno', required=True, is_json=True) print(args['alumno']) for a in args['alumno']: try: doc = Alumno.objects.get(id=a['id']) user = Usuario.objects.get(id=doc.usuario_id) user.delete() doc.delete() except IntegrityError: raise exceptions.PermissionDenied( detail="No se pudo eliminar el alumno") return JsonResponse(1, safe=False)
def upload_students(request): args = PostParametersList(request) args.check_parameter(key='content', required=True) contenido = json.loads(args['content']) print(contenido['data']) alumnosJson = contenido['data'] for alumno in alumnosJson: # Dando de alta información en la tabla de alumnos counter = Alumno.objects.filter(matricula=alumno['Matricula']).count() if counter == 0: # Crear nuevo usuario en la base de datos usuario = Usuario.objects.create(email=alumno['Email'], password=alumno['Contraseña'], is_staff=True, is_superuser=True, es_alumno=True) # Crear nuevo alumno en la base de datos Alumno.objects.create( nombre=alumno['Nombre'], usuario=usuario, matricula=alumno['Matricula'], siglas_carrera=alumno['Siglas Carrera'], carrera=alumno['Carrera'], semestre_en_progreso=alumno['Semestre en Progreso'], periodo_de_aceptacion=alumno['Periodo de Aceptacion'], posible_graduacion=alumno['Posible Graduacion'], fecha_de_nacimiento=alumno['Fecha de Nacimiento'], nacionalidad=alumno['Nacionalidad']) else: #Actualizar alumno existente alumno_db = Alumno.objects.filter( matricula=alumno['Matricula']).first() alumno_db.nombre = alumno['Nombre'] alumno_db.siglas_carrera = alumno['Siglas Carrera'] alumno_db.carrera = alumno['Carrera'] alumno_db.semestre_en_progreso = alumno['Semestre en Progreso'] alumno_db.periodo_de_aceptacion = alumno['Periodo de Aceptacion'] alumno_db.posible_graduacion = alumno['Posible Graduacion'] alumno_db.fecha_de_nacimiento = alumno['Fecha de Nacimiento'] alumno_db.nacionalidad = alumno['Nacionalidad'] alumno_db.save() return JsonResponse({'message': 'File uploaded successfully'})
def borrar_procesos(request): args = PostParametersList(request) args.check_parameter(key='procesos', required=True, is_json=True) print(args['procesos']) for p in args['procesos']: try: proc = Proceso.objects.get(id=p['id']) proc.delete() except IntegrityError: raise exceptions.PermissionDenied( detail="El proceso (" + str(p['id']) + ") no se puede eliminar porque hay documentos o trámites ligados a él." ) return JsonResponse(1, safe=False)
def eliminar_administradores(request): args = PostParametersList(request) args.check_parameter(key='admin', required=True, is_json=True) print(args['admin']) for a in args['admin']: try: doc = Administrador.objects.get(id=a['id']) user = Usuario.objects.get(id=doc.usuario_id) user.delete() doc.delete() except IntegrityError: raise exceptions.PermissionDenied( detail= "No se puede eliminar el usuario. Puede ser que el usuario tengo documentos registrados." ) return JsonResponse(1, safe=False)
def request_restore(request): args = PostParametersList(request) args.check_parameter(key='email', required=True) url_data = PasswordToken.request_uid_token(args['email']) try: send_mail( 'Restablece tu contraseña', 'STTE ITESM', "", [args['email']], html_message='<a href="http://127.0.0.1:3000/restaurar/' + str(url_data.uid) + '/' + url_data.token + '">Haz click aquí para restablecer tu contraseña</a>', fail_silently=False, ) except: raise APIExceptions.SendMailError return JsonResponse(1, safe=False)
def registro_Alumnos(request): args = PostParametersList(request) args.check_parameter(key='email', required=True) args.check_parameter(key='password', required=True) args.check_parameter(key='nombre', required=True) args.check_parameter(key='apellido', required=True) args = args.__dict__() if not re.match(EMAIL_REGEX, args['email']): raise exceptions.PermissionDenied(detail="Email invalido") user = Usuario.objects.create_alumno(email=args['email'], password=args['password'], nombre=args['nombre'], apellido=args['apellido']) return JsonResponse(1, safe=False)
def request_restore(request): args = PostParametersList(request) args.check_parameter(key='email', required=True) url_data = PasswordToken.request_uid_token(args['email']) try: html_message = loader.render_to_string( '../templates/mailTemplate.html', { 'user_name': "", 'subject': 'Restablecer contraseña', 'token': url_data.uid + "/" + url_data.token }) send_mail('Restablece tu contraseña', 'STTE ITESM', "", [args['email']], html_message=html_message, fail_silently=False) except: raise APIExceptions.SendMailError return JsonResponse(1, safe=False)
def reset_password(request): args = PostParametersList(request) args.check_parameter(key='uid', required=True) args.check_parameter(key='token', required=True) args.check_parameter(key='password', required=True) check = PasswordToken.reset_password(args['uid'], args['token'], args['password']) if check: user = PasswordToken.validate_token(args['uid'], args['token']) return JsonResponse(1 if user and user.es_admin else 2, safe=False) else: raise APIExceptions.InvalidToken.set( detail="Reseteo de contraseña invalido")
def subir_documento(request): args = PostParametersList(request) args.check_parameter(key='filename', required=True) args.check_parameter(key='content', required=True) admin = Administrador.objects.get(usuario=request.user) doc = Documento.objects.create(nombre=args['filename'], contenido_subido=args['content'], admin=admin, proceso_id=args['proceso']) contenido = json.loads(args['content']) print(contenido['data']) for c in contenido['data']: print(c) fecha_1 = now() fecha_2 = now() if c['fecha_apertura'] != None and c['fecha_apertura'] != "": try: fecha_1 = datetime.strptime(c['fecha_apertura'], '%d/%m/%y') except: raise exceptions.PermissionDenied( "El formato de la fecha [ " + c['fecha_ultima'] + " ] es inválido. El formato debe ser: D/M/A") if c['fecha_ultima'] != None and c['fecha_ultima'] != "": try: fecha_2 = datetime.strptime(c['fecha_ultima'], '%d/%m/%y') except: raise exceptions.PermissionDenied( "El formato de la fecha [ " + c['fecha_ultima'] + " ] es inválido. El formato debe ser: D/M/A") p_ok = 0 p = 1 while (('paso_' + str(p)) in c): if c['paso_' + str(p)] == 'ok': p_ok = p p = p + 1 paso = None if p_ok != -1: paso = Paso.objects.filter(proceso_id=args['proceso'], numero=p_ok).first() else: paso = Paso.objects.filter(proceso_id=args['proceso'], numero=1).first() num_results = Tramitealumno.objects.filter( numero_ticket=c['ticket']).count() if num_results > 0: tra = Tramitealumno.objects.filter( numero_ticket=c['ticket']).first() tra.fecha_ultima_actualizacion = fecha_2 tra.paso_actual = paso tra.numero_paso_actual = p_ok tra.save() else: tra = Tramitealumno.objects.create( matricula=c['matricula'], numero_ticket=c['ticket'], proceso_id=args['proceso'], fecha_inicio=fecha_1, fecha_ultima_actualizacion=fecha_2, paso_actual=paso, numero_paso_actual=p_ok) return JsonResponse(doc.id, safe=False)
def agregar_proceso(request): args = PostParametersList(request) args.check_parameter(key='nombre', required=True) args.check_parameter(key='ticket', required=True, is_json=True) args.check_parameter(key='fecha_apertura', required=True, is_json=True) args.check_parameter(key='ultima_actualizacion', required=True, is_json=True) args.check_parameter(key='matricula', required=True, is_json=True) args.check_parameter(key='pasos', required=True, is_json=True) print(args['matricula']) proc = Proceso.objects.create( nombre=args['nombre'], columna_matricula=args['matricula']['key'], columna_ticket=args['ticket']['key'], columna_fecha_ultima_actualizacion=args['ultima_actualizacion']['key'], columna_fecha_inicio=args['fecha_apertura']['key']) for p in args['pasos']: print(p) p = Paso.objects.create(proceso=proc, nombre=p['nombre'], columna_csv=p['columna_csv'], nombre_mostrar=p['nombre_mostrar'], mostrar=p['mostrar'], numero=p['numero']) return JsonResponse(1, safe=False)
def verify_post_params(request, keys, is_json=False): args = PostParametersList(request) for key_name in keys: args.check_parameter(key=key_name, required=True, is_json=is_json) return args