X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/d4e6b90b55aff9b98a67615c64fce5089a82f947..8c48dda3b4c5cf0ac6c2d404ae29d8ef315b4f7f:/models.py diff --git a/models.py b/models.py index ecd1c1f..f866ee6 100644 --- a/models.py +++ b/models.py @@ -101,6 +101,13 @@ class Entity(models.Model): class Collection(models.Model): name = models.CharField(max_length=255) description = models.TextField(blank=True, null=True) + + @fattr(short_description='Members') + def get_count(self): + return self.members.count() + + def __unicode__(self): + return self.name class CollectionMemberManager(models.Manager): @@ -117,6 +124,9 @@ class CollectionMember(models.Model): member_content_type = models.ForeignKey(ContentType, verbose_name='Member type') member_object_id = models.PositiveIntegerField(verbose_name='Member ID') member = generic.GenericForeignKey('member_content_type', 'member_object_id') + + def __unicode__(self): + return u'%s - %s' % (self.collection, self.member) class TreeManager(models.Manager): @@ -203,7 +213,10 @@ class InheritableTreeEntity(TreeEntity): @property def instance(self): - return self.instance_type.get_object_for_this_type(id=self.id) + try: + return self.instance_type.get_object_for_this_type(id=self.id) + except: + return None def get_path(self, pathsep='/', field='slug'): path = getattr(self.instance, field, '?') @@ -235,6 +248,9 @@ class Node(InheritableTreeEntity): def render_to_response(self, request, path=None, subpath=None): return HttpResponseServerError() + + class Meta: + unique_together = (('parent', 'slug'),) class MultiNode(Node): @@ -278,6 +294,9 @@ class File(Node): response = HttpResponse(wrapper, content_type=self.mimetype) response['Content-Length'] = self.file.size return response + + def __unicode__(self): + return self.file class Template(TreeModel): @@ -353,9 +372,7 @@ class Template(TreeModel): class Page(Node): """ - Represents an HTML page. The page will have a number of related Contentlets - depending on the template selected - but these will appear only after the - page has been saved with that template. + Represents a page - something which is rendered according to a template. The page will have a number of related Contentlets depending on the template selected - but these will appear only after the page has been saved with that template. """ template = models.ForeignKey(Template, related_name='pages') title = models.CharField(max_length=255) @@ -376,14 +393,20 @@ class Contentlet(models.Model): name = models.CharField(max_length=255) content = models.TextField() dynamic = models.BooleanField(default=False) + + def __unicode__(self): + return self.name class ContentReference(models.Model): page = models.ForeignKey(Page, related_name='contentreferences') name = models.CharField(max_length=255) content_type = models.ForeignKey(ContentType, verbose_name='Content type') - content_id = models.PositiveIntegerField(verbose_name='Content ID') + content_id = models.PositiveIntegerField(verbose_name='Content ID', blank=True, null=True) content = generic.GenericForeignKey('content_type', 'content_id') + + def __unicode__(self): + return self.name register_templatetags('philo.templatetags.containers')