Пример #1
0
class Role(db.Model):
    uuid = db.Attribute(indexed=False)
    name = db.Attribute(required=True)
    description = db.Attribute(indexed=False)
    created_at = db.DateTimeField()
    updated_at = db.DateTimeField()
    permission = db.IntegerField(required=True)

    def __repr__(self):
        return "<{}-{:04X}>".format(self.name, self.permission)

    def __str__(self):
        return self.__repr__()

    def __unicode__(self):
        return self.__repr__()

    def to_json(self, user):
        rst = self.attributes_dict
        rst["created_at"] = format_datetime(self.created_at)
        rst["updated_at"] = format_datetime(self.updated_at)
        rst["created_by"] = user.id
        rst["updated_by"] = user.id
        rst["id"] = self.id
        return rst
Пример #2
0
class GroupSettings(RBase):
    id = models.Attribute(required=True)
    welcome_text = models.Attribute(default='')
    invite_text = models.Attribute(default='')
    group_tmpl = models.Attribute(default='')
    creators = models.ListField(str, default=[])
    creator_names = models.ListField(str, default=[])
Пример #3
0
class CommentModel(models.Model):
    author = models.Attribute()
    message = models.Attribute()
    contentId=models.Attribute()
    commentId=models.Attribute()
    commentTo=models.Attribute()
    gmtCreate = models.DateTimeField(auto_now_add=True)
Пример #4
0
class Link(r_models.Model):
    """Model that represents a shortened URL."""

    short_url = r_models.Attribute(unique=True)
    url = r_models.Attribute(required=True)
    date_submitted = r_models.DateTimeField(auto_now_add=True)
    usage_count = r_models.IntegerField(default=0, indexed=True)
    is_custom = r_models.BooleanField()

    def __unicode__(self):
        return '%s : %s' % (self.url, self.short_url)

    def save(self, *args, **kwargs):
        if hasattr(self, 'id'):
            super(self.__class__, self).save(*args, **kwargs)
            return

        if self.is_custom:
            pass
        else:
            self.short_url = utils.get_short_url()

        while True:
            existing_link = self.__class__.objects.filter(
                short_url=self.short_url)
            if existing_link:
                if self.is_custom:
                    raise ValueError('Custom url already exists')
                else:
                    self.short_url = utils.get_short
            else:
                break
        super(self.__class__, self).save(*args, **kwargs)
Пример #5
0
class Upload(db.Model):
    post = db.IntegerField(required=True)
    filename = db.Attribute(required=True)
    local_path = db.Attribute(required=True)
    cloud = db.IntegerField(required=True)
    url = db.Attribute(required=True)
    done_at = db.DateTimeField(auto_now_add=True)
Пример #6
0
class DeskModel(models.Model):
    desk_id = models.Attribute(unique=True)
    desk_owner = models.Attribute()
    desk_points = models.Counter()

    def add_id(self):
        self.desk_id = str(1000+int(self.id))
        self.save()
Пример #7
0
class TestSuit_Maintaince(models.Model):
    ''''''

    id = models.Counter(required=True, unique=True)
    overview = models.Attribute(required=True)
    target = models.Attribute(required=True)
    status = models.Attribute(required=True)
    detail = models.ListField(dict)
Пример #8
0
class ContentModel(models.Model):
    contentId=models.Attribute()
    gmtCreate = models.DateTimeField(auto_now_add=True)
    author = UserModel
    section=models.Attribute()
    content = models.Attribute()
    title=models.Attribute()
    imgList=models.ListField(str)
Пример #9
0
class DeviceInfoInterface(models.Model):
    ''''''

    timestamp = models.DateTimeField(required=True)
    cpu_usage = models.Attribute()
    mem_usage = models.Attribute()
    net_usage = models.Attribute()
    net_flow = models.ListField(dict)
    proc_info = models.ListField(dict)
Пример #10
0
class PlayerModel(models.Model):
    playerId = models.Attribute()
    player_phone = models.Attribute(required=True)
    player_name = models.Attribute(required=True)
    player_password = models.Attribute()
    last_login = models.DateTimeField()
    player_points = models.Counter()
    player_vip = models.IntegerField(default=0)
    player_desk = models.Attribute()
Пример #11
0
class DomainInfo(re_models.Model):
    name = re_models.Attribute(required=True)
    created_at = re_models.DateTimeField(auto_now_add=True)
    res_code = re_models.IntegerField(default=0)
    alert = re_models.BooleanField(default=False)
    new_msg = re_models.BooleanField(default=True)
    address = re_models.ListField(str)
    no_ip = re_models.ListField(str)
    info = re_models.Attribute()
Пример #12
0
class UserInterface(models.Model):
    ''''''

    id = models.IntegerField(required=True, unique=True)
    user = models.Attribute(required=True, unique=True)
    pwd = models.Attribute()
    description = models.Attribute()
    email = models.Attribute()
    avatar = models.Attribute()
    last_login = models.DateTimeField(auto_now=True)
Пример #13
0
class EventsDetails(models.Model):
    """
    Count against protocols
    """
    request_id = models.Attribute(required=True, unique=True)
    template_id = models.Attribute(required=True)
    status = models.Attribute(required=True)

    @property
    def db(cls):
        return redis.Redis(connection_pool=connection_pool)
Пример #14
0
class AccessToken(models.Model):
    """
    Model to store, in redis (via redisco) all tokens and their status
    """
    uid = models.Attribute(required=True, indexed=True, unique=True)
    login = models.Attribute(required=True, indexed=True)
    token = models.Attribute(required=True, indexed=True)
    backend = models.Attribute(required=True, indexed=True)
    status = models.IntegerField(required=True, indexed=True, default=200)
    last_use = models.DateTimeField(auto_now_add=True, auto_now=True)
    last_message = models.Attribute()

    def __unicode__(self):
        return str(self)

    def __str__(self):
        return self.uid

    def save(self):
        is_new = self.is_new()
        result = super(AccessToken, self).save()
        if result == True and is_new:
            self.release()
        return result

    def is_valid(self):
        """
        Overrive the default method to save the uid, which is unique (by
        concatenating backend and token)
        """
        self.uid = '%s:%s:%s' % (self.backend, self.login, self.token)
        return super(AccessToken, self).is_valid()

    def lock(self):
        """
        Set the token as currently used
        """
        return connection.srem(AVAILABLE_LIST_KEY, self.uid)

    def release(self):
        """
        Set the token as not currently used
        """
        return connection.sadd(AVAILABLE_LIST_KEY, self.uid)

    def set_status(self, code, message):
        """
        Set a new status and message for this token
        """
        self.status = code
        self.last_message = message
        self.save()
Пример #15
0
class UserModel(models.Model):

    gmtCreate = models.Attribute()
    openid = models.Attribute()
    nickName= models.Attribute()
    avatarUrl= models.Attribute()
    province= models.Attribute()
    city= models.Attribute()
    gender= models.Attribute()
    country= models.Attribute()
    language= models.Attribute()

    tel=models.Attribute()
Пример #16
0
class Images(db.Model):
    post_id = db.IntegerField(required=True)
    status = db.Attribute(required=True, default="active")
    image_name = db.Attribute(indexed=False)
    height = db.IntegerField(indexed=False)
    width = db.IntegerField(indexed=False)
    url = db.Attribute(indexed=False)
    delete_url = db.Attribute()
    local_path = db.Attribute(indexed=False)

    def to_json(self):
        return {
            "id": self.id, "post_id": self.post_id,
            "image_name": self.image_name,
            "url": self.url, "local_path": self.local_path
        }
Пример #17
0
class Trade(models.Model):
    exec_id = models.Attribute(required=True)
    order = models.ReferenceField('Order')
    trade_time = models.DateTimeField(required=True)
    price = models.FloatField(required=True, indexed=False)
    volume = models.FloatField(required=True, indexed=False)
    closed_volume = models.FloatField(required=True,
                                      default=0.0,
                                      indexed=False)
    commission = models.FloatField(required=True, default=0.0, indexed=False)
    profit = models.FloatField(required=True, default=0.0, indexed=False)

    @property
    def opened_volume(self):
        return self.volume - self.closed_volume

    @property
    def amount(self):
        return self.order.instrument.amount(self.price, self.volume)

    @property
    def opened_amount(self):
        return self.order.instrument.amount(self.price, self.opened_volume)

    def on_trade(self, price, volume, trade_time, exec_id, is_open):
        self.price = float(price)
        self.volume = float(volume)
        self.trade_time = trade_time
        self.exec_id = exec_id
        self.commission = self.order.instrument.calc_commission(
            price, volume, is_open)
        assert self.is_valid(), self.errors
        self.save()

    def on_close(self):
        for orig_trade in self.order.orig_order.trades:
            if abs(self.closed_volume) >= abs(self.volume):
                break
            if orig_trade.opened_volume == 0.0:
                continue
            if abs(orig_trade.opened_volume) < abs(self.opened_volume):
                vol = orig_trade.opened_volume
            else:
                vol = -self.opened_volume
            logger.debug('Trade {0} against {1} close volume={2}'.format(
                self.exec_id, orig_trade.exec_id, vol))
            self.closed_volume -= vol
            orig_trade.closed_volume += vol
            if self.order.instrument.indirect_quotation:
                self.profit += self.order.instrument.amount(
                    orig_trade.price, vol) - self.order.instrument.amount(
                        self.price, vol)
            else:
                self.profit += self.order.instrument.amount(
                    self.price - orig_trade.price, vol)
            assert orig_trade.is_valid(), orig_trade.errors
            orig_trade.save()
        assert self.is_valid(), self.errors
        self.save()
Пример #18
0
class PlayerDeskGame(models.Model):
    desk = models.Attribute()
    player = models.ReferenceField(PlayerModel)
    game = models.ReferenceField(GameModel)
    player_bet = models.ReferenceField(BetModel)
    player_win = models.IntegerField()
    player_remind = models.IntegerField()
    is_banker = models.BooleanField(default=False)
Пример #19
0
class GameModel(models.Model):
    desk = models.Attribute()
    game_time = models.DateTimeField(auto_now_add=True)
    all_bet = models.IntegerField(default=0)
    all_paid = models.IntegerField(default=0)
    game_result = models.ListField(int)
    bank_cards = models.ListField(int)
    player_cards = models.ListField(int)
Пример #20
0
class HttpRecord(BaseModel):
    uidentify = models.Attribute(required=True, indexed=True)
    name = models.Attribute(required=True)
    method = models.Attribute(required=True)
    data = models.Attribute()
    user_agent = models.Attribute()
    content_type = models.Attribute()
    remote_addr = models.Attribute()
Пример #21
0
class Stock(models.Model):
    sc_code = models.IntegerField(required=True)
    sc_name = models.Attribute(required=True)
    created_at = models.DateTimeField(auto_now_add=True)
    sc_open = models.FloatField()
    sc_high = models.FloatField()
    sc_low = models.FloatField()
    sc_close = models.FloatField()
    sc_prevclose = models.FloatField()
    sc_volume = models.IntegerField()
Пример #22
0
class Comment(db.Model):
    # 评论者的用户名
    author_name = db.Attribute()
    # 评论者的邮箱,如果没有设置头像会根据这个信息从gravatar获取头像
    author_email = db.Attribute()
    # 评论者的URL,评论者头像或者名字会跳转到改URL
    author_url = db.Attribute()
    # 评论者的IP
    ip = db.Attribute()
    # 评论者User Agent信息,通常包括浏览器版本、引擎、设备等信息
    agent = db.Attribute()
    # 这条评论被【赞】的次数,该属性导入意义不大,会在被喜欢之后重新统计
    likes = db.IntegerField()
    # 对这条评论点了【举报】的次数
    reports = db.IntegerField()
    # 评论发表时间。
    created_at = db.DateTimeField()
    # 评论状态。
    status = db.IntegerField()
Пример #23
0
class DeviceInterface(models.Model):
    ''''''

    dev_id = models.Attribute(required=True, unique=True)
    ip = models.Attribute(required=True)
    type = models.Attribute(required=True)
    name = models.Attribute(required=True)
    status = models.Attribute(required=True)
    static_info = models.Attribute(required=False)
    service_status = models.Attribute(required=False)
Пример #24
0
class Category(db.Model):
    name = db.Attribute(required=True)
    super = db.IntegerField()

    def to_json(self):
        jsn = {
            "id": self.id,
            "name": self.name
        }
        if self.super:
            jsn['super'] = self.super
        return jsn
Пример #25
0
class User(models.Model):
    username = models.Attribute(required=True, unique=True, label='Username')
    password = models.Attribute(required=True, label='Password')
    email = models.Attribute(required=True, unique=True, label='Email')
    name = models.Attribute(required=True, label='Name')

    groups = models.ListField(Group, label='Groups')

    def __init__(self, *args, **kwargs):
        super(User, self).__init__(*args, **kwargs)
        self.job = ['one', 'two', 'three']

    def save(self):
        if self.is_new():
            self.attributes['password'] = hashlib.md5(self.password)
        else:
            if self.password:
                self.attributes['password'] = hashlib.md5(self.password)
        return super(User, self).save()

    def validate_password(self, password):
        return self.password == hashlib.md5(password).hexdigest()

    @property
    def permissions(self):
        perms = []
        for group in self.groups:
            perms += group.permissions
        return perms

    @property
    def link(self):
        from solder import url
        return link_to(self.username, url.current(controller='user',\
            action='show', id=self.username))

    @staticmethod
    def get(username):
        return User.objects.filter(username=username).first()
Пример #26
0
class Chairman(models.Model):
    id = models.Attribute(unique=True)
    # pk = models.Attribute(unique=True)
    title = models.Attribute()
    name = models.Attribute()
    href = models.Attribute()
    img = models.Attribute()
    num = models.IntegerField()
    desc = models.Attribute()
    type = models.Attribute()
    avatar = models.Attribute()

    object_name = 'chairman'

    def __init__(self, *args, **kwargs):
        super(Chairman, self).__init__(**kwargs)
        if 'ele' in kwargs:
            ele = json.loads(kwargs['ele'])
            self.id = ele['_id']
            self.title = ele['_title']
            self.name = ele['_name']
            self.href = ele['_href']
            self.num = ele['_num']
            self.img = ele['_img']
            self.desc = ele['_desc']
            self.type = ele['_type']
            self.avatar = ele['_avatar']

    def set_id(self, id):
        self.pk = id
        self.id = id

    def set_num(self, num):
        if '万' in num:
            self.num = int(
                round(
                    float(
                        num.replace('万', '').replace('\r', '').replace(
                            '\n', '')) * 10000))
        else:
            self.num = int(num)

    def __unicode__(self):
        return json.dumps(self,
                          default=lambda o: o.__dict__,
                          sort_keys=True,
                          indent=4)
Пример #27
0
class Product(models.Model):
    """
    >>> p = Product.objects.create(prodid='XX', exchangeid='XXXX')
    >>> p
    XX
    >>> p.instruments
    []
    >>> i = Instrument.objects.create(secid='XX1505', name='XX1505', symbol='XX1505', product=p, quoted_currency='USD')
    >>> p.instruments
    [XX1505]
    >>> i.delete()
    >>> p.delete()
    """
    prodid = models.Attribute()
    exchangeid = models.Attribute()
    is_trading = models.BooleanField()
    main_inst = models.ReferenceField(Instrument)

    def __repr__(self):
        return self.prodid

    @property
    def instruments(self):
        return Instrument.objects.filter(product_id=self.id)
Пример #28
0
class LinkAccess(r_models.Model):
    """Model that represents access of a shortened url."""

    link = r_models.ReferenceField(Link)
    country = r_models.Attribute()
    region = r_models.Attribute()
    referrer = r_models.Attribute()
    lat = r_models.Attribute()
    lng = r_models.Attribute()
    ip = r_models.Attribute()
    atime = r_models.DateTimeField(auto_now_add=True)

    def save(self, *args, **kwargs):
        super(LinkAccess, self).save(*args, **kwargs)
        thread.start_new_thread(geotag_link_access, (self, True))
Пример #29
0
class Tag(db.Model):
    uuid = db.Attribute(indexed=False)
    name = db.Attribute(indexed=False)
    slug = db.Attribute(indexed=False)
    hidden = db.BooleanField()
    parent = db.Attribute(indexed=False)
    image = db.Attribute(indexed=False)
    meta_title = db.Attribute(indexed=False)
    meta_description = db.Attribute(indexed=False)
    created_at = db.DateTimeField()
    updated_at = db.DateTimeField()

    def to_json(self):
        rst = self.attributes_dict
        rst["id"] = self.id
        rst["created_at"] = format_now_datetime(self.created_at)
        rst["updated_at"] = format_now_datetime(self.updated_at)
        rst["created_by"] = None
        rst["updated_by"] = None
        return rst
Пример #30
0
 class Person(models.Model):
     name = models.Attribute()
     friend = models.ReferenceField('Person')