Ticket #4682: UUIDField.py

File UUIDField.py, 1.3 KB (added by anonymous, 17 years ago)

UUIDFIeld

Line 
1from django.db import models
2
3class UUIDField(models.CharField):
4 def __init__(self, version=None, node=None, clock_seq=None, namespace=None, name=None, **kwargs):
5 kwargs['maxlength'] = 36
6 kwargs['blank'] = True
7 self.version = version
8 if version==1:
9 self.node, self.clock_seq = node, clock_seq
10 elif version==3 or version==5:
11 self.namespace, self.name = namespace, name
12 models.CharField.__init__(self, **kwargs)
13
14 def get_internal_type(self):
15 return "CharField"
16
17 def pre_save(self, model_instance, add):
18 if add:
19 import sys
20 if sys.version_info < (2,5):
21 try:
22 from django.utils import uuid
23 except ImportError:
24 import uuid
25 else:
26 import uuid
27 if not self.version or self.version==4:
28 return unicode(uuid.uuid4())
29 elif self.version==1:
30 return unicode(uuid.uuid1(self.node, self.clock_seq))
31 elif self.version==3:
32 return unicode(uuid.uuid3(self.namespace, self.name))
33 elif self.version==5:
34 return unicode(uuid.uuid5(self.namespace, self.name))
35 else:
36 return super(UUIDField, self).pre_save(model_instance, add)
37
Back to Top