Beispiel #1
0
class FeedBase(odm.StdModel):
    name = odm.SymbolField()
    live = odm.ForeignKey(CrossData, required=False)
    prev = odm.ForeignKey(CrossData, required=False)

    class Meta:
        abstract = True
Beispiel #2
0
class Position(odm.StdModel):
    instrument = odm.ForeignKey(Instrument, related_name='positions')
    fund = odm.ForeignKey(Fund, related_name='positions')
    dt = odm.DateField()
    size = odm.FloatField(default=1)

    def __unicode__(self):
        return '%s: %s @ %s' % (self.fund, self.instrument, self.dt)
Beispiel #3
0
class Folder(odm.StdModel):
    name = odm.SymbolField()
    view = odm.ForeignKey(PortfolioView, related_name='folders')
    positions = odm.ManyToManyField(Position, related_name='folders')
    parent = odm.ForeignKey('self', related_name='children', required=False)

    def __unicode__(self):
        return self.name
Beispiel #4
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
Beispiel #5
0
def register_for_permissions(model):
    if 'group' not in model._meta.dfields:
        group = odm.ForeignKey(Group, related_name=model.__name__.lower())
        group.register_with_model('group', model)
    group = model._meta.dfields['group']
    if not isinstance(group, odm.ForeignKey) or group.relmodel != Group:
        raise RuntimeError('group field of wrong type')
Beispiel #6
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 #7
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 #8
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 #9
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 #10
0
class Group(odm.StdModel, Subject):
    id = odm.CompositeIdField('name', 'user')
    name = odm.SymbolField()
    '''Group name. If the group is for a signle user, it can be the
user username'''
    user = odm.ForeignKey(User)
    '''A group is always `owned` by a :class:`User`. For example the ``admin``
group for a website is owned by the ``website`` user.'''
    #
    users = odm.ManyToManyField(User, related_name='groups')
    '''The :class:`stdnet.odm.ManyToManyField` for linking :class:`User`
and :class:`Group`.'''
    roles = odm.ManyToManyField('Role', related_name='subjects')

    manager_class = GroupManager

    def __unicode__(self):
        return self.name
Beispiel #11
0
class Role(odm.StdModel):
    '''A :class:`Role` is uniquely identified by its :attr:`name` and
:attr:`owner`.'''
    id = odm.CompositeIdField('name', 'owner')
    name = odm.SymbolField()
    '''The name of this role.'''
    owner = odm.ForeignKey(Group)
    '''The owner of this role-permission.'''
    permissions = odm.ManyToManyField(Permission, related_name='roles')
    '''the set of all :class:`Permission` assigned to this :class:`Role`.'''

    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()
        p = Permission(model_type=model_type, object_pk=pk,
                       operation=operation)
        session = self.session
        if session.transaction:
            session.add(p)
            self.permissions.add(p)
            return p
        else:
            with session.begin() as t:
                t.add(p)
                self.permissions.add(p)
            return t.add_callback(lambda r: p)

    def assignto(self, subject):
        '''Assign this :class:`Role` to ``subject``.'''
        return subject.assign(self)
Beispiel #12
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)
Beispiel #13
0
class Child(odm.StdModel):
    name = odm.SymbolField()
    parent = odm.ForeignKey(Parent)
    uncles = odm.ManyToManyField(Parent, related_name='nephews')
Beispiel #14
0
class Role(odm.StdModel):
    profile = odm.ForeignKey(Profile)
Beispiel #15
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 #16
0
class UserDefaultView(odm.StdModel):
    user = odm.SymbolField()
    view = odm.ForeignKey(PortfolioView)
Beispiel #17
0
class Person(odm.StdModel):
    name = odm.SymbolField()
    group = odm.ForeignKey(Group)
Beispiel #18
0
class PortfolioView(odm.StdModel):
    name = odm.SymbolField()
    portfolio = odm.ForeignKey(Fund)
Beispiel #19
0
class Node(odm.StdModel):
    parent = odm.ForeignKey('self', required=False, related_name='children')
    weight = odm.FloatField()

    def __unicode__(self):
        return '%s' % self.weight
Beispiel #20
0
class AnalyticData(odm.StdModel):
    group = odm.ForeignKey(Group)
    object = odm.ForeignKey(ObjectAnalytics, related_name='analytics')
    data = odm.JSONField()
Beispiel #21
0
class CrossData(odm.StdModel):
    name = odm.SymbolField()
    data = odm.JSONField(as_string=False)
    extra = odm.ForeignKey('self', required=False)