예제 #1
0
    def get(self, request, *args, **kwargs):
        if not request.user.has_perm('administracion.administrador'):
            return logout_view(request, next=request.path)

        usuarios = UserSisop.objects.exclude(
            is_superuser=1).order_by('usuario')
        search = request.GET.get('search', None)
        if search:
            usuarios = usuarios.filter(usuario__contains=search)
        if not usuarios.exists():
            return render(request, self.template_name, {
                'table': None,
                'busqueda': request.GET.get('search', '')
            })
        page = utiles.pagina_valida(request.GET.get('page', 1), 2,
                                    usuarios.count())
        table_usuarios = UsuariosTable(usuarios)
        table_usuarios.paginate(page=page, per_page=10)

        notify = request.GET.get('notify', None)

        return render(
            request, self.template_name, {
                'table': table_usuarios,
                'busqueda': request.GET.get('search', ''),
                'notify': notify
            })
예제 #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 get(self, request, *args, **kwargs):
        notify = request.GET.get('notify', None)
        if not request.user.has_perm('espectro.permisionario'):
            return logout_view(request, next=request.path)
        sistema_form = SistemaForm()
        RadioFormSet = modelformset_factory(Radio,
                                            form=RadioForm,
                                            extra=2,
                                            can_delete=True)
        radio_formset = RadioFormSet(queryset=Radio.objects.none())
        for radio_form in radio_formset:
            try:
                div_user = DivisionTerritorial.objects.get(
                    identificativo=request.user.unidad_org.strip())
            except DivisionTerritorial.DoesNotExist:
                div_user = None
            municipios = Municipio.objects.filter(
                centroasociado__centro_principal__division_territorial=div_user
            ).order_by('nombre')
            radio_form.fields['municipio'].queryset = municipios
        tipo_sistema = EquipoForm()
        solicitud_form = SolicitudForm()
        licencia_form = LicenciaForm()

        return render(
            request, self.template_name, {
                'sistema_form': sistema_form,
                'radio_formset': radio_formset,
                'tipo_sistema': tipo_sistema,
                'solicitud_form': solicitud_form,
                'licencia_form': licencia_form,
                'attr_checked_cbx_solicitud_enviada': '',
                'attr_checked_cbx_solicitud_autorizada': '',
                'fecha_ultima_sol': '01/01/0001',
                'fecha_ultima_lic': '0001-01-01',
                'notify': notify
            })
예제 #4
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
            })
예제 #5
0
    def post(self, request, *args, **kwargs):
        if not request.user.has_perm('espectro.permisionario'):
            return logout_view(request, next=request.path)
        RadioFormSet = modelformset_factory(Radio,
                                            form=RadioForm,
                                            extra=0,
                                            can_delete=True)
        radio_formset = RadioFormSet(request.POST,
                                     queryset=Radio.objects.none())
        for radio_form in radio_formset:
            try:
                div_user = DivisionTerritorial.objects.get(
                    identificativo=request.user.unidad_org.strip())
            except DivisionTerritorial.DoesNotExist:
                div_user = None
            municipios = Municipio.objects.filter(
                centroasociado__centro_principal__division_territorial=div_user
            ).order_by('nombre')
            radio_form.fields['municipio'].queryset = municipios
        tipo_sistema = EquipoForm(request.POST)
        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 ''
        sistema_form = SistemaForm(
            request.POST,
            cbx_solicitud_autorizada=attr_checked_cbx_solicitud_autorizada)
        solicitud_form = SolicitudForm(
            request.POST,
            request.FILES,
            cbx_solicitud_autorizada=attr_checked_cbx_solicitud_autorizada)
        licencia_form = LicenciaForm(request.POST, request.FILES)
        for f in radio_formset:
            f.empty_permitted = False
        try:
            if not (sistema_form.is_valid() and radio_formset.is_valid()
                    and tipo_sistema.is_valid()):
                raise DatosNoValidos(
                    'Error de validación del sistema_form o del radio_formset')
            with transaction.atomic():
                sistema = sistema_form.save(commit=False)
                # debe ser la division territorial del permisionario cambiar cuando se haga.
                sistema.division_territorial = div_user
                sistema.save()
                radios = radio_formset.save(commit=False)
                for radio in radios:
                    radio.sistema = sistema
                    radio.save()
                if attr_checked_cbx_solicitud_enviada == 'checked':
                    if not solicitud_form.is_valid():
                        raise DatosNoValidos(
                            'Error de validación el solicitud_form')
                    solicitud = solicitud_form.save(commit=False)
                    solicitud.tipo_solicitud = TipoSolicitud.objects.get(
                        tipo_solicitud='ALTA')
                    solicitud.sistema = sistema
                    solicitud.save()
                    if attr_checked_cbx_solicitud_autorizada == 'checked':
                        if not licencia_form.is_valid():
                            raise DatosNoValidos(
                                'Error de validación el licencia_form')
                        licencia = licencia_form.save(commit=False)
                        licencia.solicitud = solicitud
                        licencia.save()
        except DatosNoValidos:
            notify = 'error/ERROR/Corrija los errores....Pruebe otra vez.'
            return render(
                request, self.template_name, {
                    'sistema_form': sistema_form,
                    'radio_formset': radio_formset,
                    'tipo_sistema': tipo_sistema,
                    'solicitud_form': solicitud_form,
                    'licencia_form': licencia_form,
                    'attr_checked_cbx_solicitud_enviada':
                    attr_checked_cbx_solicitud_enviada,
                    'attr_checked_cbx_solicitud_autorizada':
                    attr_checked_cbx_solicitud_autorizada,
                    'fecha_ultima_sol': '01/01/0001',
                    'fecha_ultima_lic': '0001-01-01',
                    'notify': notify
                })
        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:
            # este se ejecuta si no hay ninguna exception dentro del try
            # Si el sistema esta en uso redireccionara aa la pagina Lista Sistemas con el argumento 1 para que cargue
            # los sistemas que estan en uso y sino el argumnto sera 0 pra que cargue los sistema previstos a instalar
            # ademas eviara email con notificaciones a los usuarios subcriptos
            nuevo_sistema.delay(sistema.id)
            ir_a_sistemas_en_uso_o_sistemas_previstos_a_istalar = 1 if sistema_form.cleaned_data[
                'esta_en_uso'] else 0
            notify = 'success/ACEPTADO/El sistema se guardó correctamete...'
            if 'nbtn_guardar_y_listar' in request.POST:
                return redirect(reverse(
                    'espectro:listado sistemas',
                    args={ir_a_sistemas_en_uso_o_sistemas_previstos_a_istalar})
                                + '?notify={}'.format(notify),
                                permanent=True)
            return redirect(
                reverse('espectro:nuevo_sistema') +
                '?notify={}'.format(notify))