Added extra_info field to Book model.
authorMarek Stępniowski <marek@stepniowski.com>
Thu, 9 Oct 2008 10:34:26 +0000 (12:34 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Thu, 9 Oct 2008 10:34:26 +0000 (12:34 +0200)
apps/catalogue/fields.py
apps/catalogue/models.py

index 55b38cc..a75752e 100644 (file)
@@ -45,7 +45,7 @@ class JSONField(models.TextField):
 
     def contribute_to_class(self, cls, name):
         super(JSONField, self).contribute_to_class(cls, name)
 
     def contribute_to_class(self, cls, name):
         super(JSONField, self).contribute_to_class(cls, name)
-        dispatcher.connect(self.post_init, signal=signals.post_init, sender=cls)
+        signals.post_init.connect(self.post_init, sender=cls)
 
         def get_json(model_instance):
             return dumps(getattr(model_instance, self.attname, None))
 
         def get_json(model_instance):
             return dumps(getattr(model_instance, self.attname, None))
@@ -55,7 +55,8 @@ class JSONField(models.TextField):
             return setattr(model_instance, self.attname, loads(json))
         setattr(cls, 'set_%s_json' % self.name, set_json)
 
             return setattr(model_instance, self.attname, loads(json))
         setattr(cls, 'set_%s_json' % self.name, set_json)
 
-    def post_init(self, instance=None):
+    def post_init(self, **kwargs):
+        instance = kwargs.get('instance', None)
         value = self.value_from_object(instance)
         if (value):
             setattr(instance, self.attname, loads(value))
         value = self.value_from_object(instance)
         if (value):
             setattr(instance, self.attname, loads(value))
index 61e78a0..2022f1c 100644 (file)
@@ -10,6 +10,7 @@ from django.core.urlresolvers import reverse
 
 from newtagging.models import TagBase
 from newtagging import managers
 
 from newtagging.models import TagBase
 from newtagging import managers
+from catalogue.fields import JSONField
 
 from librarian import html, dcparser
 
 
 from librarian import html, dcparser
 
@@ -41,7 +42,7 @@ class Tag(TagBase):
         db_index=True, choices=TAG_CATEGORIES)
     description = models.TextField(_('description'), blank=True)
     main_page = models.BooleanField(_('main page'), default=False, db_index=True, help_text=_('Show tag on main page'))
         db_index=True, choices=TAG_CATEGORIES)
     description = models.TextField(_('description'), blank=True)
     main_page = models.BooleanField(_('main page'), default=False, db_index=True, help_text=_('Show tag on main page'))
-        
+    
     user = models.ForeignKey(User, blank=True, null=True)
     book_count = models.IntegerField(_('book count'), default=0, blank=False, null=False)
     
     user = models.ForeignKey(User, blank=True, null=True)
     book_count = models.IntegerField(_('book count'), default=0, blank=False, null=False)
     
@@ -84,6 +85,7 @@ class Book(models.Model):
     created_at = models.DateTimeField(_('creation date'), auto_now=True)
     _short_html = models.TextField(_('short HTML'), editable=False)
     parent_number = models.IntegerField(_('parent number'), default=0)
     created_at = models.DateTimeField(_('creation date'), auto_now=True)
     _short_html = models.TextField(_('short HTML'), editable=False)
     parent_number = models.IntegerField(_('parent number'), default=0)
+    extra_info = JSONField(_('extra information'))
     
     # Formats
     xml_file = models.FileField(_('XML file'), upload_to=book_upload_path('xml'), blank=True)
     
     # Formats
     xml_file = models.FileField(_('XML file'), upload_to=book_upload_path('xml'), blank=True)