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