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 })
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': '' })
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 })
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 })
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))