def eliminarEquipo(request, equid): try: proyectoEquipo = models.ProjectTeam.objects.get(pk=equid) equipoP = models.Team.objects.get(pk=proyectoEquipo.team.team_id) proyectoP = models.Project.objects.get( pk=proyectoEquipo.project.proj_id) proyectoEquipo.delete() # ===Notificación=== person_ids = getPersonsIdByProject(proyectoP.proj_id) change = { 'team_name': equipoP.team_name, 'proj_name': proyectoP.proj_name } notificaciones.notify(person_ids, notificaciones.CAMBIO_EQUIPO_PROYECTO, notificaciones.EQUIPO_ELIMINADO, change, project_name=proyectoP.proj_name) response = {'code': 200, 'status': 'success'} except ValidationError as e: response = {'code': 400, 'errors': list(e)[0], 'status': 'error'} return JsonResponse(response, safe=False, status=response['code'])
def actualizarProyectoBasic(request, proyid): try: proyecto = models.Project.objects.get(pk=proyid) proyecto.proj_name = request.POST.get('proj_name') proyecto.proj_description = request.POST.get('proj_description') #proyecto.project_type = models.ProjectType.objects.get(projtype_id__exact = request.POST.get('tiproid')) proyecto.proj_start_date = request.POST.get('proj_start_date') proyecto.proj_close_date = request.POST.get('proj_close_date') proyecto.full_clean() proyecto.save() change = { 'start_date': request.POST.get('proj_start_date'), 'end_date': request.POST.get('proj_close_date'), } persons = getPersonsIdByProject(proyid) notificaciones.notify(persons, notificaciones.CAMBIO_FECHA_PROYECTO, None, change, project_name=proyecto.proj_name) 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 actualizarTareaGestionCambios(request, tareid): try: with transaction.atomic(): estado = 0 tarea = models.Task.objects.get(pk=tareid) restriction = models.TaskRestriction.objects.get( pk=request.POST.get('task_restriction_id')) restriction.task_start_date = request.POST.get('task_start_date') restriction.task_end_date = request.POST.get('task_end_date') restriction.start_time = request.POST.get('start_time') restriction.end_time = request.POST.get('end_time') restriction.save() tarea.task_quantity = request.POST.get('task_quantity') tarea.save() # Obtener los usuarios que hacen del proyecto pers_ids = getPersonsIdByProject(tarea.project.proj_id) change = { 'start_date': request.POST.get('task_start_date'), 'end_date': request.POST.get('task_end_date'), 'start_time': request.POST.get('start_time'), 'end_time': request.POST.get('end_time'), 'task_quantity': request.POST.get('task_quantity') } notificaciones.notify(pers_ids, notificaciones.CAMBIO_FECHA_TAREA, None, change, project_name=tarea.project.proj_name, task_name=tarea.task_name) response = { 'code': 200, 'tarea': serializers.serialize('python', [tarea])[0], 'status': 'success' } except ObjectDoesNotExist as e: response = {'code': 404, 'message': str(e), 'status': 'error' + str(e)} 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'])
def agregarMiembro(request, planid): try: with transaction.atomic(): personaId = request.POST.get('usuarioId') persona = models.Person.objects.get(user__userid=personaId) equipo = models.Team.objects.get(pk=planid) equipoPersona = models.TeamPerson.objects.filter( person__pers_id__exact=persona.pers_id).filter( team__team_id__exact=equipo.team_id) if len(equipoPersona) == 0: equipoMiembro = models.TeamPerson(person=persona, team=equipo) equipoMiembro.full_clean() equipoMiembro.save() #notificación del cambio a la persona change = {'team_name': equipo.team_name} notificaciones.notify([persona.pers_id], notificaciones.CAMBIO_EQUIPO, notificaciones.AGREGADO_A_EQUIPO, change) response = { 'code': 201, 'data': model_to_dict(equipoMiembro), 'status': 'success' } else: response = { 'code': 403, 'message': 'El usuario ya está registrado en el equipo', 'status': 'error' } except ObjectDoesNotExist: response = {'code': 404, 'status': 'error'} except ValidationError as e: try: errors = dict(e) except ValueError: errors = list(e)[0] response = {'code': 400, 'errors': errors, 'status': 'error'} return JsonResponse(response, safe=False, status=response['code'])
def cambioTerritorio(request, dimensionid): try: with transaction.atomic(): project_dimension = models.TerritorialDimension.objects.get( pk=dimensionid) data = json.loads(request.body) proj_id = data['proj_id'] if 'geojson' in data: #dimensionTerritorialNew = models.DelimitacionGeografica(proyid=dimensionTerritorialOld.proyid, nombre=dimensionTerritorialOld.nombre, geojson=data['geojson']) #dimensionTerritorialNew.save() project_dimension.dimension_geojson = data['geojson'] project_dimension.save() if 'tareas' in data: for tarea in data['tareas']: task_dimension = models.TerritorialDimension.objects.get( pk=tarea['territorial_dimension_id']) task_dimension.dimension_geojson = tarea[ 'dimension_geojson'] task_dimension.save() response = {'code': 200, 'status': 'success'} else: raise ValidationError("JSON Inválido") else: raise ValidationError("JSON Inválido") # ===Notificación=== project = models.Project.objects.get(pk=proj_id) change = {'proj_name': project.proj_name} personsid = getPersonsIdByProject(proj_id) notificaciones.notify(personsid, notificaciones.CAMBIO_DIMENSION_TERRITORIAL, None, change, project_name=project.proj_name) 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 agregarEquipo(request): try: equipoId = request.POST.get('equipoId') proyectoId = request.POST.get('proyectoId') equipoP = models.Team.objects.get(pk=equipoId) proyectoP = models.Project.objects.get(pk=proyectoId) proyectoEquipo = models.ProjectTeam(team=equipoP, project=proyectoP) proyectoEquipo.save() # ===Notificación=== person_ids = getPersonsIdByProject(proyectoId) change = { 'team_name': equipoP.team_name, 'proj_name': proyectoP.proj_name } notificaciones.notify(person_ids, notificaciones.CAMBIO_EQUIPO_PROYECTO, notificaciones.EQUIPO_AGREGADO, change, project_name=proyectoP.proj_name) data = { 'code': 201, 'integrante': serializers.serialize('python', [proyectoEquipo])[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 eliminarMiembro(request, miplid): try: with transaction.atomic(): miembroPlantilla = models.TeamPerson.objects.get(pk=miplid) equipo = models.Team.objects.get(pk=miembroPlantilla.team.team_id) miembroPlantilla.delete() #notificación del cambio a la persona change = {'team_name': equipo.team_name} notificaciones.notify([miembroPlantilla.person.pers_id], notificaciones.CAMBIO_EQUIPO, notificaciones.ELIMINADO_DE_EQUIPO, change) response = {'code': 200, 'status': 'success'} except ObjectDoesNotExist: response = {'code': 404, 'status': 'error'} except ValidationError as e: response = {'code': 400, 'errors': list(e)[0], 'status': 'error'} return JsonResponse(response, safe=False, status=response['code'])