wcs/wcs/categories.py

51 lines
1.3 KiB
Python

from qommon.storage import StorableObject
from qommon.misc import simplify
class Category(StorableObject):
_names = 'categories'
name = None
url_name = None
description = None
position = None
def __init__(self, name = None):
StorableObject.__init__(self)
self.name = name
def migrate(self):
changed = False
if not self.url_name:
self.url_name = simplify(self.name)
changed = True
if changed:
self.store()
def get_by_urlname(cls, url_name):
objects = [x for x in cls.select() if x.url_name == url_name]
if objects:
return objects[0]
raise KeyError()
get_by_urlname = classmethod(get_by_urlname)
def has_urlname(cls, url_name):
objects = [x for x in cls.select() if x.url_name == url_name]
if objects:
return True
return False
has_urlname = classmethod(has_urlname)
def sort_by_position(cls, categories):
def cmp_position(x, y):
if x.position == y.position:
return 0
if x.position is None:
return 1
if y.position is None:
return -1
return cmp(x.position, y.position)
categories.sort(cmp_position)
sort_by_position = classmethod(sort_by_position)