Exemple #1
0
class Role(models.Model):
    id = UUIDField()
    name = models.CharField(max_length=64,
                            verbose_name='角色',
                            default='',
                            unique=True)
    createBy = models.CharField(null=True,
                                max_length=64,
                                verbose_name='创建者',
                                default='')
    updateBy = models.CharField(null=True,
                                max_length=64,
                                verbose_name='修改者',
                                default='')
    create_time = models.DateTimeField(auto_now_add=True,
                                       verbose_name='创建时间')  # 创建时间
    update_time = models.DateTimeField(auto_now=True,
                                       verbose_name='修改时间')  # 修改时间
    permissions = models.ManyToManyField(Permission,
                                         verbose_name=_('permissions'),
                                         blank=True)

    objects = GroupManager()

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )

    class Meta:
        db_table = 'role'
        verbose_name = '角色'
        verbose_name_plural = verbose_name
        ordering = ['-create_time', '-update_time']
Exemple #2
0
class Group(models.Model):
    """
        This is a clone of django.contrib.auth.Group, but nonrelationalized. Doesn't user Permission but directly
        uses the permission names
    """
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = ListField(models.CharField(max_length=500),
                            verbose_name=_('permissions'),
                            blank=True)

    objects = GroupManager()

    class Meta:
        db_table = 'djangae_group'
        verbose_name = _('group')
        verbose_name_plural = _('groups')

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )

    def __init__(self, *args, **kwargs):
        """We need to override this to make the choices lazy and prevent import madness"""
        super(Group, self).__init__(*args, **kwargs)

        field = self._meta.get_field('permissions')
        field._choices = lazy(get_permission_choices, list)()
        field.item_field_type._choices = lazy(get_permission_choices, list)()
Exemple #3
0
class Group(models.Model):
    """
    用户群,群里的用户拥有该群绑定的权限
    """
    name = models.CharField(_(u'群名称'), max_length=80, unique=True)
    permissions = models.ManyToManyField(
        Permission,
        verbose_name=_(u'群权限'),
        blank=True,
    )
    is_active = models.BooleanField(
        _(u'是否激活'),
        default=True,
        help_text=_(u'用户群激活后权限才会生效'),
    )
    created = models.DateTimeField(_(u'创建时间'), auto_now_add=True)
    notes = models.TextField(_(u'备注'), default=True)

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )
Exemple #4
0
class GroupBasic(models.Model):
    """
    Groups are a generic way of categorizing users to apply permissions, or
    some other label, to those users. A user can belong to any number of
    groups.

    A user in a group automatically has all the permissions granted to that
    group. For example, if the group Site editors has the permission
    can_edit_home_page, any user in that group will have that permission.

    Beyond permissions, groups are a convenient way to categorize users to
    apply some label, or extended functionality, to them. For example, you
    could create a group 'Special users', and you could write code that would
    do special things to those users -- such as giving them access to a
    members-only portion of your site, or sending them members-only email
    messages.
    """
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = models.ManyToManyField(Permission,
                                         verbose_name=_('permissions'),
                                         blank=True)

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )
Exemple #5
0
class Group(RESTModelMixin, DjangoGroup):
    """
    Extend the django group with support of our REST and caching system.
    """
    access_permissions = GroupAccessPermissions()
    objects = GroupManager()

    class Meta:
        default_permissions = ()
Exemple #6
0
class GroupOfAggregations(models.Model):
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = models.ManyToManyField(Permission,
                                         verbose_name=_('permissions'), blank=True)
    aggregations = models.ManyToManyField(Aggregation, blank=True)
    objects = GroupManager()

    class Meta:
        verbose_name = _('Group of aggregations')
        verbose_name_plural = _('Groups of aggregations')
        app_label = 'poem'

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name,)
Exemple #7
0
class Group(models.Model):
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = models.ManyToManyField(Permission,
                                         verbose_name=_('permissions'),
                                         blank=True)

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')

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

    def natural_key(self):
        return (self.name, )
Exemple #8
0
class Department(models.Model):

    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = models.ManyToManyField(Permission,
                                         verbose_name=_('Permissions'), blank=True)

    objects = GroupManager()

    class Meta:
        verbose_name = _('Department')
        verbose_name_plural = _('Departments')

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name,)
Exemple #9
0
class AbstractGroup(models.Model):
    name = models.CharField(_("name"), max_length=150, unique=True)
    permissions = models.ManyToManyField(
        Permission,
        verbose_name=_("permissions"),
        blank=True,
    )
    objects = GroupManager()

    class Meta:
        verbose_name = _("group")
        verbose_name_plural = _("groups")
        abstract = True

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )
Exemple #10
0
class Group(models.Model):
    """
        This is a clone of django.contrib.auth.Group, but nonrelationalized
    """
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = ListField(models.ForeignKey(Permission),
                            verbose_name=_('permissions'),
                            blank=True)

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )
Exemple #11
0
class Role(models.Model):
    """
    Job role that has associated permissions. Modeled using ``auth.Group`` model, but separated to prevent assigning
    users directly to the role (group) globally.  Users can be assigned to this role through scoped models like ``CaseloadRole``.
    """
    name = models.CharField(max_length=150, unique=True)
    permissions = models.ManyToManyField(
        Permission,
        blank=True,
    )

    objects = GroupManager()

    class Meta:
        verbose_name = 'Role'
        verbose_name_plural = 'Roles'

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )
Exemple #12
0
class UserGroups(models.Model):
    id = models.UUIDField(default=uuid4, primary_key=True)
    name = models.CharField(max_length=128, verbose_name=_('Name'))
    permissions = models.ManyToManyField(
        Permission,
        verbose_name=_('permissions'),
        blank=True,
    )

    comment = models.TextField(blank=True, verbose_name=_('Comment'))
    date_created = models.DateTimeField(auto_now_add=True,
                                        null=True,
                                        verbose_name=_('Date created'))
    created_by = models.CharField(max_length=100, null=True, blank=True)

    objects = GroupManager()

    def __str__(self):
        return self.name

    class Meta:
        ordering = ['name']
        verbose_name = _("User groups")
Exemple #13
0
class Group(BaseModel, Group):
    parent = models.ForeignKey('self',
                               blank=True,
                               null=True,
                               on_delete=models.SET_NULL,
                               verbose_name='父级角色')
    code = models.CharField(max_length=32, unique=True, verbose_name='代码')
    sequence = models.SmallIntegerField(default=0, verbose_name='排序值')
    roles = models.ManyToManyField(
        Role,
        verbose_name='roles',
        blank=True,
    )

    def __str__(self):
        return "{parent}{name}".format(name=self.name,
                                       parent="%s-->" %
                                       self.parent.name if self.parent else '')

    class Meta:
        verbose_name = '分组'
        verbose_name_plural = verbose_name

    objects = GroupManager()  # 创建用户
Exemple #14
0
class Group(models.Model):
    """
        This is a clone of django.contrib.auth.Group, but nonrelationalized. Doesn't user Permission but directly
        uses the permission names
    """
    name = models.CharField(_('name'), max_length=80, unique=True)
    permissions = ListField(models.CharField(max_length=500,
                                             choices=get_permission_choices()),
                            verbose_name=_('permissions'),
                            blank=True,
                            choices=get_permission_choices())

    objects = GroupManager()

    class Meta:
        verbose_name = _('group')
        verbose_name_plural = _('groups')
        app_label = "djangae"

    def __str__(self):
        return self.name

    def natural_key(self):
        return (self.name, )
Exemple #15
0
class Project(Group):
    members = models.ManyToManyField(Student,
                                     through='Membership',
                                     through_fields=('project', 'member'),
                                     blank=True)
    title = models.CharField('Название', max_length=30, default="Unnamed")
    category = models.CharField('Категория',
                                choices=GROUP_CATEGORY,
                                max_length=30,
                                default='Sport')
    status = models.CharField(max_length=30, blank=True)
    pub_date = models.DateField(auto_now=True, editable=False)
    release_date = models.DateField(auto_now=False,
                                    default=date_across_days(3))
    describe = models.CharField('Описание',
                                max_length=6000,
                                default="Описание проекта одним абзацем")
    logo = models.ImageField('Лого',
                             max_length=300,
                             null=True,
                             blank=True,
                             default='default.jpg')  # as link on file
    rate = models.CharField(max_length=300, blank=True)  # as link on file
    admin = Student()

    objects = GroupManager()

    def get_admin(self):
        return Membership.admin_as_membership(self).member

    def is_member(self, user):
        return user in self.members.all()

    def is_admin(self, user):
        if user.is_anonymous():
            return False
        return Student.get_by_name(
            user.username) == Membership.admin_as_membership(self).member

    def __str__(self):
        return self.id

    def time_before_release(self):
        return self.release_date - datetime.date.today()

    def finish_project(self):
        is_formed = self.status is not TEAM_STATUS[
            'Start'] and self.pub_date <= datetime.date.today()
        if is_formed:
            self.status = TEAM_STATUS['Released']
        else:
            self.delete()

    @staticmethod
    def get_by_bounds(bottom, top):
        return Project.objects.all()[bottom:top]

    @staticmethod
    def get_by_name(group_name):
        return Project.objects.get(name=group_name)

    @staticmethod
    def set_admin_or_create_it(user, project):
        any_members_exists = Membership.objects.filter(
            member=user, project=project).count() > 0
        if any_members_exists:
            relation = Membership.objects.get(member=user, project=project)
            relation.status = MEMBER_STATUS[2]
            relation.save()
        else:
            m = Membership.objects.create(project=project,
                                          member=user,
                                          status=MEMBER_STATUS[2],
                                          role='Создатель группы')
            m.save()