def almacenamientoEquipo(request): userid = request.POST.get('userid') proyid = request.POST.get('proyid') miembroEstado = 1 #miembroEstado = request.POST.get('miembroestado') equipo = models.Equipo(userid = userid, proyid = proyid, miembroestado = miembroEstado) try: equipo.full_clean() equipo.save() # Verificando que el recurso haya sido llamado desde Gestión de Cambios if request.POST.get('gestionCambio', None) is not None: # Obtener los usuarios que hacen parte del proyecto usuario = obtenerEmailUsuario(equipo.userid) #obtener la información del proyecto intervenido proyecto = models.Proyecto.objects.get(pk = equipo.proyid) # Detalle del cambio detalle = "Has sido agregado al proyecto" # Enviar Notificaciones gestionCambios(usuario, 'proyecto', proyecto.proynombre, 3, detalle) data = { 'code': 201, 'integrante': serializers.serialize('python', [equipo])[0], 'status': 'success' } except ValidationError as e: data = { 'code': 400, 'errors': dict(e), 'status': 'error' } except IntegrityError as e: data = { 'code': 500, 'errors': str(e), 'status': 'error' } return JsonResponse(data, safe = False, status = data['code'])
def eliminarEquipo(request, equid): try: equipo = models.Equipo.objects.get(pk = equid) equipo.delete() # Convertiendo a diccionario información recibida requestData = QueryDict(request.body) # Verificando que el recurso haya sido llamado desde Gestión de Cambios if requestData.get('gestionCambio', None) is not None: # Obtener los usuarios que hacen parte del proyecto usuario = obtenerEmailUsuario(equipo.userid) # obtener la información del proyecto intervenido proyecto = models.Proyecto.objects.get(pk=equipo.proyid) # Detalle del cambio detalle = "Has sido eliminado del proyecto" # Enviar Notificaciones gestionCambios(usuario, 'proyecto', proyecto.proynombre, 3, detalle) data = { 'code': 200, 'integrante': serializers.serialize('python', [equipo])[0], 'status': 'success' } except ObjectDoesNotExist: data = { 'code': 404, 'message': 'El integrante no existe', 'status': 'error' } except ValidationError as e: data = { 'code': 400, 'errors': tuple(e), 'status': 'error' } return JsonResponse(data, safe = False, status = data['code'])
def cambioTerritorio(request, dimensionid): try: with transaction.atomic(): dimensionTerritorialOld = models.DelimitacionGeografica.objects.get(pk=dimensionid) data = json.loads(request.body) if 'geojson' in data: dimensionTerritorialNew = models.DelimitacionGeografica(proyid=dimensionTerritorialOld.proyid, nombre=dimensionTerritorialOld.nombre, geojson=data['geojson']) dimensionTerritorialNew.save() if 'tareas' in data: for tarea in data['tareas']: tareaObj = models.Tarea.objects.get(pk=tarea['tareid']) if(tarea['dimensionid'] == str(dimensionTerritorialOld.dimensionid)): tareaObj.geojson_subconjunto = tarea['geojson_subconjunto'] tareaObj.dimensionid = dimensionTerritorialNew.dimensionid tareaObj.save() else: raise ValidationError("La Tarea no pertenece a la dimensión") dimensionTerritorialOld.estado = 0 dimensionTerritorialOld.save() response = { 'code': 200, 'status': 'success' } else: raise ValidationError("JSON Inválido") else: raise ValidationError("JSON Inválido") # =============== Notificación de Gestión de Cambios ====================== usuarios = obtenerEmailsEquipo(dimensionTerritorialNew.proyid) # Obteneniendo información del proyecto proyecto = models.Proyecto.objects.get(pk = dimensionTerritorialNew.proyid) # Envío de Notificaciones gestionCambios(usuarios, 'proyecto', proyecto.proynombre, 4) except ObjectDoesNotExist: response = { 'code': 404, 'status': 'error' } except ValidationError as e: response = { 'code': 400, 'message': str(e), 'status': 'error' } return JsonResponse(response, safe=False, status=response['code'])
def actualizarProyecto(request, proyid): try: proyecto = models.Proyecto.objects.get(pk=proyid) proyecto.proynombre = request.POST.get('proynombre') proyecto.proydescripcion = request.POST.get('proydescripcion') proyecto.tiproid = request.POST.get('tiproid') proyecto.proyfechainicio = request.POST.get('proyfechainicio') proyecto.proyfechacierre = request.POST.get('proyfechacierre') proyecto.full_clean() proyecto.save() if(request.POST.get('decisiones') is not None and request.POST.get('contextos') is not None): decisiones = json.loads(request.POST.get('decisiones')) contextos = json.loads(request.POST.get('contextos')) # ================ Actualizacion de decisiones =============================== if len(decisiones) > 0: #Eliminando decisiones actuales decisionesProyecto = models.DecisionProyecto.objects.filter(proyid__exact=proyecto.proyid) if decisionesProyecto.exists(): for decisionProyecto in decisionesProyecto: decisionProyecto.delete() # Añadiendo las nuevas decisiones for decision in decisiones: decisionProyecto = models.DecisionProyecto(proyid = proyecto.proyid, desiid = decision) decisionProyecto.save() # ============== Actualización de contextos ================================ if len(contextos) > 0: # Eliminando contextos actuales contextosProyecto = models.ContextoProyecto.objects.filter(proyid__exact=proyecto.proyid) if contextosProyecto.exists(): for contextoProyecto in contextosProyecto: contextoProyecto.delete() # Añadiendo las nuevos contextos for contexto in contextos: contextoProyecto = models.ContextoProyecto(proyid = proyecto.proyid, contextoid = contexto) contextoProyecto.save() # ================== Notificación de Gestion de cambios ======================== if request.POST.get('gestionCambio', None) is not None: #obtener usuarios que hacen parte del proyecto: usuarios = obtenerEmailsEquipo(proyid) # Detalle del Cambio detalle = "<b> Fecha Inicio: </b> {} <br />" \ "<b> Fecha Fin </b> {}" \ .format(proyecto.proyfechainicio, proyecto.proyfechacierre) #Enviar notificaciones gestionCambios(usuarios, 'proyecto', proyecto.proynombre, 2, detalle) return JsonResponse(serializers.serialize('python', [proyecto]), safe=False) except ObjectDoesNotExist: return JsonResponse({'status': 'error'}, status=404) except ValidationError as e: return JsonResponse({'status': 'error', 'errors': dict(e)}, status=400)
def actualizarTarea(request, tareid): try: tarea = models.Tarea.objects.get(pk=tareid) estado = int(request.POST.get('tareestado')) tarea.tarenombre = request.POST.get('tarenombre') #tarea.taretipo = request.POST.get('taretipo') tarea.tarerestriccant = request.POST.get('tarerestriccant') tarea.proyid = request.POST.get('proyid') tarea.taredescripcion = request.POST.get('taredescripcion') tarea.tareprioridad = request.POST.get('tareprioridad') tarea.full_clean() if estado == 2 and tarea.tareestado != 2: if validarTarea(tarea): tarea.tareestado = estado tarea.save() else: tarea.tareestado = estado tarea.save() # Verificando que el recurso haya sido llamado desde Gestión de Cambios if request.POST.get('gestionCambio', None) is not None: # Obtener los usuarios que hacen del proyecto usuarios = obtenerEmailsEquipo(tarea.proyid) # Detalle del Cambio detalle = "Encuestas Objetivo: {}".format(tarea.tarerestriccant) # Enviar Notificaciones gestionCambios(usuarios, 'tarea', tarea.tarenombre, 1, detalle) response = { 'code': 200, 'tarea': serializers.serialize('python', [tarea])[0], 'status': 'success' } except ObjectDoesNotExist as e: response = {'code': 404, 'message': str(e), 'status': 'error'} except ValidationError as e: try: errors = dict(e) except ValueError: errors = list(e)[0] response = {'code': 400, 'errors': errors, 'status': 'error'} except IntegrityError as e: response = {'code': 500, 'message': str(e), 'status': 'error'} return JsonResponse(response, safe=False, status=response['code'])