Revision 8f5a3a06 snf-astakos-app/astakos/im/models.py
b/snf-astakos-app/astakos/im/models.py | ||
---|---|---|
38 | 38 |
from datetime import datetime, timedelta |
39 | 39 |
from base64 import b64encode |
40 | 40 |
from urlparse import urlparse |
41 |
from random import randint |
|
41 | 42 |
|
42 | 43 |
from django.db import models |
43 | 44 |
from django.contrib.auth.models import User, UserManager |
... | ... | |
158 | 159 |
accepted = models.DateTimeField('Acceptance date', null=True, blank=True) |
159 | 160 |
consumed = models.DateTimeField('Consumption date', null=True, blank=True) |
160 | 161 |
|
162 |
def save(self, **kwargs): |
|
163 |
if not self.id: |
|
164 |
self.code = _generate_invitation_code() |
|
165 |
super(Invitation, self).save(**kwargs) |
|
166 |
|
|
161 | 167 |
def consume(self): |
162 | 168 |
self.is_consumed = True |
163 | 169 |
self.consumed = datetime.now() |
... | ... | |
187 | 193 |
routing_key = '%s.user' % exchange |
188 | 194 |
exchange_send(conn, routing_key, body) |
189 | 195 |
exchange_close(conn) |
196 |
|
|
197 |
def _generate_invitation_code(): |
|
198 |
while True: |
|
199 |
code = randint(1, 2L**63 - 1) |
|
200 |
try: |
|
201 |
Invitation.objects.get(code=code) |
|
202 |
# An invitation with this code already exists, try again |
|
203 |
except Invitation.DoesNotExist: |
|
204 |
return code |
Also available in: Unified diff