Revision 8e1a5af5 snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
68 | 68 |
DEFAULT_USER_LEVEL, INVITATIONS_PER_LEVEL, |
69 | 69 |
AUTH_TOKEN_DURATION, EMAILCHANGE_ACTIVATION_DAYS, LOGGING_LEVEL, |
70 | 70 |
SITENAME, SERVICES, MODERATION_ENABLED, RESOURCES_PRESENTATION_DATA, |
71 |
PROJECT_MEMBER_JOIN_POLICIES, PROJECT_MEMBER_LEAVE_POLICIES) |
|
71 |
PROJECT_MEMBER_JOIN_POLICIES, PROJECT_MEMBER_LEAVE_POLICIES, PROJECT_ADMINS)
|
|
72 | 72 |
from astakos.im import settings as astakos_settings |
73 | 73 |
from astakos.im.endpoints.qh import ( |
74 | 74 |
register_users, send_quotas, qh_check_users, qh_get_quota_limits, |
... | ... | |
428 | 428 |
content_type=get_content_type()) |
429 | 429 |
self.user_permissions.remove(p) |
430 | 430 |
|
431 |
def is_project_admin(self, application_id=None): |
|
432 |
return self.uuid in PROJECT_ADMINS |
|
433 |
|
|
431 | 434 |
@property |
432 | 435 |
def invitation(self): |
433 | 436 |
try: |
... | ... | |
815 | 818 |
return m.user_friendly_state_display() |
816 | 819 |
|
817 | 820 |
def non_owner_can_view(self, maybe_project): |
821 |
if self.is_project_admin(): |
|
822 |
return True |
|
818 | 823 |
if maybe_project is None: |
819 | 824 |
return False |
820 | 825 |
project = maybe_project |
... | ... | |
1422 | 1427 |
""" |
1423 | 1428 |
Return projects accessed by specified user. |
1424 | 1429 |
""" |
1425 |
participates_filters = Q(owner=user) | Q(applicant=user) | \ |
|
1426 |
Q(project__projectmembership__person=user) |
|
1430 |
if user.is_project_admin(): |
|
1431 |
participates_filters = Q() |
|
1432 |
else: |
|
1433 |
participates_filters = Q(owner=user) | Q(applicant=user) | \ |
|
1434 |
Q(project__projectmembership__person=user) |
|
1427 | 1435 |
|
1428 | 1436 |
return self.user_visible_by_chain(participates_filters).order_by('issue_date').distinct() |
1429 | 1437 |
|
... | ... | |
1612 | 1620 |
except Project.DoesNotExist: |
1613 | 1621 |
return None |
1614 | 1622 |
|
1623 |
def can_be_approved(self): |
|
1624 |
return self.state == self.PENDING |
|
1625 |
|
|
1626 |
def can_be_dismissed(self): |
|
1627 |
return self.state == self.DENIED |
|
1628 |
|
|
1615 | 1629 |
def can_cancel(self): |
1616 | 1630 |
return self.state == self.PENDING |
1617 | 1631 |
|
Also available in: Unified diff