Revision 5550bcfb snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
1350 | 1350 |
SyncedState = make_synced(prefix='sync', name='SyncedState') |
1351 | 1351 |
|
1352 | 1352 |
|
1353 |
class ProjectApplicationManager(models.Manager): |
|
1354 |
|
|
1355 |
def user_projects(self, user): |
|
1356 |
""" |
|
1357 |
Return projects accessed by specified user. |
|
1358 |
""" |
|
1359 |
return self.filter(Q(owner=user) | Q(applicant=user) | \ |
|
1360 |
Q(project__in=user.projectmembership_set.filter())) |
|
1361 |
|
|
1353 | 1362 |
class ProjectApplication(models.Model): |
1354 | 1363 |
PENDING, APPROVED, REPLACED, UNKNOWN = 'Pending', 'Approved', 'Replaced', 'Unknown' |
1355 | 1364 |
applicant = models.ForeignKey( |
... | ... | |
1388 | 1397 |
comments = models.TextField(null=True, blank=True) |
1389 | 1398 |
issue_date = models.DateTimeField() |
1390 | 1399 |
|
1400 |
objects = ProjectApplicationManager() |
|
1401 |
|
|
1391 | 1402 |
def add_resource_policy(self, service, resource, uplimit): |
1392 | 1403 |
"""Raises ObjectDoesNotExist, IntegrityError""" |
1393 | 1404 |
q = self.projectresourcegrant_set |
1394 | 1405 |
resource = Resource.objects.get(service__name=service, name=resource) |
1395 | 1406 |
q.create(resource=resource, member_capacity=uplimit) |
1396 | 1407 |
|
1397 |
|
|
1408 |
def member_status(self, user): |
|
1409 |
if user == self.owner: |
|
1410 |
status = 100 |
|
1411 |
else: |
|
1412 |
try: |
|
1413 |
membership = self.project.projectmembership_set.get(person=user) |
|
1414 |
status = membership.state |
|
1415 |
except Project.DoesNotExist: |
|
1416 |
status = -1 |
|
1417 |
|
|
1418 |
return status |
|
1419 |
|
|
1420 |
def members_count(self): |
|
1421 |
return self.project.approved_memberships.count() |
|
1422 |
|
|
1398 | 1423 |
@property |
1399 | 1424 |
def grants(self): |
1400 | 1425 |
return self.projectresourcegrant_set.values('member_capacity', 'resource__name', 'resource__service__name') |
1401 |
|
|
1426 |
|
|
1402 | 1427 |
@property |
1403 | 1428 |
def resource_policies(self): |
1404 | 1429 |
return self.projectresourcegrant_set.all() |
Also available in: Unified diff