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