from django.db import models, IntegrityError
from django.contrib.auth.models import User, UserManager, Group, Permission
from django.utils.translation import ugettext as _
+from django.db import transaction
from django.core.exceptions import ValidationError
from django.db import transaction
from django.db.models.signals import (pre_save, post_save, post_syncdb,
self.save()
quota_disturbed.send(sender=self, users=self.approved_members)
+ @transaction.commit_manually
def approve_member(self, person):
m, created = self.membership_set.get_or_create(person=person)
# update date_joined in any case
- m.date_joined = datetime.now()
- m.save()
+ try:
+ m.approve()
+ except:
+ transaction.rollback()
+ raise
+ else:
+ transaction.commit()
- def disapprove_member(self, person):
- self.membership_set.remove(person=person)
+# def disapprove_member(self, person):
+# self.membership_set.remove(person=person)
@property
def members(self):
return False
def approve(self):
+ if self.group.max_participants:
+ assert len(self.group.approved_members) + 1 <= self.group.max_participants
self.date_joined = datetime.now()
self.save()
quota_disturbed.send(sender=self, users=(self.person,))
if update_form.is_valid():
update_form.save()
if addmembers_form.is_valid():
- map(obj.approve_member, addmembers_form.valid_users)
+ try:
+ map(obj.approve_member, addmembers_form.valid_users)
+ except AssertionError:
+ msg = _(astakos_messages.GROUP_MAX_PARTICIPANT_NUMBER_REACHED)
+ messages.error(request, msg)
addmembers_form = AddGroupMembersForm()
template_name = "%s/%s_detail.html" % (
realname = membership.person.realname
msg = _(astakos_messages.MEMBER_JOINED_GROUP) % locals()
messages.success(request, msg)
+ except AssertionError:
+ msg = _(astakos_messages.GROUP_MAX_PARTICIPANT_NUMBER_REACHED)
+ messages.error(request, msg)
except BaseException, e:
logger.exception(e)
realname = membership.person.realname