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