class Preferences(models.Model): singleton = SingletonManager() class Meta: abstract = True def __unicode__(self): return self._meta.verbose_name_plural.capitalize()
def preferences_class_prepared(sender, *args, **kwargs): cls = sender if issubclass(cls, Preferences): # add singleton manager to subclasses cls.add_to_class('singleton', SingletonManager()) # add property for preferences object to preferences.preferences setattr(preferences.Preferences, cls._meta.object_name, property(lambda x: cls.singleton.get()))
def preferences_class_prepared(sender, *args, **kwargs): """ Adds various preferences members to preferences.preferences, thus enabling easy access from code. """ cls = sender if issubclass(cls, Preferences): # Add singleton manager to subclasses. cls.add_to_class('singleton', SingletonManager()) # Add property for preferences object to preferences.preferences. setattr(preferences.Preferences, cls._meta.object_name, property(lambda x: cls.singleton.get()))
class Preferences(models.Model): singleton = SingletonManager() sites = models.ManyToManyField('sites.Site', null=True, blank=True) def __unicode__(self): """ Include site names. """ site_names = [site.name for site in self.sites.all()] prefix = self._meta.verbose_name_plural.capitalize() if len(site_names) > 1: return '%s for sites %s and %s.' % (prefix, ', '.\ join(site_names[:-1]), site_names[-1]) elif len(site_names) == 1: return '%s for site %s.' % (prefix, site_names[0]) return '%s without assigned site.' % prefix
class Preferences(models.Model): singleton = SingletonManager()