Exemple #1
0
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)
Exemple #2
0
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()
Exemple #3
0
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)
Exemple #4
0
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)
Exemple #5
0
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
Exemple #6
0
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)
Exemple #7
0
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)
Exemple #8
0
class AnalyticData(odm.StdModel):
    group = odm.ForeignKey(Group)
    object = odm.ForeignKey(ObjectAnalytics, related_name='analytics')
    data = odm.JSONField()
Exemple #9
0
class CrossData(odm.StdModel):
    name = odm.SymbolField()
    data = odm.JSONField(as_string=False)
    extra = odm.ForeignKey('self', required=False)
Exemple #10
0
class ComplexModel(odm.StdModel):
    name = odm.SymbolField()
    timestamp = odm.DateTimeField(as_cache=True)
    data = odm.JSONField(as_string=False, as_cache=True)
Exemple #11
0
class Statistics3(odm.StdModel):
    name = odm.SymbolField()
    data = odm.JSONField(as_string=False)
Exemple #12
0
class Statistics(odm.StdModel):
    dt = odm.DateField()
    data = odm.JSONField()
Exemple #13
0
class Role(odm.StdModel):
    name = odm.SymbolField(unique=True)
    permissions = odm.JSONField(default=list)

    def __unicode__(self):
        return self.name
Exemple #14
0
class Site(ModelBase):
    id = odm.IntegerField(primary_key=True)
    head = odm.JSONField()
    content = odm.JSONField()
    body = odm.JSONField()
Exemple #15
0
class Theme(odm.StdModel):
    timestamp = odm.DateTimeField(default=datetime.now)
    data = odm.JSONField()

    class Meta:
        ordering = '-timestamp'