Revision 140513a9

b/snf-quotaholder-app/quotaholder_django/quotaholder_app/models.py
34 34

  
35 35
from synnefo.lib.commissioning import CorruptedError
36 36

  
37
from django.db.models import Model, BigIntegerField, CharField, ForeignKey
37
from django.db.models import (Model, BigIntegerField, CharField,
38
                              ForeignKey, AutoField)
38 39
from django.db import transaction
39 40

  
40 41

  
......
45 46
    strval      =   CharField(max_length=4096)
46 47

  
47 48

  
48
def alloc_serial(nr=1):
49
    if nr < 0:
50
        m = "Can only receive a positive argument, not %d" % (nr,)
51
        raise CorruptedError(m)
52

  
53
    try:
54
        holder = Holder.objects.get(attribute='serial')
55
    except Holder.DoesNotExist:
56
        holder = Holder(attribute='serial', intval=1)
57

  
58
    serial = holder.intval
59
    holder.intval += nr
60
    holder.save()
61

  
62
    return serial
63

  
64

  
65 49
class Entity(Model):
66 50

  
67 51
    entity      =   CharField(max_length=4096, primary_key=True)
......
108 92

  
109 93
class Commission(Model):
110 94

  
111
    serial      =   BigIntegerField(primary_key=True, default=alloc_serial)
95
    serial      =   AutoField(primary_key=True)
112 96
    entity      =   ForeignKey(Entity, to_field='entity')
113 97
    name        =   CharField(max_length=4096, null=True)
114 98
    clientkey   =   CharField(max_length=4096, null=False)

Also available in: Unified diff