예제 #1
0
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'])
예제 #2
0
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'])
예제 #3
0
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'])
예제 #4
0
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)
예제 #5
0
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'])