Beispiel #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)
Beispiel #2
0
 class Portfolio(odm.StdModel):
     user = odm.ForeignKey(User)
     name = odm.CharField(max_length=200)
     description = odm.CharField()
     
     def __unicode__(self):
         return self.name
Beispiel #3
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
Beispiel #4
0
 class Book(odm.StdModel):
     title = odm.CharField()
     author = odm.CharField()
     year = odm.IntegerField()
     description = odm.CharField()
     
     def __unicode__(self):
         return self.title
Beispiel #5
0
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)
Beispiel #6
0
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
Beispiel #7
0
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
Beispiel #8
0
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)
Beispiel #10
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)
Beispiel #11
0
class Todo2(odm.StdModel):
    title = odm.SymbolField(index=False)
    description = odm.CharField()
    when = odm.DateTimeField(required=False)

    def __unicode__(self):
        return self.title
Beispiel #12
0
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)
Beispiel #13
0
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()))
Beispiel #14
0
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'
Beispiel #15
0
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
Beispiel #16
0
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'
Beispiel #17
0
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
Beispiel #18
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)
Beispiel #19
0
class Instrument(Base):
    type = odm.SymbolField()
    description = odm.CharField()
Beispiel #20
0
class Item(odm.StdModel):
    name = odm.SymbolField()
    content = odm.CharField()
    counter = odm.IntegerField()
    related = odm.ForeignKey(RelatedItem, required=False)
    secret = odm.CharField(hidden=True)
Beispiel #21
0
class Plugin(odm.StdModel):
    name = odm.SymbolField(unique=True)
    description = odm.CharField()
Beispiel #22
0
class Group(odm.StdModel):
    name = odm.SymbolField()
    description = odm.CharField()
Beispiel #23
0
class Observable(odm.StdModel):
    name = odm.CharField()
Beispiel #24
0
class Fund(Base):
    description = odm.CharField()