class Page(PageModel, ModelBase): '''The page model holds several information regarding pages in the sitemap.''' template = odm.CharField() site = odm.ForeignKey(Site) title = odm.CharField() link = odm.CharField() url = odm.SymbolField() in_navigation = odm.IntegerField(default=1) body_class = odm.CharField() # # Access soft_root = odm.BooleanField(default=False) in_sitemap = odm.BooleanField(default=True) published = odm.BooleanField(default=True) # # Content is a Json object content = odm.JSONField() head = odm.JSONField() manager_class = PageManger def __unicode__(self): return self.url #return escape(self.url) def path(self, **urlargs): return Route(self.url).url(**urlargs)
class Portfolio(odm.StdModel): user = odm.ForeignKey(User) name = odm.CharField(max_length=200) description = odm.CharField() def __unicode__(self): return self.name
class User(Model, Subject): '''The user of a system. The only field required is the :attr:`username`. which is also unique across all users. ''' username = odm.SymbolField(unique=True) password = odm.CharField(required=False, hidden=True) first_name = odm.CharField() last_name = odm.CharField() email = odm.SymbolField(required=False) is_active = odm.BooleanField(default=True) can_login = odm.BooleanField(default=True) is_superuser = odm.BooleanField(default=False) data = odm.JSONField() manager_class = UserManager def __unicode__(self): return self.username def fullname(self): if self.first_name or self.last_name: return ' '.join( (n for n in (self.first_name, self.last_name) if n)) else: return '' def is_authenticated(self): return self.can_login
class Book(odm.StdModel): title = odm.CharField() author = odm.CharField() year = odm.IntegerField() description = odm.CharField() def __unicode__(self): return self.title
class Person(odm.StdModel): firstname = odm.CharField(required=True) lastname = odm.CharField(required=True) created = odm.DateTimeField(default=datetime.utcnow) @property def n_items(self): return len(self.items.all()) def __unicode__(self): return "<Person '{0} {1}'>".format(self.firstname, self.lastname)
class User(odm.StdModel): '''The user of a system. The only field required is the :attr:`username`. which is also unique across all users.''' username = odm.SymbolField(unique=True) password = odm.CharField(required=False, hidden=True) first_name = odm.CharField() last_name = odm.CharField() email = odm.CharField() is_active = odm.BooleanField(default=True) can_login = odm.BooleanField(default=True) is_superuser = odm.BooleanField(default=False) def __unicode__(self): return self.username
class Group(Model): '''A group of users.''' name = odm.CharField(unique=True) users = odm.ManyToManyField(User, related_name='groups') description = odm.CharField() def permission_for_model(self, model): qs = tuple(self.permissions.query().filter( model_type=model).get_field('numeric_code')) if qs: return qs[0] def __unicode__(self): return self.name
class Post(odm.StdModel): dt = odm.DateTimeField(index=False, default=datetime.now) data = odm.CharField(required=True) user = odm.ForeignKey('examples.user', index=False) def __unicode__(self): return self.data
class Observer(odm.StdModel): # Underlyings are the Obsarvable this Observer is tracking for updates name = odm.CharField() underlyings = odm.ManyToManyField(Observable, related_name='observers') # field with a 5 seconds penalty updates = UpdatesField(class_field=True, penalty=5)
class Role(Model): '''A :class:`Role` is uniquely identified by its :attr:`name` and :attr:`owner`.''' id = odm.CompositeIdField('name', 'owner') name = odm.CharField() '''The name of this role.''' owner = odm.ForeignKey(User, related_name='own_roles') '''The owner of this role.''' permissions = odm.JSONField(default=list) '''the set of all :class:`Permission` assigned to this :class:`Role`.''' users = odm.ManyToManyField(User, related_name='roles') def __unicode__(self): return self.name def add_permission(self, resource, operation): '''Add a new :class:`Permission` for ``resource`` to perform an ``operation``. The resource can be either an object or a model.''' if isclass(resource): model_type = resource pk = '' else: model_type = resource.__class__ pk = resource.pkvalue() model = odm.get_hash_from_model(model_type) p = (model, pk, operation) if p not in self.permissions: self.permissions.append(p) def assignto(self, subject): '''Assign this :class:`Role` to ``subject``.''' return subject.assign(self)
class Todo2(odm.StdModel): title = odm.SymbolField(index=False) description = odm.CharField() when = odm.DateTimeField(required=False) def __unicode__(self): return self.title
class Item(odm.StdModel): name = odm.CharField(required=True) person = odm.ForeignKey(Person, related_name='items', required=False) checked_out = odm.BooleanField(default=False) updated = odm.DateTimeField(default=datetime.utcnow) def __unicode__(self): return '<Item {0!r}>'.format(self.name)
class DateValue(odm.StdModel): "An helper class for adding calendar events" dt = odm.DateField(index=False) value = odm.CharField() def score(self): "implement the score function for sorting in the ordered set" return int(1000 * time.mktime(self.dt.timetuple()))
class Account(odm.StdModel): id = fields.CompositeSymbolField('name', 'domain', seperator='@', primary_key=True) domain = fields.SortableSymbolField() name = odm.SymbolField() password = odm.CharField() submission_disabled = odm.BooleanField(default=False) subaddress_extension = odm.BooleanField(default=False) spoofing_whitelist = odm.CharField(default='') def __unicode__(self): return self.name + '@' + self.domain def set_password(self, password): self.password = sha512_crypt.encrypt(password) class Meta: ordering = 'id'
class Task(odm.StdModel): id = odm.SymbolField(primary_key=True) name = odm.CharField() timestamp = odm.DateTimeField(default=datetime.now) class Meta: ordering = '-timestamp' def clone(self, **kwargs): instance = super(Task, self).clone(**kwargs) instance.timestamp = None return instance
class Alias(odm.StdModel): id = fields.CompositeSymbolField('name', 'domain', seperator='@', primary_key=True) domain = fields.SortableSymbolField() name = odm.SymbolField() to = odm.CharField() def __unicode__(self): return self.name + '@' + self.domain class Meta: ordering = 'id'
class SimpleModel(odm.StdModel): code = odm.SymbolField(unique=True) group = odm.SymbolField(required=False) description = odm.CharField() somebytes = odm.ByteField() object = odm.PickleObjectField(required=False) cached_data = odm.ByteField(as_cache=True) timestamp = odm.DateTimeField(as_cache=True) number = odm.FloatField(required=False) manager_class = CustomManager def __unicode__(self): return self.code
class Content(ModelBase): '''Model for the content displayed on a page ``position`` element. .. attribute:: title Optional title for the content .. attribute:: slug Optional slug field for urls .. attribute:: content_type Type of content, by default the extension provides: * ``markdown`` * ``contenturl`` for :ref:`content from a url <cms-contenturl>` * ``blank`` an empty block ''' title = odm.CharField(required=True) content_type = odm.SymbolField() data = odm.JSONField() class Meta: search = ('title', 'keywords') manager_class = ContentManager def __unicode__(self): try: return '%s %s' % (self.content_type, self.id) except Exception: return self.__class__.__name__ def fields(self): fields = self.tojson() fields.pop('timestamp', None) data = fields.pop('data', None) if data: fields.update(data) return fields def set_fields(self, data): for name in self._meta.dfields: if name in data: value = data.pop(name) if name not in skip_fields: self.set(name, value) self.data.update(data)
class Instrument(Base): type = odm.SymbolField() description = odm.CharField()
class Item(odm.StdModel): name = odm.SymbolField() content = odm.CharField() counter = odm.IntegerField() related = odm.ForeignKey(RelatedItem, required=False) secret = odm.CharField(hidden=True)
class Plugin(odm.StdModel): name = odm.SymbolField(unique=True) description = odm.CharField()
class Group(odm.StdModel): name = odm.SymbolField() description = odm.CharField()
class Observable(odm.StdModel): name = odm.CharField()
class Fund(Base): description = odm.CharField()