Changeset 7431d13
- Timestamp:
- Nov 17, 2013, 3:59:33 AM (12 years ago)
- Branches:
- master, stable, stage
- Children:
- 88843ac
- Parents:
- 00ec3e4
- git-author:
- Alex Dehnert <adehnert@…> (11/17/13 03:55:11)
- git-committer:
- Alex Dehnert <adehnert@…> (11/17/13 03:59:33)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
asadb/groups/models.py
r00ec3e4 r7431d13 1 import collections 1 2 import datetime 2 3 import filecmp … … 14 15 from django.db.models import Q 15 16 from django.core.validators import RegexValidator 16 from django.contrib.auth.models import User 17 from django.contrib.auth.models import User, Permission 18 from django.contrib.contenttypes.models import ContentType 17 19 from django.template.defaultfilters import slugify 18 20 … … 112 114 current_officers = OfficeHolder.current_holders.filter(person=username) 113 115 users_groups = Group.objects.filter(officeholder__in=current_officers).distinct() 116 117 @staticmethod 118 def admin_groups(username, codename='admin_group'): 119 holders = OfficeHolder.current_holders.filter_perm(codename=codename).filter(person=username) 120 users_groups = Group.objects.filter(officeholder__in=holders).distinct() 114 121 return users_groups 115 122 … … 395 402 396 403 @classmethod 404 def getRolesGrantingPerm(cls, perm=None, model=Group, codename=None, ): 405 """Get all OfficerRole objects granting a permission 406 407 Either `perm` or `codename` must be supplied, but not both. If 408 `codename` is provided (and `perm` is None), then `perm` the 409 permission corresponding to `model` (default: `Group`) and `codename` 410 will be found and used.""" 411 412 if perm is None: 413 ct = ContentType.objects.get_for_model(model) 414 print ct 415 print Permission.objects.filter(content_type=ct) 416 perm = Permission.objects.get(content_type=ct, codename=codename) 417 418 Q_user = Q(user_permissions=perm) 419 Q_group = Q(groups__permissions=perm) 420 users = User.objects.filter(Q_user|Q_group) 421 roles = cls.objects.filter(grant_user__in=users) 422 return roles 423 424 @classmethod 397 425 def retrieve(cls, slug, ): 398 426 return cls.objects.get(slug=slug) 427 399 428 reversion.register(OfficerRole) 400 429 … … 407 436 ) 408 437 438 def filter_perm(self, perm=None, model=Group, codename=None, ): 439 roles = OfficerRole.getRolesGrantingPerm(perm=perm, model=model, codename=codename) 440 return self.get_query_set().filter(role__in=roles) 441 409 442 class OfficeHolder(models.Model): 410 443 EXPIRE_OFFSET = datetime.timedelta(seconds=1) … … 433 466 def __repr__(self, ): 434 467 return str(self) 468 435 469 reversion.register(OfficeHolder) 436 470
Note: See TracChangeset
for help on using the changeset viewer.