commit to CouchDB only when necessary
[mygpo.git] / mygpo / directory / models.py
blob1a74d2a8d11d3ee7feed425ed64475eb6336b7b6
1 from couchdbkit import Document, StringProperty, DateTimeProperty, StringListProperty, IntegerProperty, Server
3 class Category(Document):
4 label = StringProperty()
5 updated = DateTimeProperty()
6 spellings = StringListProperty()
7 weight = IntegerProperty()
9 @classmethod
10 def for_tag(cls, tag):
11 r = cls.view('directory/categories_by_tags', key=tag)
12 return r.first() if r else None
14 @classmethod
15 def top_categories(cls, count):
16 return cls.view('directory/categories', descending=True, limit=count)
18 def get_tags(self):
19 return self.spellings + [self.label]
21 def __repr__(self):
22 return '%s (+%d variants)' % (self.label, len(self.spellings))