Revision c11dc0ce snf-quotaholder-app/quotaholder_django/quotaholder_app/models.py

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

  
34 34

  
35 35
from synnefo.lib.commissioning import CorruptedError
36
from synnefo.lib.db.intdecimalfield import intDecimalField
36 37

  
37
from django.core import exceptions
38 38
from django.db.models import (Model, BigIntegerField, CharField,
39
                              IntegerField, SubfieldBase,
40
                              ForeignKey, AutoField, DecimalField)
39
                              ForeignKey, AutoField)
41 40
from django.db import transaction
42 41
from .managers import ForUpdateManager
43 42

  
44
class IntDecimalField(IntegerField):
45

  
46
    __metaclass__ = SubfieldBase
47

  
48
    def __init__(self, max_digits=None, **kwargs):
49
        self.max_digits, self.decimal_places = max_digits, 0
50
        IntegerField.__init__(self, **kwargs)
51

  
52
    def get_internal_type(self):
53
        return "DecimalField"
54

  
55
    def to_python(self, value):
56
        if value is None:
57
            return value
58
        try:
59
            return long(value)
60
        except (ValueError, TypeError):
61
            raise exceptions.ValidationError(self.error_messages['invalid'])
62

  
63
DECIMAL_DIGITS  =   38
64

  
65
def intDecimalField(**kwargs):
66
    return IntDecimalField(max_digits=DECIMAL_DIGITS, **kwargs)
67

  
68 43
class Holder(Model):
69 44

  
70 45
    attribute   =   CharField(max_length=4096, primary_key=True)

Also available in: Unified diff