Skip to content

Commit

Permalink
Refactor invite accepting logic into model methods
Browse files Browse the repository at this point in the history
  • Loading branch information
paltman committed Jan 31, 2013
1 parent 3e1be39 commit 5c66959
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 9 deletions.
12 changes: 11 additions & 1 deletion kaleo/models.py
Expand Up @@ -6,7 +6,7 @@

from account.models import SignupCode

from kaleo.signals import invite_sent
from kaleo.signals import invite_sent, invite_accepted


DEFAULT_INVITE_EXPIRATION = getattr(settings, "KALEO_DEFAULT_EXPIRATION", 168) # 168 Hours = 7 Days
Expand Down Expand Up @@ -39,6 +39,12 @@ class JoinInvitation(models.Model):
def to_user_email(self):
return self.signup_code.email

def accept(self, user):
self.to_user = user
self.status = JoinInvitation.STATUS_ACCEPTED
self.save()
self.from_user.invitationstat.increment_accepted()
invite_accepted.send(sender=JoinInvitation, invitation=self)
@classmethod
def invite(cls, from_user, to_email, message=None):
if not from_user.invitationstat.can_send():
Expand Down Expand Up @@ -72,6 +78,10 @@ class InvitationStat(models.Model):
invites_allocated = models.IntegerField(default=DEFAULT_INVITE_ALLOCATION)
invites_accepted = models.IntegerField(default=0)

def increment_accepted(self):
self.invites_accepted += 1
self.save()

@classmethod
def add_invites_to_user(cls, user, amount):
stat, _ = InvitationStat.objects.get_or_create(user=user)
Expand Down
9 changes: 1 addition & 8 deletions kaleo/receivers.py
Expand Up @@ -7,21 +7,14 @@
from account.signals import signup_code_used, email_confirmed

from kaleo.models import JoinInvitation, InvitationStat
from kaleo.signals import invite_accepted


@receiver(signup_code_used, sender=SignupCodeResult)
def handle_signup_code_used(sender, **kwargs):
result = kwargs.get("signup_code_result")
try:
invite = result.signup_code.joininvitation
invite.to_user = result.user
invite.status = JoinInvitation.STATUS_ACCEPTED
invite.save()
stat = invite.from_user.invitationstat
stat.invites_accepted += 1
stat.save()
invite_accepted.send(sender=JoinInvitation, invitation=invite)
invite.accept(result.user)
except JoinInvitation.DoesNotExist:
pass

Expand Down

0 comments on commit 5c66959

Please sign in to comment.