Revision 0f4fa26d snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
154 | 154 |
self.save() |
155 | 155 |
|
156 | 156 |
def approve_member(self, person): |
157 |
try: |
|
158 |
self.membership_set.create(person=person, date_joined=datetime.now()) |
|
159 |
except IntegrityError: |
|
160 |
m = self.membership_set.get(person=person) |
|
161 |
m.date_joined = datetime.now() |
|
162 |
m.save() |
|
157 |
m, created = self.membership_set.get_or_create(person=person) |
|
158 |
# update date_joined in any case |
|
159 |
m.date_joined=datetime.now() |
|
160 |
m.save() |
|
163 | 161 |
|
164 | 162 |
def disapprove_member(self, person): |
165 | 163 |
self.membership_set.remove(person=person) |
... | ... | |
175 | 173 |
|
176 | 174 |
@property |
177 | 175 |
def quota(self): |
178 |
d = {}
|
|
179 |
for q in self.astakosgroupquota_set.all():
|
|
180 |
d[q.resource.name] = q.limit
|
|
176 |
d = defaultdict(int)
|
|
177 |
for q in self.astakosgroupquota_set.all(): |
|
178 |
d[q.resource] += q.limit
|
|
181 | 179 |
return d |
182 | 180 |
|
183 | 181 |
@property |
184 | 182 |
def has_undefined_policies(self): |
185 | 183 |
# TODO: can avoid query? |
186 | 184 |
return Resource.objects.filter(~Q(astakosgroup=self)).exists() |
185 |
|
|
186 |
@property |
|
187 |
def owners(self): |
|
188 |
return self.owner.all() |
|
189 |
|
|
190 |
@owners.setter |
|
191 |
def owners(self, l): |
|
192 |
self.owner = l |
|
193 |
map(self.approve_member, l) |
|
187 | 194 |
|
188 | 195 |
class AstakosUser(User): |
189 | 196 |
""" |
... | ... | |
567 | 574 |
if instance.is_superuser: |
568 | 575 |
create_astakos_user(instance) |
569 | 576 |
|
570 |
post_save.connect(superuser_post_save, sender=User) |
|
577 |
post_save.connect(superuser_post_save, sender=User) |
|
578 |
|
|
579 |
def get_resources(): |
|
580 |
# use cache |
|
581 |
return Resource.objects.select_related().all() |
Also available in: Unified diff