App Engine Python SDK version 1.7.4 (2)
[gae.git] / python / lib / django_1_4 / tests / modeltests / custom_pk / fields.py
blob40551a363c5e585d05116465ada683fdc90e8d95
1 import random
2 import string
4 from django.db import models
7 class MyWrapper(object):
8 def __init__(self, value):
9 self.value = value
11 def __repr__(self):
12 return "<%s: %s>" % (self.__class__.__name__, self.value)
14 def __unicode__(self):
15 return self.value
17 def __eq__(self, other):
18 if isinstance(other, self.__class__):
19 return self.value == other.value
20 return self.value == other
22 class MyAutoField(models.CharField):
23 __metaclass__ = models.SubfieldBase
25 def __init__(self, *args, **kwargs):
26 kwargs['max_length'] = 10
27 super(MyAutoField, self).__init__(*args, **kwargs)
29 def pre_save(self, instance, add):
30 value = getattr(instance, self.attname, None)
31 if not value:
32 value = MyWrapper(''.join(random.sample(string.lowercase, 10)))
33 setattr(instance, self.attname, value)
34 return value
36 def to_python(self, value):
37 if not value:
38 return
39 if not isinstance(value, MyWrapper):
40 value = MyWrapper(value)
41 return value
43 def get_db_prep_save(self, value, connection):
44 if not value:
45 return
46 if isinstance(value, MyWrapper):
47 return unicode(value)
48 return value
50 def get_db_prep_value(self, value, connection, prepared=False):
51 if not value:
52 return
53 if isinstance(value, MyWrapper):
54 return unicode(value)
55 return value