示例#1
0
 def get(self, request, *args, **kwargs):
     try:
         solicitud = Solicitud.objects.get(id=args[0])
     except Solicitud.DoesNotExist:
         # enviar notificacion a esta pagina.
         return redirect(reverse('espectro:listado sistemas', args={1}), permanent=True)
     tb_lic_page = int(request.GET.get('tb_lic_page', 1))
     table_licencias = utiles.tabla_licencias_factory(solicitud, tb_lic_page)
     return render(request, self.template_name, {'table_licencias': table_licencias, 'sistema': solicitud.sistema})
示例#2
0
    def get(self, request, *args, **kwargs):
        try:
            sistema = Sistema.objects.get(id=args[0])
            # si el usuario no pertece a la misma DT que el sistema o no es visualizador nacional no podra ver el detalle del sistema
            if not (request.user.unidad_org.strip()
                    == sistema.division_territorial.identificativo or
                    request.user.has_perm('espectro.visualizador_nacional')):
                return logout_view(request, next=request.path)
        except Sistema.DoesNotExist:
            url = reverse('espectro:listado sistemas', args={1})
            notify = '?notify=error/ERROR/El sistema ya no existe, pudo ser eliminado por otro usuario...'
            return redirect(url + notify, permanent=True)
        sistema_form = SistemaForm(instance=sistema)
        RadioFormSet = modelformset_factory(Radio,
                                            form=RadioForm,
                                            extra=0,
                                            can_delete=True)
        radio_formset = RadioFormSet(queryset=Radio.objects.filter(
            sistema=sistema))

        if request.user.unidad_org.strip(
        ) == sistema.division_territorial.identificativo:
            municipios = Municipio.objects.filter(
                centroasociado__centro_principal__division_territorial=sistema.
                division_territorial)
            for radio_form in radio_formset:
                radio_form.fields['municipio'].queryset = municipios
        else:
            for radio_form in radio_formset:
                municipios = Municipio.objects.filter(
                    nombre=radio_form.instance.municipio.nombre)
                radio_form.fields['municipio'].queryset = municipios
        tipo_sistema = EquipoForm(sistema=sistema)

        # Tablas de Solicitudes y Licencias ...........................................................
        table_solicitudes, solicitud_marcada = utiles.tabla_solicitudes_factory(
            sistema)
        table_licencias = utiles.tabla_licencias_factory(solicitud_marcada)
        return render(
            request, self.template_name, {
                'sistema_form': sistema_form,
                'radio_formset': radio_formset,
                'tipo_sistema': tipo_sistema,
                'table_solicitudes': table_solicitudes,
                'table_licencias': table_licencias,
                'sistema': sistema,
                'notify': ''
            })
示例#3
0
    def post(self, request, *args):
        if not request.user.has_perm('espectro.permisionario'):
            return logout_view(request, next=request.path)
        try:
            sistema = Sistema.objects.get(id=args[0])
            if not (request.user.unidad_org.strip()
                    == sistema.division_territorial.identificativo):
                return logout_view(request, next=request.path)
        except Sistema.DoesNotExist:
            url = reverse('espectro:listado sistemas', args={1})
            notify = '?notify=error/ERROR/El sistema ya no existe, pudo ser eliminado por otro usuario...'
            return redirect(url + notify, permanent=True)

        # cuando se usa checkbox y este no esta marcado o esta desabilitado el valor no esta en request.POST
        if 'esta_en_uso' not in request.POST and sistema.esta_en_uso:
            datos = request.POST.copy()
            datos['esta_en_uso'] = 'on'
        else:
            datos = request.POST.copy()

        sistema_form = SistemaForm(datos, instance=sistema)
        RadioFormSet = modelformset_factory(Radio,
                                            form=RadioForm,
                                            can_delete=True)
        radio_formset = RadioFormSet(
            self.request.POST, queryset=Radio.objects.filter(sistema=sistema))

        if request.user.unidad_org.strip(
        ) == sistema.division_territorial.identificativo:
            municipios = Municipio.objects.filter(
                centroasociado__centro_principal__division_territorial=sistema.
                division_territorial)
            for radio_form in radio_formset:
                radio_form.fields['municipio'].queryset = municipios
        else:
            for radio_form in radio_formset:
                municipios = Municipio.objects.filter(
                    nombre=radio_form.instance.municipio.nombre)
                radio_form.fields['municipio'].queryset = municipios

        if sistema_form.is_valid() and radio_formset.is_valid():
            for f in radio_formset:
                f.empty_permitted = False
            try:
                with transaction.atomic():
                    sistema = sistema_form.save()
                    for extra_form in radio_formset.extra_forms:
                        extra_form.instance.sistema = sistema
                    sistema.save()
                    radio_formset.save()
            except Error:
                return render(
                    self.request, 'general/NotFound.html', {
                        'error':
                        'Ha existido un problema en la BD, pongáse en contacto con el admin del sitio'
                    })

            sistema_form = SistemaForm(instance=sistema)
            RadioFormSet = modelformset_factory(Radio,
                                                form=RadioForm,
                                                can_delete=True,
                                                extra=0)
            radio_formset = RadioFormSet(queryset=Radio.objects.filter(
                sistema=sistema))
            if request.user.unidad_org.strip(
            ) == sistema.division_territorial.identificativo:
                municipios = Municipio.objects.filter(
                    centroasociado__centro_principal__division_territorial=
                    sistema.division_territorial)
                for radio_form in radio_formset:
                    radio_form.fields['municipio'].queryset = municipios
            else:
                for radio_form in radio_formset:
                    municipios = Municipio.objects.filter(
                        nombre=radio_form.instance.municipio.nombre)
                    radio_form.fields['municipio'].queryset = municipios
            notify = 'success/ACEPTADO/El sistema se actualizó correctamente...'
        else:
            notify = 'error/ERROR/Corrija los errores... Pruebe otra vez.'

        try:
            solicitud_marcada = Solicitud.objects.get(
                id=int(request.POST['id_row_marcada']))
        except Solicitud.DoesNotExist:
            solicitud_marcada = None
        tb_sol_page = int(request.POST['tb_sol_page'])
        tb_lic_page = int(request.POST['tb_lic_page'])
        table_solicitudes, solicitud_marcada = utiles.tabla_solicitudes_factory(
            sistema, page=tb_sol_page, solicitud_maracada=solicitud_marcada)
        table_licencias = utiles.tabla_licencias_factory(solicitud_marcada,
                                                         page=tb_lic_page)
        tipo_sistema = EquipoForm(sistema=sistema)
        return render(
            request, self.template_name, {
                'sistema_form': sistema_form,
                'radio_formset': radio_formset,
                'tipo_sistema': tipo_sistema,
                'id_sistema': args[0],
                'table_solicitudes': table_solicitudes,
                'table_licencias': table_licencias,
                'sistema': sistema,
                'notify': notify
            })
示例#4
0
    def post(self, request, *args):
        if not request.user.has_perm('espectro.permisionario'):
            logout(request)
            resp = HttpResponse('/auth/login')
            resp.status_code = 209
            return resp
        try:
            solicitud = Solicitud.objects.get(pk=args[0])
            sistema = solicitud.sistema
            if not request.user.unidad_org.strip(
            ) == sistema.division_territorial.identificativo:
                logout(request)
                resp = HttpResponse('/auth/login')
                resp.status_code = 209
                return resp
        except Solicitud.DoesNotExist:
            resp = HttpResponse(
                '/espectro/listado_sistemas/1'
                '?notify=error/ERROR/La Solicitud ya no existe, pudo ser eliminado por otro usuario...'
            )
            resp.status_code = 209
            return resp
        try:
            licencia_id = int(self.request.POST.get('id_licencia'))
        except ValueError:
            licencia_id = None
        licencia = None
        if licencia_id:
            try:
                licencia = Licencia.objects.get(pk=licencia_id)
            except Licencia.DoesNotExist:
                resp = HttpResponse(
                    '/espectro/listado_sistemas/1'
                    '?notify=error/ERROR/La Licencia ya no existe, pudo ser eliminado por otro usuario...'
                )
                resp.status_code = 209
                return resp
        licencias = Licencia.objects.filter(solicitud=solicitud)
        ultima_licencia = None
        fecha_ultima_licencia = (solicitud.fecha_autorizacion
                                 if solicitud.fecha_autorizacion else
                                 solicitud.fecha_envio).strftime('%Y-%m-%d')
        attr_disabled_cbx_solicitud_autorizada = ''
        if licencias:
            ultima_licencia = Licencia.objects.filter(
                solicitud=solicitud).order_by('-id')[0]
            fecha_ultima_licencia = utiles.fecha_ultima_licencia(
                solicitud).strftime('%Y-%m-%d')
            attr_disabled_cbx_solicitud_autorizada = 'disabled'
        attr_checked_cbx_solicitud_enviada = 'checked' if request.POST.get(
            'ncbx_solicitud_enviada', '') == 'on' else ''
        attr_checked_cbx_solicitud_autorizada = 'checked' if request.POST.get(
            'ncbx_solicitud_autorizada', '') == 'on' else ''
        dict_req = request.POST.copy()
        if attr_checked_cbx_solicitud_autorizada != 'checked':
            dict_req['fecha_autorizacion'] = ''
        solicitud_form = SolicitudForm(
            dict_req,
            request.FILES,
            instance=solicitud,
            cbx_solicitud_autorizada=attr_checked_cbx_solicitud_autorizada,
            sistema=sistema)
        licencia_form = LicenciaForm(request.POST,
                                     request.FILES,
                                     instance=licencia)
        table_solicitudes, solicitud_marcada = utiles.tabla_solicitudes_factory(
            sistema)
        table_licencias = utiles.tabla_licencias_factory(solicitud_marcada)
        notify_1 = 'info/Información/No se realizó ningún cambio...'
        try:
            is_nueva_licencia = False
            with transaction.atomic():
                if attr_checked_cbx_solicitud_autorizada == 'checked' and licencia_form.has_changed(
                ):
                    if not licencia_form.is_valid():
                        raise DatosNoValidos(
                            'Error de validación de la licencia')
                    if licencia != ultima_licencia:
                        notify_1 = 'error/ERROR/La solicitud o licencia fue actualizada por otro usuario...'
                        return render(
                            request, 'espectro/TablaSolicitudLicencia.html', {
                                'table_solicitudes': table_solicitudes,
                                'table_licencias': table_licencias,
                                'sistema': sistema,
                                'notify_1': notify_1
                            })
                    if not licencia:
                        # es una nueva licencia, no una actualizacion
                        is_nueva_licencia = True
                    licencia_act = licencia_form.save(commit=False)
                    licencia_act.solicitud = solicitud
                    licencia_act.save()
                    notify_1 = 'success/ACEPTADO/Los datos se guardaron correctamete...'
                solicitud_baja_autorizada = False
                if not solicitud_form.is_valid():
                    raise DatosNoValidos('Error de validación de la solicitud')
                if solicitud_form.has_changed():
                    if solicitud_form.cleaned_data['tipo_solicitud'].tipo_solicitud == 'BAJA' \
                            and attr_checked_cbx_solicitud_autorizada == 'checked':
                        solicitud_baja_autorizada = True
                    solicitud.fecha_autorizacion = solicitud_form.cleaned_data[
                        'fecha_autorizacion']
                    solicitud.archivo_solicitud = solicitud_form.cleaned_data[
                        'archivo_solicitud']
                    solicitud.save()
                    notify_1 = 'success/ACEPTADO/Los datos se guardaron correctamete...'

        except DatosNoValidos:
            fecha_ultima_sol = solicitud.fecha_envio.strftime('%d/%m/%Y')
            notify_1 = 'error/ERROR/Corrija los errores... Pruebe otra vez...'
            licencia_form.instance.id = None
            return render(
                request, self.template_name, {
                    'solicitud_form': solicitud_form,
                    'licencia_form': licencia_form,
                    'solicitud_id': solicitud.id,
                    'attr_checked_cbx_solicitud_enviada':
                    attr_checked_cbx_solicitud_enviada,
                    'attr_checked_cbx_solicitud_autorizada':
                    attr_checked_cbx_solicitud_autorizada,
                    'attr_disabled_cbx_solicitud_autorizada':
                    attr_disabled_cbx_solicitud_autorizada,
                    'attr_disabled_cbx_solicitud_enviada': 'disabled',
                    'fecha_ultima_sol': fecha_ultima_sol,
                    'fecha_ultima_lic': fecha_ultima_licencia,
                    'notify_1': notify_1
                })
        except Error:
            return render(
                request, 'general/NotFound.html', {
                    'error':
                    'Ha existido un problema en la BD, pongáse en contacto con el admin del sitio'
                })
        else:
            if solicitud_baja_autorizada:
                aux_dict = utiles.sistema_info_subcripcion(sistema, solicitud)
                bitacora = Bitacora(
                    sistema=sistema.sistema,
                    enlace=sistema.enlace,
                    accion='Sistema eliminado',
                    usuario=request.user.email,
                    fecha=solicitud_form.cleaned_data['fecha_autorizacion'])
                try:
                    with transaction.atomic():
                        bitacora.save()
                        sistema.delete()
                    nueva_solicitud.delay(info=aux_dict,
                                          asunto='Autorización de baja',
                                          titulo='Autorización de baja')
                    resp = HttpResponse(
                        '/espectro/listado_sistemas/1'
                        '?notify=success/ACEPTADO/El sistema se eliminó correctamente y se guardó en el historial...'
                    )
                    resp.status_code = 209
                    return resp
                except Error:
                    return render(
                        request, 'general/NotFound.html', {
                            'error':
                            'Ha existido un problema en la BD, pongáse en contacto con el admin del sitio'
                        })
            if is_nueva_licencia:
                aux_dict = utiles.sistema_info_subcripcion(sistema, solicitud)
                nueva_solicitud.delay(info=aux_dict,
                                      asunto='Autorización de solicitud',
                                      titulo='Autorización de solicitud')
            table_solicitudes, solicitud_marcada = utiles.tabla_solicitudes_factory(
                sistema)
            table_licencias = utiles.tabla_licencias_factory(solicitud_marcada)
            return render(
                request, 'espectro/TablaSolicitudLicencia.html', {
                    'table_solicitudes': table_solicitudes,
                    'table_licencias': table_licencias,
                    'sistema': sistema,
                    'notify_1': notify_1
                })