from UserDict import DictMixin
+class Tag(models.Model):
+ name = models.CharField(max_length=250)
+ slug = models.SlugField(unique=True)
+
+ def __unicode__(self):
+ return self.name
+
+ class Meta:
+ app_label = 'philo'
+
+
+class Titled(models.Model):
+ title = models.CharField(max_length=255)
+ slug = models.SlugField(max_length=255)
+
+ def __unicode__(self):
+ return self.title
+
+ class Meta:
+ abstract = True
+
+
class Attribute(models.Model):
entity_content_type = models.ForeignKey(ContentType, verbose_name='Entity type')
entity_object_id = models.PositiveIntegerField(verbose_name='Entity ID')
def __init__(self, queryset, passthrough=None):
self.queryset = queryset
self.passthrough = passthrough
+
def __getitem__(self, key):
try:
return self.queryset.get(key__exact=key).value
except ObjectDoesNotExist:
- if self.passthrough:
+ if self.passthrough is not None:
return self.passthrough.__getitem__(key)
raise KeyError
+
def keys(self):
keys = set(self.queryset.values_list('key', flat=True).distinct())
- if self.passthrough:
- keys += set(self.passthrough.keys())
+ if self.passthrough is not None:
+ keys |= set(self.passthrough.keys())
return list(keys)
class Meta:
abstract = True
- app_label = 'philo'
class TreeManager(models.Manager):
class Meta:
unique_together = (('parent', 'slug'),)
abstract = True
- app_label = 'philo'
class TreeEntity(TreeModel, Entity):
return super(TreeEntity, self).relationships
class Meta:
- abstract = True
- app_label = 'philo'
\ No newline at end of file
+ abstract = True
\ No newline at end of file