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 NumericData(odm.StdModel): pv = odm.FloatField() vega = odm.FloatField(default=0.0) delta = odm.FloatField(default=1.0) gamma = odm.FloatField(required=False) data = odm.JSONField(as_string=False) ok = odm.BooleanField()
class TaskData(odm.StdModel): id = odm.SymbolField(primary_key=True) overlap_id = odm.SymbolField(required=False) name = odm.SymbolField() status = odm.SymbolField() args = odm.PickleObjectField() kwargs = odm.PickleObjectField() result = odm.PickleObjectField() from_task = odm.SymbolField(required=False) time_executed = odm.DateTimeField(index=False) time_started = odm.DateTimeField(required=False, index=False) time_ended = odm.DateTimeField(required=False, index=False) expiry = odm.DateTimeField(required=False, index=False) meta = odm.JSONField() # # List where all TaskData ids are queued queue = odm.ListField(class_field=True) # Set where TaskData ids under execution are stored executing = odm.SetField(class_field=True) class Meta: app_label = 'tasks' def as_task(self): params = dict(self.meta or {}) for field in self._meta.scalarfields: params[field.name] = getattr(self, field.attname, None) return backends.Task(self.id, **params) def __unicode__(self): return '%s (%s)' % (self.name, self.status)
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 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 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 Session(Model): '''A session model with a hash table as data store.''' serializable = False TEST_COOKIE_NAME = 'testcookie' TEST_COOKIE_VALUE = 'worked' id = odm.SymbolField(primary_key=True) data = odm.JSONField() expiry = odm.DateTimeField() user = odm.ForeignKey(User) must_save = False modified = True def __unicode__(self): return self.id @property def expired(self): return datetime.now() >= self.expiry def get(self, key, default=None): return self.data.get(key, default) def __contains__(self, key): return key in self.data def __getitem__(self, key): return self.data[key] def __setitem__(self, key, val): self.data[key] = val self.must_save = True def __delitem__(self, key): del self.data[key] def pop(self, key, *arg): return self.data.pop(key, *arg)
class AnalyticData(odm.StdModel): group = odm.ForeignKey(Group) object = odm.ForeignKey(ObjectAnalytics, related_name='analytics') data = odm.JSONField()
class CrossData(odm.StdModel): name = odm.SymbolField() data = odm.JSONField(as_string=False) extra = odm.ForeignKey('self', required=False)
class ComplexModel(odm.StdModel): name = odm.SymbolField() timestamp = odm.DateTimeField(as_cache=True) data = odm.JSONField(as_string=False, as_cache=True)
class Statistics3(odm.StdModel): name = odm.SymbolField() data = odm.JSONField(as_string=False)
class Statistics(odm.StdModel): dt = odm.DateField() data = odm.JSONField()
class Role(odm.StdModel): name = odm.SymbolField(unique=True) permissions = odm.JSONField(default=list) def __unicode__(self): return self.name
class Site(ModelBase): id = odm.IntegerField(primary_key=True) head = odm.JSONField() content = odm.JSONField() body = odm.JSONField()
class Theme(odm.StdModel): timestamp = odm.DateTimeField(default=datetime.now) data = odm.JSONField() class Meta: ordering = '-timestamp'