def delete(self, request, *args, **kwargs): sid = transaction.savepoint() try: association = Association.objects.get( id=UserToken.get_association_id(request.session)) if Enterprise.objects.filter(headquar__association_id=UserToken.get_association_id(request.session)).count() == 1: raise Exception( (u"Asociación <b>%(name)s</b> no puede quedar sin ninguna sede asociada.") % {"name": association.name}) d = self.get_object() # rastrear dependencias deps, msg = get_dep_objects(d) if deps: messages.warning(self.request, _('Cannot delete %(name)s') % { "name": capfirst(force_text(self.model._meta.verbose_name)) + ' "' + force_text(d) + '"' }) raise Exception(msg) d.delete() msg = _('The %(name)s "%(obj)s" was deleted successfully.') % { 'name': capfirst(force_text(self.model._meta.verbose_name)), 'obj': force_text(d) } if not d.id: messages.success(self.request, msg) log.warning(msg, extra=log_params(self.request)) except Exception, e: try: transaction.savepoint_rollback(sid) except: pass messages.error(request, e) log.warning(force_text(e), extra=log_params(self.request))
def get_info(request): """ Obtiene """ info = "Backend" if UserToken.get_headquar_id(request.session): try: sede = Headquar.objects.get(id=UserToken.get_headquar_id(request.session)) info = "%s-%s" % (sede.enterprise.name, sede.name) except: messages.error(request, ("Sede no se encuentra en la base de datos.")) return info
def dispatch(self, request, *args, **kwargs): key = self.kwargs.get('pk', None) if key: pk = SecurityKey.is_valid_key(request, key, 'enterprise_upd') if not pk: return HttpResponseRedirect(self.success_url) self.kwargs['pk'] = pk try: self.get_object() except Exception as e: messages.error(self.request, e) return HttpResponseRedirect(self.success_url) else: self.kwargs['pk'] = UserToken.get_enterprise_id(request.session) self.success_url = reverse_lazy('space:enterprise-edit_current') msg = _(u'%s is not selected or not found in the database.') % _( 'Enterprise') try: self.get_object() except Exception as e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index')) return super(EnterpriseUpdateView, self).dispatch(request, *args, **kwargs)
def form_valid(self, form): sid = transaction.savepoint() try: self.object = form.save(commit=True) headquar = Headquar() headquar.name = self.request.POST.get("sede") headquar.association_id = UserToken.get_association_id( self.request.session) headquar.enterprise = self.object headquar.save() msg = _('The %(name)s "%(obj)s" was added successfully.') % { 'name': capfirst(force_text(self.model._meta.verbose_name)), 'obj': force_text(self.object) } if self.object.id: messages.success(self.request, msg) log.warning(msg, extra=log_params(self.request)) return super(EnterpriseCreateView, self).form_valid(form) except Exception, e: try: transaction.savepoint_rollback(sid) except: pass messages.success(self.request, e) log.warning(force_text(e), extra=log_params(self.request)) return super(EnterpriseCreateView, self).form_invalid(form)
def form_valid(self, form): sid = transaction.savepoint() try: self.object = form.save(commit=True) headquar = Headquar() headquar.name = self.request.POST.get("sede") headquar.association_id = UserToken.get_association_id( self.request.session) headquar.enterprise = self.object headquar.save() msg = _('The %(name)s "%(obj)s" was added successfully.') % { 'name': capfirst(force_text(self.model._meta.verbose_name)), 'obj': force_text(self.object) } if self.object.id: messages.success(self.request, msg) log.warning(msg, extra=log_params(self.request)) return super(EnterpriseCreateView, self).form_valid(form) except Exception as e: try: transaction.savepoint_rollback(sid) except: pass messages.success(self.request, e) log.warning(force_text(e), extra=log_params(self.request)) return super(EnterpriseCreateView, self).form_invalid(form)
def get_info(request): """ Obtiene """ info = "DentalCool" if UserToken.get_headquar_id(request.session): try: sede = Headquar.objects.get( id=UserToken.get_headquar_id(request.session)) info = "%s-%s" % (sede.enterprise.name, sede.name) except: messages.error(request, ("Sede no se encuentra en la base de datos.")) return info
def get_queryset(self): self.o = empty(self.request, 'o', '-id') self.f = empty(self.request, 'f', 'name') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter( enterprise_id=UserToken.get_enterprise_id(self.request.session) ).filter(**{column_contains: self.q}).order_by(self.o).distinct()
def dispatch(self, request, *args, **kwargs): enterprise_id = UserToken.get_enterprise_id(request.session) msg = _(u'%s is not selected or not found in the database.') % _( 'Enterprise') try: Enterprise.objects.get(pk=enterprise_id) except Exception, e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index'))
def get_queryset(self): self.o = empty(self.request, 'o', '-id') self.f = empty(self.request, 'f', 'name') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter( headquar__association_id=UserToken.get_association_id( self.request.session) ).annotate(num_sedes=Count("headquar")).filter( **{column_contains: self.q}).order_by(self.o).distinct()
def get_queryset(self): self.o = empty(self.request, 'o', '-id') self.f = empty(self.request, 'f', 'name') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter( enterprise_id=UserToken.get_enterprise_id( self.request.session)).filter(**{ column_contains: self.q }).order_by(self.o).distinct()
def dispatch(self, request, *args, **kwargs): self.kwargs['pk'] = UserToken.get_association_id(request.session) msg = _(u'%s is not selected or not found in the database.') % _( 'Association') try: self.get_object() except Exception, e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index'))
def form_valid(self, form): try: form.instance.association_id = UserToken.get_association_id( self.request.session) form.instance.enterprise_id = UserToken.get_enterprise_id( self.request.session) self.object = form.save(commit=True) msg = _('The %(name)s "%(obj)s" was added successfully.') % { 'name': capfirst(force_text(self.model._meta.verbose_name)), 'obj': force_text(self.object) } if self.object.id: messages.success(self.request, msg) log.warning(msg, extra=log_params(self.request)) return super(HeadquarCreateView, self).form_valid(form) except Exception, e: messages.error(self.request, e) log.warning(force_text(e), extra=log_params(self.request)) return super(HeadquarCreateView, self).form_invalid(form)
def get_queryset(self): self.o = empty(self.request, 'o', '-id') self.f = empty(self.request, 'f', 'name') self.q = empty(self.request, 'q', '') column_contains = u'%s__%s' % (self.f, 'contains') return self.model.objects.filter( headquar__association_id=UserToken.get_association_id( self.request.session)).annotate( num_sedes=Count("headquar")).filter(**{ column_contains: self.q }).order_by(self.o).distinct()
def form_valid(self, form): try: form.instance.association_id = UserToken.get_association_id( self.request.session) form.instance.enterprise_id = UserToken.get_enterprise_id( self.request.session) self.object = form.save(commit=True) msg = _('The %(name)s "%(obj)s" was added successfully.') % { 'name': capfirst(force_text(self.model._meta.verbose_name)), 'obj': force_text(self.object) } if self.object.id: messages.success(self.request, msg) log.warning(msg, extra=log_params(self.request)) return super(HeadquarCreateView, self).form_valid(form) except Exception as e: messages.error(self.request, e) log.warning(force_text(e), extra=log_params(self.request)) return super(HeadquarCreateView, self).form_invalid(form)
def delete(self, request, *args, **kwargs): sid = transaction.savepoint() try: association = Association.objects.get( id=UserToken.get_association_id(request.session)) if Enterprise.objects.filter( headquar__association_id=UserToken.get_association_id( request.session)).count() == 1: raise Exception(( u"Asociación <b>%(name)s</b> no puede quedar sin ninguna sede asociada." ) % {"name": association.name}) d = self.get_object() # rastrear dependencias deps, msg = get_dep_objects(d) if deps: messages.warning( self.request, _('Cannot delete %(name)s') % { "name": capfirst(force_text(self.model._meta.verbose_name)) + ' "' + force_text(d) + '"' }) raise Exception(msg) d.delete() msg = _('The %(name)s "%(obj)s" was deleted successfully.') % { 'name': capfirst(force_text(self.model._meta.verbose_name)), 'obj': force_text(d) } if not d.id: messages.success(self.request, msg) log.warning(msg, extra=log_params(self.request)) except Exception as e: try: transaction.savepoint_rollback(sid) except: pass messages.error(request, e) log.warning(force_text(e), extra=log_params(self.request)) return HttpResponseRedirect(self.success_url)
def dispatch(self, request, *args, **kwargs): enterprise_id = UserToken.get_enterprise_id(request.session) msg = _(u'%s is not selected or not found in the database.') % _( 'Enterprise') try: Enterprise.objects.get(pk=enterprise_id) except Exception as e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index')) return super(HeadquarListView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): association_id = UserToken.get_association_id(request.session) msg = _(u'%s is not selected or not found in the database.') % _( 'Association') try: Association.objects.get(pk=association_id) except Exception as e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index')) return super(EnterpriseListView, self).dispatch(request, *args, **kwargs)
def dispatch(self, request, *args, **kwargs): self.kwargs['pk'] = UserToken.get_association_id(request.session) msg = _(u'%s is not selected or not found in the database.') % _( 'Association') try: self.get_object() except Exception as e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index')) return super(AssociationUpdateView, self).dispatch(request, *args, **kwargs)
def __init__(self, *args, **kwargs): self.request = kwargs.pop('request', None) self.object = kwargs.pop('object', None) super(UserForm, self).__init__(*args, **kwargs) # print self.request.user #self.fields['hidden_field'] = forms.CharField(widget=forms.HiddenInput()) # print self.hidden_field headquar = Headquar.objects.get( id=UserToken.get_headquar_id(self.request.session)) solution_enterprise = Solution.objects.get( id=headquar.enterprise.solution.id) solution_association = Solution.objects.get( id=headquar.association.solution.id) module_list = Module.objects.filter( Q(solutions=solution_enterprise) | Q(solutions=solution_association), is_active=True).distinct() # trae los objetos relacionados sad.Module group_perm_list = Group.objects.filter( module_set__in=module_list).order_by("-id").distinct() # print group_perm_list # print "=====================" # pero hay que adornarlo de la forma Module>Group group_list_by_module = [] # solo para verificar que el Group no se repita si este está en dos o # más módulos group_list_by_module_unique_temp = [] for module in module_list: for group in Group.objects.filter(module_set=module).distinct(): if len(group_list_by_module) == 0: group_list_by_module.append({ "group": group, "module": module, }) group_list_by_module_unique_temp.append(group) else: if group not in group_list_by_module_unique_temp: group_list_by_module.append({ "group": group, "module": module, }) group_list_by_module_unique_temp.append(group) groups_final = {} for perm in group_list_by_module: groups_final[perm['group'].id] = '%s> %s' % (perm['module'].name, perm['group'].name) # print groups_final.items() ''' self.fields['hgroups'] = forms.ModelMultipleChoiceField( queryset=Group.objects.filter(module_set__in=module_list).order_by("-id").distinct() ) self.fields['hgroups'].initial=Group.objects.filter(userheadquar__headquar__id=headquar.id, userheadquar__user__id=2).distinct() ''' self.fields['hgroups'] = forms.MultipleChoiceField( label=u'%s %s' % (capfirst(_(u'groups')), capfirst(_(u'Headquar'))), required=False, choices=groups_final.items(), help_text=u'<small class="help-error"></small> %s' % _(u' '), ) if self.object: self.fields['hgroups'].initial = [ (e.id) for e in Group.objects.filter( userheadquar__headquar__id=headquar.id, userheadquar__user__id=self.object.id).distinct() ] self.fields['egroups'] = forms.MultipleChoiceField( label=u'%s %s' % (capfirst(_(u'groups')), capfirst(_(u'Enterprise'))), required=False, choices=groups_final.items(), help_text=u'<small class="help-error"></small> %s' % _(u' '), ) if self.object: self.fields['egroups'].initial = [ (e.id) for e in Group.objects.filter( userenterprise__enterprise__id=headquar.enterprise.id, userenterprise__user__id=self.object.id).distinct() ] self.fields['agroups'] = forms.MultipleChoiceField( label=u'%s %s' % (capfirst(_(u'groups')), capfirst(_(u'Association'))), required=False, choices=groups_final.items(), help_text=u'<small class="help-error"></small> %s' % _(u' '), ) if self.object: self.fields['agroups'].initial = [ (e.id) for e in Group.objects.filter( userassociation__association__id=headquar.association.id, userassociation__user__id=self.object.id).distinct() ] self.fields['password1'] = forms.CharField( label=capfirst(_(u'Password')), required=False, widget=forms.PasswordInput, initial='', help_text=u'<small class="help-error"></small> %s' % _(u' '), ) self.fields['password2'] = forms.CharField( label=capfirst(_(u'Password confirmation')), required=False, widget=forms.PasswordInput, initial='', help_text=u'<small class="help-error"></small> %s' % _(u'Enter the same password as above, for verification.'), ) self.fields['first_name'] = forms.CharField( label=capfirst(_(u'first name')), required=True, help_text=u'<small class="help-error"></small> %s' % _(u' '), ) self.fields['last_name'] = forms.CharField( label=capfirst(_(u'last name')), required=True, help_text=u'<small class="help-error"></small> %s' % _(u' '), ) self.fields['identity_type'] = forms.ChoiceField( label=capfirst(_(u'Identity type')), required=True, # widget=forms.RadioSelect(), choices=IDENTITY_TYPE_CHOICES, help_text=u'<small class="help-error"></small> %s' % _(u' '), ) self.fields['identity_num'] = forms.CharField( label=capfirst(_(u'number')), required=False, help_text=u'<small class="help-error"></small> %s' % _(u' '), ) self.fields['photo'] = forms.ImageField( label=capfirst(_(u'Photo')), required=False, initial='persons/default.png', help_text=u'<small class="help-error"></small> %s' % _(u'Available formats are JPG, GIF, and PNG.'), ) self.helper = FormHelper() self.helper.layout = Layout( Field('person_id', ), TabHolder( Tab( _('Personal Info'), Row( Div(Field('first_name', ), css_class='col-md-6'), Div(Field('last_name', ), css_class='col-md-6'), ), Row( Div(Field('identity_type', ), css_class='col-md-6'), Div(Field('identity_num', ), css_class='col-md-6'), ), ), Tab( _('Account Info'), Row( Div(Field('username', autofocus=True, autocomplete='off', css_class='input-required'), css_class='col-md-6'), Div(Field('email', ), css_class='col-md-6'), ), Row( Div(Field('password1', autocomplete='off'), css_class='col-md-6'), Div(Field('password2', autocomplete='off'), css_class='col-md-6'), ), Row(Div(Field('hgroups'), css_class='col-md-6'), ), Row( Div(Field('egroups'), css_class='col-md-6'), Div(Field('agroups'), css_class='col-md-6'), ), ), Tab( _('Image'), Row(Div(Field('photo'), css_class='col-md-6'), ), ), ), Row(FormActions( smtSave(), btnCancel(), btnReset(), ), ), )
def load_access(request, headquar_id, module_id): if request.is_ajax(): return HttpResponse( "ESTA OPERACION NO DEBE SER CARGADO CON AJAX, Presione F5") else: try: try: headquar = Headquar.objects.get(id=headquar_id) except: messages.error( request, _(u'%s is not selected or not found in the database.') % _('Headquar')) return HttpResponseRedirect("/accounts/") try: module = Module.objects.get(id=module_id) except: messages.error( request, _(u'%s is not selected or not found in the database.') % _('Module')) return HttpResponseRedirect("/accounts/") # vovler a verificar si tiene permisos if not request.user.is_superuser: # obteniendo las sedes a la cual tiene acceso headquar_list = Headquar.objects.filter( userheadquar__user__id=request.user.id).distinct() if headquar not in headquar_list: raise Exception( _(u'Permission denied. You don\'t have permission to %s.' % (headquar.enterprise.name + ' ' + headquar.name))) # obteniendo los módulos a la cual tiene acceso group_list = Group.objects.filter( userheadquar__headquar__id=headquar.id, userheadquar__user__id=request.user.id).distinct() module_list = Module.objects.filter( groups__in=group_list).distinct() if module not in module_list: raise Exception( _(u'Permission denied. You don\'t have permission to %s.' % (module.name + ' ' + headquar.enterprise.name + _(' in ') + headquar.name))) # cargando permisos de datos para el usuario UserToken.set_association_id(request, headquar.association.id) UserToken.set_enterprise_id(request, headquar.enterprise.id) UserToken.set_headquar_id(request, headquar.id) try: user = User.objects.get(pk=request.user.id) if user.id: user.last_headquar_id = headquar_id user.last_module_id = module_id user.save() except: ''' person = Person(first_name=request.user.first_name, last_name=request.user.last_name) person.save() profile = Profile(user=request.user, last_headquar_id=headquar_id, last_module_id=module_id) profile.person = person profile.save() ''' pass # messages.info(request, ("La sede %(name)s ha sido cargado correctamente.") % {"name":headquar_id} ) if BACKEND == module.module: return HttpResponseRedirect("/mod_backend/dashboard/") if HOTEL == module.module: return HttpResponseRedirect("/mod_hotel/dashboard") # if VENTAS == module.module: # return HttpResponseRedirect( "/mod_ventas/dashboard/") # if PRO == module.module: # return HttpResponseRedirect( "/mod_pro/dashboard/") # TODO agregue aqui su nuevo modulo else: messages.error(request, 'Not implemented %s') % _('Module') #raise NotImplementedError('subclasses of AbstractBaseUser must provide a get_full_name() module') return HttpResponseRedirect("/accounts/") except Exception as e: messages.error(request, e) return HttpResponseRedirect("/accounts/")
@method_decorator(permission_resource_required) def dispatch(self, request, *args, **kwargs): key = self.kwargs.get('pk', None) if key: pk = SecurityKey.is_valid_key(request, key, 'enterprise_upd') if not pk: return HttpResponseRedirect(self.success_url) self.kwargs['pk'] = pk try: self.get_object() except Exception, e: messages.error(self.request, e) return HttpResponseRedirect(self.success_url) else: self.kwargs['pk'] = UserToken.get_enterprise_id(request.session) self.success_url = reverse_lazy('space:enterprise-edit_current') msg = _(u'%s is not selected or not found in the database.') % _( 'Enterprise') try: self.get_object() except Exception, e: messages.error(self.request, e) messages.warning(self.request, msg) return HttpResponseRedirect(reverse_lazy('accounts:index')) return super(EnterpriseUpdateView, self).dispatch(request, *args, **kwargs) def get_context_data(self, **kwargs): context = super(EnterpriseUpdateView, self).get_context_data(**kwargs) context['opts'] = self.model._meta
def __init__(self, *args, **kwargs): self.request = kwargs.pop('request', None) self.object = kwargs.pop('object', None) super(UserForm, self).__init__(*args, **kwargs) # print self.request.user #self.fields['hidden_field'] = forms.CharField(widget=forms.HiddenInput()) # print self.hidden_field headquar = Headquar.objects.get( id=UserToken.get_headquar_id(self.request.session)) solution_enterprise = Solution.objects.get( id=headquar.enterprise.solution.id) solution_association = Solution.objects.get( id=headquar.association.solution.id) module_list = Module.objects.filter(Q(solutions=solution_enterprise) | Q( solutions=solution_association), is_active=True).distinct() # trae los objetos relacionados sad.Module group_perm_list = Group.objects.filter( module_set__in=module_list).order_by("-id").distinct() # print group_perm_list # print "=====================" # pero hay que adornarlo de la forma Module>Group group_list_by_module = [] # solo para verificar que el Group no se repita si este está en dos o # más módulos group_list_by_module_unique_temp = [] for module in module_list: for group in Group.objects.filter(module_set=module).distinct(): if len(group_list_by_module) == 0: group_list_by_module.append({ "group": group, "module": module, }) group_list_by_module_unique_temp.append(group) else: if group not in group_list_by_module_unique_temp: group_list_by_module.append({ "group": group, "module": module, }) group_list_by_module_unique_temp.append(group) groups_final = {} for perm in group_list_by_module: groups_final[perm['group'].id] = '%s> %s' % ( perm['module'].name, perm['group'].name) # print groups_final.items() ''' self.fields['hgroups'] = forms.ModelMultipleChoiceField( queryset=Group.objects.filter(module_set__in=module_list).order_by("-id").distinct() ) self.fields['hgroups'].initial=Group.objects.filter(userheadquar__headquar__id=headquar.id, userheadquar__user__id=2).distinct() ''' self.fields['hgroups'] = forms.MultipleChoiceField( label=u'%s %s' % (capfirst(_(u'groups')), capfirst(_(u'Headquar'))), required=False, choices=groups_final.items(), help_text=u'<small class="help-error"></small> %s' % _( u' '), ) if self.object: self.fields['hgroups'].initial = [(e.id) for e in Group.objects.filter( userheadquar__headquar__id=headquar.id, userheadquar__user__id=self.object.id).distinct()] self.fields['egroups'] = forms.MultipleChoiceField( label=u'%s %s' % (capfirst(_(u'groups')), capfirst(_(u'Enterprise'))), required=False, choices=groups_final.items(), help_text=u'<small class="help-error"></small> %s' % _( u' '), ) if self.object: self.fields['egroups'].initial = [(e.id) for e in Group.objects.filter( userenterprise__enterprise__id=headquar.enterprise.id, userenterprise__user__id=self.object.id).distinct()] self.fields['agroups'] = forms.MultipleChoiceField( label=u'%s %s' % (capfirst(_(u'groups')), capfirst(_(u'Association'))), required=False, choices=groups_final.items(), help_text=u'<small class="help-error"></small> %s' % _( u' '), ) if self.object: self.fields['agroups'].initial = [(e.id) for e in Group.objects.filter( userassociation__association__id=headquar.association.id, userassociation__user__id=self.object.id).distinct()] self.fields['password1'] = forms.CharField( label=capfirst(_(u'Password')), required=False, widget=forms.PasswordInput, initial='', help_text=u'<small class="help-error"></small> %s' % _( u' '), ) self.fields['password2'] = forms.CharField( label=capfirst(_(u'Password confirmation')), required=False, widget=forms.PasswordInput, initial='', help_text=u'<small class="help-error"></small> %s' % _( u'Enter the same password as above, for verification.'), ) self.fields['first_name'] = forms.CharField( label=capfirst(_(u'first name')), required=True, help_text=u'<small class="help-error"></small> %s' % _( u' '), ) self.fields['last_name'] = forms.CharField( label=capfirst(_(u'last name')), required=True, help_text=u'<small class="help-error"></small> %s' % _( u' '), ) self.fields['identity_type'] = forms.ChoiceField( label=capfirst(_(u'Identity type')), required=True, # widget=forms.RadioSelect(), choices=IDENTITY_TYPE_CHOICES, help_text=u'<small class="help-error"></small> %s' % _( u' '), ) self.fields['identity_num'] = forms.CharField( label=capfirst(_(u'number')), required=False, help_text=u'<small class="help-error"></small> %s' % _( u' '), ) self.fields['photo'] = forms.ImageField( label=capfirst(_(u'Photo')), required=False, initial='persons/default.png', help_text=u'<small class="help-error"></small> %s' % _( u'Available formats are JPG, GIF, and PNG.'), ) self.helper = FormHelper() self. helper.layout = Layout( Field('person_id',), TabHolder( Tab(_('Personal Info'), Row( Div(Field('first_name',), css_class='col-md-6'), Div(Field('last_name', ), css_class='col-md-6'), ), Row( Div(Field('identity_type',), css_class='col-md-6'), Div(Field('identity_num',), css_class='col-md-6'), ), ), Tab(_('Account Info'), Row( Div(Field('username', autofocus=True, autocomplete='off', css_class='input-required'), css_class='col-md-6'), Div(Field('email', ), css_class='col-md-6'), ), Row( Div(Field('password1', autocomplete='off'), css_class='col-md-6'), Div(Field('password2', autocomplete='off'), css_class='col-md-6'), ), Row( Div(Field('hgroups'), css_class='col-md-6'), ), Row( Div(Field('egroups'), css_class='col-md-6'), Div(Field('agroups'), css_class='col-md-6'), ), ), Tab(_('Image'), Row( Div(Field('photo'), css_class='col-md-6'), ), ), ), Row( FormActions( smtSave(), btnCancel(), btnReset(), ), ), )
def load_access(request, headquar_id, module_id): if request.is_ajax(): return HttpResponse("ESTA OPERACION NO DEBE SER CARGADO CON AJAX, Presione F5") else: try: try: headquar = Headquar.objects.get(id=headquar_id) except: messages.error( request, _(u'%s is not selected or not found in the database.') % _('Headquar')) return HttpResponseRedirect("/accounts/") try: module = Module.objects.get(id=module_id) except: messages.error( request, _(u'%s is not selected or not found in the database.') % _('Module')) return HttpResponseRedirect("/accounts/") # vovler a verificar si tiene permisos if not request.user.is_superuser: # obteniendo las sedes a la cual tiene acceso headquar_list = Headquar.objects.filter( userheadquar__user__id=request.user.id).distinct() if headquar not in headquar_list: raise Exception( _(u'Permission denied. You don\'t have permission to %s.' % (headquar.enterprise.name + ' ' + headquar.name))) # obteniendo los módulos a la cual tiene acceso group_list = Group.objects.filter( userheadquar__headquar__id=headquar.id, userheadquar__user__id=request.user.id).distinct() module_list = Module.objects.filter( groups__in=group_list).distinct() if module not in module_list: raise Exception( _(u'Permission denied. You don\'t have permission to %s.' % (module.name + ' ' + headquar.enterprise.name + _(' in ')+ headquar.name))) # cargando permisos de datos para el usuario UserToken.set_association_id(request, headquar.association.id) UserToken.set_enterprise_id(request, headquar.enterprise.id) UserToken.set_headquar_id(request, headquar.id) try: user = User.objects.get(pk=request.user.id) if user.id: user.last_headquar_id = headquar_id user.last_module_id = module_id user.save() except: ''' person = Person(first_name=request.user.first_name, last_name=request.user.last_name) person.save() profile = Profile(user=request.user, last_headquar_id=headquar_id, last_module_id=module_id) profile.person = person profile.save() ''' pass # messages.info(request, ("La sede %(name)s ha sido cargado correctamente.") % {"name":headquar_id} ) if BACKEND == module.module: return HttpResponseRedirect("/mod_backend/dashboard/") if HOTEL == module.module: return HttpResponseRedirect( "/mod_hotel/dashboard") # if VENTAS == module.module: # return HttpResponseRedirect( "/mod_ventas/dashboard/") # if PRO == module.module: # return HttpResponseRedirect( "/mod_pro/dashboard/") # TODO agregue aqui su nuevo modulo else: messages.error(request, 'Not implemented %s') %_('Module') #raise NotImplementedError('subclasses of AbstractBaseUser must provide a get_full_name() module') return HttpResponseRedirect("/accounts/") except Exception as e: messages.error(request, e) return HttpResponseRedirect("/accounts/")
def load(request, menu_module): """ Carga el menu del usuario Entrada:: menu_module=BACKEND Salida:: menu_item_list[menu] """ Menus.menu_list = [] Menus.menu_item_list = {} Menus.menu_module = menu_module user = request.user print "\n\n\n" # print 'Permisos del User a travez de sus Groups' # print user.get_group_permissions() # no sirve pk tambien debemos comparar con la sede # if not UserToken.get_headquar_id(request.session): # return HttpResponse("Sede no seleccionada, seleccione en la Página de inicio para cargar el menú") # los Grupos del User según su espacio actual permission_list = [] if not request.user.is_superuser: try: headquar = Headquar.objects.get( id=UserToken.get_headquar_id(request.session)) group_id_list_by_user_and_headquar = list(col["id"] for col in Group.objects.values("id").filter( userheadquar__headquar__id=headquar.id, userheadquar__user__id=user.id).distinct()) group_id_list_by_user_and_enterprise = list(col["id"] for col in Group.objects.values("id").filter( userenterprise__enterprise__id=headquar.enterprise.id, userenterprise__user__id=user.id).distinct()) group_id_list_by_user_and_association = list(col["id"] for col in Group.objects.values("id").filter( userassociation__association__id=headquar.association.id, userassociation__user__id=user.id).distinct()) group_id_list_by_user_and_hea = list( set(group_id_list_by_user_and_headquar + group_id_list_by_user_and_enterprise + group_id_list_by_user_and_association)) # print 'Groups del User a travez de su espacio actual' # print group_id_list_by_user_and_hea # print 'Permisos del User a travez de su espacio actual' # compara con los Group del user permission_list = Permission.objects.filter( group__in=group_id_list_by_user_and_hea).distinct() except: print "Sede no seleccionado" # headquar=Headquar.objects.filter(userheadquar__user__id=request.user.id).distinct().first() pass if request.user.is_superuser: permission_list = [] # si es uperuser mostrarme todo los menús menu = Menu() #permission_list = [] # obtengo los hijos y luego saco sus padres, esto es para no mostrar un # menu sin items menu_item_list_t = Menu.objects.filter(Q(permission__in=permission_list) | Q( id__isnull=True if permission_list else False), module=menu_module, is_active=True).order_by("pos") Menus.menu_list = Menu.objects.filter( menu__in=menu_item_list_t, module=menu_module, is_active=True).order_by("pos").distinct() #print Menus.menu_list if Menus.menu_list: for menu in Menus.menu_list: Menus.menu_item_list[menu.title] = Menu.objects.filter(Q(permission__in=permission_list) | Q( id__isnull=True if permission_list else False), parent_id=menu.id, module=menu_module, is_active=True).order_by("pos") # .lower().replace(" ","_") #print Menus.menu_item_list return ""
def load(request, menu_module): """ Carga el menu del usuario Entrada:: menu_module=BACKEND Salida:: menu_item_list[menu] """ Menus.menu_list = [] Menus.menu_item_list = {} Menus.menu_module = menu_module user = request.user print ("\n\n\n") # print 'Permisos del User a travez de sus Groups' # print user.get_group_permissions() # no sirve pk tambien debemos comparar con la sede # if not UserToken.get_headquar_id(request.session): # return HttpResponse("Sede no seleccionada, seleccione en la Página de inicio para cargar el menú") # los Grupos del User según su espacio actual permission_list = [] if not request.user.is_superuser: try: headquar = Headquar.objects.get( id=UserToken.get_headquar_id(request.session)) group_id_list_by_user_and_headquar = list(col["id"] for col in Group.objects.values("id").filter( userheadquar__headquar__id=headquar.id, userheadquar__user__id=user.id).distinct()) group_id_list_by_user_and_enterprise = list(col["id"] for col in Group.objects.values("id").filter( userenterprise__enterprise__id=headquar.enterprise.id, userenterprise__user__id=user.id).distinct()) group_id_list_by_user_and_association = list(col["id"] for col in Group.objects.values("id").filter( userassociation__association__id=headquar.association.id, userassociation__user__id=user.id).distinct()) group_id_list_by_user_and_hea = list( set(group_id_list_by_user_and_headquar + group_id_list_by_user_and_enterprise + group_id_list_by_user_and_association)) # print 'Groups del User a travez de su espacio actual' # print group_id_list_by_user_and_hea # print 'Permisos del User a travez de su espacio actual' # compara con los Group del user permission_list = Permission.objects.filter( group__in=group_id_list_by_user_and_hea).distinct() except: print ("Sede no seleccionado") # headquar=Headquar.objects.filter(userheadquar__user__id=request.user.id).distinct().first() pass if request.user.is_superuser: permission_list = [] # si es uperuser mostrarme todo los menús menu = Menu() #permission_list = [] # obtengo los hijos y luego saco sus padres, esto es para no mostrar un # menu sin items menu_item_list_t = Menu.objects.filter(Q(permission__in=permission_list) | Q( id__isnull=True if permission_list else False), module=menu_module, is_active=True).order_by("pos") Menus.menu_list = Menu.objects.filter( menu__in=menu_item_list_t, module=menu_module, is_active=True).order_by("pos").distinct() #print Menus.menu_list if Menus.menu_list: for menu in Menus.menu_list: Menus.menu_item_list[menu.title] = Menu.objects.filter(Q(permission__in=permission_list) | Q( id__isnull=True if permission_list else False), parent_id=menu.id, module=menu_module, is_active=True).order_by("pos") # .lower().replace(" ","_") #print Menus.menu_item_list return ""