Esempio n. 1
0
class Role(models.Model):
    user = models.ForeignKey('admin.User',
                             verbose_name='Usuário',
                             composition=True)
    group = models.ForeignKey('admin.Group', verbose_name='Grupo')
    scope = models.ForeignKey('admin.Scope',
                              verbose_name='Scope',
                              null=True,
                              blank=True)
    active = models.BooleanField(verbose_name='Active', default=True)
    fieldsets = (
        ('Dados Gerais', {
            'fields': ('user', 'group')
        }),
        ('Scope', {
            'fields': ('scope', 'active')
        }),
    )

    objects = models.Manager()

    class Meta:
        verbose_name = 'Função'
        verbose_name_plural = 'Funções'
        can_admin = 'Gerenciador de Usuários'

    def save(self, *args, **kwargs):
        super(Role, self).save(*args, **kwargs)
        if self.active:
            self.user.groups.add(self.group)

    def __str__(self):
        return '{}'.format(self.group)
Esempio n. 2
0
class Log(models.Model):
    ADD = 1
    EDIT = 2
    DELETE = 3

    OPERATION_CHOICES = [[ADD, u'Cadastro'], [EDIT, u'Edição'], [DELETE, u'Exclusão']]

    content_type = models.ForeignKey(ContentType, verbose_name=u'Objeto', filter=True)
    operation = models.IntegerField(verbose_name=u'Operação', choices=OPERATION_CHOICES, filter=True)
    user = models.ForeignKey('admin.User', filter=True)
    date = models.DateTimeField(verbose_name=u'Data/Hora', auto_now=True, filter=True)
    object_id = models.IntegerField(verbose_name=u'Identificador', search=True)
    object_description = models.CharField(verbose_name=u'Descrição do Objeto')
    content = models.TextField(verbose_name=u'Conteúdo', null=True)

    fieldsets = (
        (u'Dados Gerais', {'fields': (
        ('content_type', 'operation'), ('user', 'date'), ('object_id', 'object_description'), 'get_tags')}),
        (u'Índices', {'relations': ('logindex_set',)}),
    )

    objects = models.Manager()

    class Meta:
        verbose_name = u'Log'
        verbose_name_plural = u'Logs'
        icon = 'fa-history'
        list_per_page = 25

    def __unicode__(self):
        return 'Log #%s' % self.pk

    def can_add(self):
        return False

    def can_edit(self):
        return False

    def can_delete(self):
        return False

    def get_action_description(self):
        return (u'adicionou', u'editou', u'removeu')[self.operation - 1]

    def get_style(self):
        return ('success', 'info', 'danger')[self.operation - 1]

    def get_icon(self):
        return ('plus', 'pencil', 'trash-o')[self.operation - 1]

    @meta(u'Tags', formatter='log_tags')
    def get_tags(self):
        return json.loads(self.content)

    def create_indexes(self, instance):
        for log_index in get_metadata(instance.__class__, 'logging', (), iterable=True):
            index_object = getattr2(instance, log_index)
            if index_object:
                index_content_type = ContentType.objects.get_for_model(index_object.__class__)
                LogIndex.objects.create(log=self, content_type=index_content_type, object_id=index_object.pk)
Esempio n. 3
0
class Log(models.Model):
    ADD = 1
    EDIT = 2
    DELETE = 3

    OPERATION_CHOICES = [[ADD, _('Add')], [EDIT, _('Edit')], [DELETE, _('Delete')]]

    content_type = models.ForeignKey(ContentType, verbose_name=_('Content Type'), filter=True)
    operation = models.IntegerField(verbose_name=_('Operation'), choices=OPERATION_CHOICES, filter=True)
    user = models.ForeignKey('admin.User', filter=True, verbose_name=_('User'))
    date = models.DateTimeField(verbose_name=_('Date/Time'), auto_now=True, filter=True)
    object_id = models.IntegerField(verbose_name=_('Identifier'), search=True)
    object_description = models.CharField(verbose_name=_('Object Description'))
    content = models.TextField(verbose_name=_('Content'), null=True)

    fieldsets = (
        (_('General Data'), {'fields': (
            ('content_type', 'operation'), ('user', 'date'), ('object_id', 'object_description'), 'get_tags')}),
        (_('Indexes'), {'relations': ('logindex_set',)}),
    )

    objects = models.Manager()

    class Meta:
        verbose_name = _('Log')
        verbose_name_plural = _('Logs')
        icon = 'fa-history'
        list_per_page = 25

    def __str__(self):
        return 'Log #{}'.format(self.pk)

    def can_add(self):
        return False

    def can_edit(self):
        return False

    def can_delete(self):
        return False

    def get_action_description(self):
        return (_('added'), _('edited'), _('deleted'))[self.operation - 1]

    def get_style(self):
        return ('success', 'info', 'danger')[self.operation - 1]

    def get_icon(self):
        return ('plus', 'pencil', 'trash-o')[self.operation - 1]

    @meta('Tags')
    def get_tags(self):
        return json.loads(self.content)

    def create_indexes(self, instance):
        for log_index in get_metadata(instance.__class__, 'logging', (), iterable=True):
            index_object = getattr2(instance, log_index)
            if index_object:
                index_content_type = ContentType.objects.get_for_model(index_object.__class__)
                LogIndex.objects.create(log=self, content_type=index_content_type, object_id=index_object.pk)
Esempio n. 4
0
class Role(models.Model):
    user = models.ForeignKey('admin.User', verbose_name=u'Usuário', composition=True)
    group = models.ForeignKey('admin.Group', verbose_name=u'Grupo')
    organizations = models.ManyToManyField(Organization, through='admin.OrganizationRole', verbose_name=u'Organizações', exclude=True, blank=True)
    units = models.ManyToManyField(Unit, through='admin.UnitRole', verbose_name=u'Unidades', exclude=True, blank=True)

    fieldsets = (
        (u'Dados Gerais', {'fields': ('user', 'group')}),
        (u'Organizações', {'fields': ('organizations',)}),
        (u'Unidades', {'fields': ('units',)}),
    )

    objects = models.Manager()

    class Meta:
        verbose_name = u'Função'
        verbose_name_plural = u'Funções'
        db_table = 'admin_user_groups'
        managed = False
        list_display = role_list_display
        can_admin = u'Gerenciador de Usuários'

    def __unicode__(self):
        return u'%s' % self.group

    @meta(u'Organizações')
    def get_organizations(self):
        return self.organizations.all()

    @meta(u'Unidades')
    def get_units(self):
        return self.units.all()

    def can_edit(self):
        return False

    def can_add(self):
        return True

    def can_define_organizations(self):
        return Organization.objects.exclude(pk=0).exists()

    def can_define_roles(self):
        return Unit.objects.exclude(pk=0).exists()

    @action(u'Definir Organizações', condition='can_define_organizations', message=u'Organização(ões) definida(s) com sucesso.', inline=True)
    def define_organizations(self, organizations):
        self.organizationrole_set.all().delete()
        for organization in organizations:
            OrganizationRole.objects.get_or_create(role=self, organization=organization)

    @action(u'Definir Unidades', condition='can_define_roles', message=u'Unidade(s) definida(s) com sucesso.', inline=True)
    def define_units(self, units):
        self.unitrole_set.all().delete()
        for unit in units:
            UnitRole.objects.get_or_create(role=self, unit=unit)
Esempio n. 5
0
class Group(Group):
    class Meta:
        verbose_name = _('Group')
        verbose_name_plural = _('Groups')
        proxy = True
        icon = 'fa-users'
        add_form = 'GroupForm'

    fieldsets = (
        (_('General Data'), {'fields': ('name',)}),
        ('{}::{}'.format(_('Permissions'), _('Permissions')), {'relations': ('permissions',)}),
        ('{}::{}'.format(_('Users'), _('Users')), {'relations': ('user_set',)}),
    )

    objects = models.Manager()
Esempio n. 6
0
class Group(Group):
    class Meta:
        verbose_name = u'Grupo'
        verbose_name_plural = u'Grupos'
        proxy = True
        icon = 'fa-users'
        add_form = 'GroupForm'

    fieldsets = (
        (u'Dados Gerais', {'fields': ('name',)}),
        (u'Permissões::Permissões', {'relations': ('permissions',)}),
        (u'Usuários::Usuários', {'relations': ('user_set',)}),
    )

    objects = models.Manager()
Esempio n. 7
0
class Role(models.Model):
    user = models.ForeignKey('admin.User', verbose_name=_('User'), composition=True)
    group = models.ForeignKey('admin.Group', verbose_name=_('Group'))
    scope = models.ForeignKey('admin.Scope', verbose_name=_('Scope'), null=True, blank=True)
    active = models.BooleanField(verbose_name=_('Active'), default=True)
    fieldsets = (
        (_('General Data'), {'fields': ('user', 'group')}),
        (_('Scope'), {'fields': ('scope', 'active')}),
    )

    objects = models.Manager()

    class Meta:
        verbose_name = _('Role')
        verbose_name_plural = _('Roles')
        can_admin = _('User Manager')

    def save(self, *args, **kwargs):
        super(Role, self).save(*args, **kwargs)
        if self.active:
            self.user.groups.add(self.group)

    def __str__(self):
        return '{}'.format(self.group)
Esempio n. 8
0
class Log(models.Model):
    ADD = 1
    EDIT = 2
    DELETE = 3

    OPERATION_CHOICES = [[ADD, _('Add')], [EDIT, _('Edit')], [DELETE, _('Delete')]]

    content_type = models.ForeignKey(ContentType, verbose_name=_('Content Type'), filter=True)
    operation = models.IntegerField(verbose_name=_('Operation'), choices=OPERATION_CHOICES, filter=True)
    user = models.ForeignKey('admin.User', filter=True, verbose_name=_('User'))
    date = models.DateTimeField(verbose_name=_('Date/Time'), auto_now=True, filter=True)
    object_id = models.IntegerField(verbose_name=_('Identifier'), search=True)
    object_description = models.CharField(verbose_name=_('Object Description'))
    content = models.TextField(verbose_name=_('Content'), null=True, search=True)

    fieldsets = (
        (_('General Data'), {'fields': (
            ('content_type', 'operation'), ('user', 'date'), ('object_id', 'object_description'), 'get_tags')}),
        (_('Indexes'), {'relations': ('logindex_set',), 'condition': 'has_index'}),
    )

    objects = models.Manager()

    class Meta:
        verbose_name = _('Log')
        verbose_name_plural = _('Logs')
        icon = 'fa-history'
        list_per_page = 25
        list_display = 'content_type', 'object_id', 'operation', 'user', 'date', 'get_tags'
        order_by = '-date'

    def __str__(self):
        return 'Log #{}'.format(self.pk)

    def can_add(self):
        return False

    def can_edit(self):
        return False

    def can_delete(self):
        return False

    def has_index(self):
        return self.logindex_set.exists()

    def get_action_description(self):
        return (_('added'), _('edited'), _('deleted'))[self.operation - 1]

    def get_style(self):
        return ('success', 'info', 'danger')[self.operation - 1]

    def get_icon(self):
        return ('plus', 'pencil', 'trash-o')[self.operation - 1]

    @meta('Alterações')
    def get_tags(self):
        data = []
        for attr, old, new in json.loads(self.content):
            data.append('{} : {} >> {}'.format(attr, old, new))

        for log_index in self.logindex_set.all():
            date = datetime.datetime(
                log_index.log.date.year, log_index.log.date.month, log_index.log.date.day,
                log_index.log.date.hour, log_index.log.date.minute, log_index.log.date.second
            )
            qs = Log.objects.filter(
                content_type=log_index.content_type, user=log_index.log.user, date__startswith=date,
                object_id=log_index.object_id
            )
            for log in qs:
                for attr, old, new in json.loads(log.content):
                    data.append('{} : {} >> {}'.format(attr, old, new))

        return ' | '.join(data)

    def create_indexes(self, instance):
        for log_index in get_metadata(instance.__class__, 'logging', (), iterable=True):
            index_object = getattr2(instance, log_index)
            if index_object:
                index_content_type = ContentType.objects.get_for_model(index_object.__class__)
                LogIndex.objects.create(log=self, content_type=index_content_type, object_id=index_object.pk)