Пример #1
0
    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))
Пример #2
0
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
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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)
Пример #6
0
    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)
Пример #7
0
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
Пример #8
0
 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()
Пример #9
0
 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'))
Пример #10
0
 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()
Пример #11
0
 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()
Пример #12
0
 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'))
Пример #13
0
    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)
Пример #14
0
 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()
Пример #15
0
    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)
Пример #16
0
    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)
Пример #17
0
    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)
Пример #18
0
    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)
Пример #19
0
    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)
Пример #20
0
    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(),
            ), ),
        )
Пример #21
0
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/")
Пример #22
0
    @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
Пример #23
0
    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(),
                ),
            ),
        )
Пример #24
0
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/")
Пример #25
0
    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 ""
Пример #26
0
    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 ""