예제 #1
0
class ResultORM(BaseResultORM):
    """
        Hold the result of an atomic single calculation
    """

    # uniquely identifying a result
    program = db.StringField(required=True)  # example "rdkit", is it the same as program in keywords?
    driver = db.StringField(required=True)  # example "gradient"
    method = db.StringField(required=True)  # example "uff"
    basis = db.StringField()
    molecule = db.LazyReferenceField(MoleculeORM, required=True)

    # This is a special case where KeywordsORM are denormalized intentionally as they are part of the
    # lookup for a single result and querying a result will not often request the keywords (LazyReference)
    keywords = db.LazyReferenceField(KeywordsORM)

    # output related
    properties = db.DynamicField()  # accept any, no validation
    return_result = db.DynamicField()  # better performance than db.ListField(db.FloatField())
    provenance = db.DynamicField()  # or an Embedded Documents with a structure?

    schema_name = db.StringField()  # default="qc_ret_data_output"??
    schema_version = db.IntField()  # or String?

    meta = {
        'collection': 'result',
        'indexes': [
            {
                'fields': ('program', 'driver', 'method', 'basis', 'molecule', 'keywords'),
                'unique': True
            },
        ]
    }
예제 #2
0
class feedbackParticipance(models.Document):
    webapp_user_id = models.LongField(default=0)  #参与者id
    member_id = models.LongField(default=0)  #参与者id
    tel = models.StringField(default="", max_length=100)
    termite_data = models.DynamicField(default="")  #termite数据
    prize = models.DynamicField(default="")  #反馈奖励
    created_at = models.DateTimeField()  #创建时间

    meta = {'collection': 'feedback_feedback_participance', 'db_alias': 'apps'}
예제 #3
0
class FormData(mongo.Document):
    id = mongo.UUIDField(required=False)
    location = mongo.ReferenceField("Location", required=False)
    user = mongo.ReferenceField("User", required=False)
    form_schema = mongo.DynamicField(required=False)
    data = mongo.DynamicField(required=False)
    created = mongo.DateTimeField(default=datetime.datetime.today().date(),
                                  required=False)
    last_updated = mongo.DateTimeField(
        default=datetime.datetime.today().date(), required=False)
예제 #4
0
파일: models.py 프로젝트: chengdg/weizoom
class eventParticipance(models.Document):
    webapp_user_id = models.LongField(default=0)  #参与者id
    member_id = models.LongField(default=0)  #参与者id
    belong_to = models.StringField(default="", max_length=100)  #对应的活动id
    tel = models.StringField(default="", max_length=100)
    termite_data = models.DynamicField(default="")  #termite数据
    prize = models.DynamicField(default="")  #活动奖励
    created_at = models.DateTimeField()  #创建时间

    meta = {'collection': 'event_event_participance', 'db_alias': 'apps'}
예제 #5
0
파일: mongoo.py 프로젝트: hiqlabs/mongoo
class housekeep(meng.Document):
    start = meng.DynamicField(primary_key=True)
    end = meng.DynamicField()
    total = meng.IntField()  # total # of entries to do
    good = meng.IntField(default=0)  # entries successfully processed
    bad = meng.IntField(
        default=0)  # entries we failed to process to completion
    log = meng.ListField(
    )  # log of misery -- each item a failed processing incident
    state = StringEnumField(hkstate, default='open')
    git = meng.StringField(
    )  # git commit of this version of source_destination
    tstart = meng.DateTimeField()  # Time when job started
    time = meng.DateTimeField()  # Time when job finished
    meta = {'indexes': ['state', 'time']}
예제 #6
0
class housekeep(meng.Document):
    start = meng.DynamicField(primary_key = True)
    end = meng.DynamicField()
    total = meng.IntField()  # total # of entries to do
    good = meng.IntField(default = 0)  # entries successfully processed
#     bad = meng.IntField(default = 0)                    # entries we failed to process to completion
#     log = meng.ListField()                              # log of misery -- each item a failed processing incident
    state = meng.StringField(default = 'open')
    # Globally unique identifier for the process, if any, that is working on
    # this chunk, to know if something else is working on it
    procname = meng.StringField(default = 'none')
#     git = meng.StringField()                                 # git commit of this version of source_destination
    tstart = meng.DateTimeField()  # Time when job started
    time = meng.DateTimeField()  # Time when job finished
    meta = {'indexes': ['state', 'time']}
예제 #7
0
class CrashReportRequest(me.EmbeddedDocument):
    """
    Represents a request made to the API.
    """

    # cookies = me.DictField(default=None)
    # hooks = me.DictField(default=None)
    # auth = me.DynamicField(default=None)
    # data = me.DynamicField(default=None, null=True)
    # files = me.DictField(default=None, null=True)
    # json = me.DynamicField(default=None, null=True)

    headers = me.DictField(default=None, null=True)
    """Headers of the request"""

    method = me.StringField(default=None)
    """HTTP method of the request"""

    params = me.DynamicField(default=None, null=True)
    """URL parameters of the request"""

    url = me.StringField(default=None)
    """URL of the request"""
    def to_dict(self) -> dict:
        """
        Returns a dict representation
        """
        return {
            "headers": self.headers,
            "method": self.method,
            "params": self.params,
            "url": self.url,
        }
예제 #8
0
class QueryFilter(me.EmbeddedDocument):
    """A selector used to further filter a dataset.

    This type of selector/filter may be used by any non-arbitrary rule type.
    However, a QueryFilter is not the same as a resource condition, found in
    mist.api.conditions.models. For instance, trying to use a QueryFilter in
    order to apply filtering based on tags might give weird results. Instead,
    use a QueryFilter in order to filter data, such as time series, based on
    the dataset's own metadata.

    For example, `QueryFilter(key='name', value='sda', operator='eq')` could
    return the time series corresponding to a specific disk partition.

    """

    key = me.StringField(required=True)
    value = me.StringField(required=True)
    operator = me.DynamicField(required=True, choices=OPERATORS)

    def as_dict(self):
        return {
            'key': self.key,
            'value': self.value,
            'operator': self.operator
        }

    def __str__(self):
        return '%s %s %s' % (self.key, self.get_operator_display(), self.value)
예제 #9
0
class ProcedureORM(BaseResultORM):
    """
        A procedure is a group of related results applied to a list of molecules.
    """

    procedure = db.StringField(required=True)
    program = db.StringField(required=True)  # example: 'Geometric'
    hash_index = db.StringField(required=True)

    # Unlike ResultORMs KeywordsORM are not denormalized here as a ProcedureORM query will always want the
    # keywords and the keywords are not part of the index.
    keywords = db.DynamicField()

    meta = {
        'collection':
        'procedure',
        'allow_inheritance':
        True,
        'indexes': [
            # TODO: needs a unique index, + molecule?
            {
                'fields': ('procedure', 'program'),
                'unique': False
            },  # TODO: check
            {
                'fields': ('hash_index', ),
                'unique': False
            }  # used in queries
        ]
    }
예제 #10
0
class Task(db.DynamicDocument):

    spec = db.DynamicField()

    # others
    tag = db.StringField(default=None)
    program = db.StringField(default=None)
    procedure = db.StringField(default=None)
    created_on = db.DateTimeField(required=True)
    status = db.StringField(default=None)
    priority = db.IntField(default=None)

    def save(self, *args, **kwargs):
        """Override save to update modified_on"""
        if not self.created_on:
            self.created_on = datetime.datetime.utcnow()

        return super(Task, self).save(*args, **kwargs)

    meta = {
        "collection": "task_queue",
        "indexes": [
            "created_on",
            "status",
            "priority",
            "tag",
            "program",
            "procedure",
            {"fields": ("program", "procedure"), "unique": False},
        ],
    }
예제 #11
0
class FieldCondition(BaseCondition):
    """Generic condition for any field which is supported by specific
    collection."""

    ctype = 'field'

    field = me.StringField(required=True)
    value = me.DynamicField(required=True)
    operator = me.StringField(required=True,
                              default='eq',
                              choices=('eq', 'ne', 'gt', 'lt'))

    @property
    def q(self):
        if self.operator == 'eq':
            return me.Q(**{self.field: self.value})
        return me.Q(**{'%s__%s' % (self.field, self.operator): self.value})

    def as_dict(self):
        return {
            'type': self.ctype,
            'field': self.field,
            'value': self.value,
            'operator': self.operator
        }
예제 #12
0
class Task(db.DynamicDocument):

    spec = db.DynamicField()

    # others
    tag = db.StringField(default=None)
    program = db.StringField(default=None)
    procedure = db.StringField(default=None)
    created_on = db.DateTimeField(required=True)
    status = db.StringField(default=None)
    priority = db.IntField(default=None)

    def save(self, *args, **kwargs):
        """Override save to update modified_on"""
        if not self.created_on:
            self.created_on = datetime.datetime.utcnow()

        return super(Task, self).save(*args, **kwargs)

    meta = {
        'collection':
        'task_queue',
        'indexes': [
            'created_on',
            'status',
            'priority',
            'tag',
            'program',
            'procedure',
            {
                'fields': ("program", "procedure"),
                'unique': False
            },
        ]
    }
class Identity(me.DynamicEmbeddedDocument):
    """Represents an identity the user connects with in the database."""
    user_id = me.DynamicField(required=True, unique=True)
    provider = me.StringField(required=True,
                              choices=['github', 'facebook', 'google-oauth2'])
    isSocial = me.BooleanField(required=True, default=False)
    connection = me.StringField(
        required=True, choices=['github', 'facebook', 'google-oauth2'])
예제 #14
0
class TaskQueueORM(CustomDynamicDocument):
    """A queue of tasks corresponding to a procedure.

       Notes: Don't sort query results without having the index sorted
              or it will impact the performance.
    """

    spec = db.DynamicField()
    parser = db.StringField()
    status = db.StringField(
        default='WAITING', choices=['RUNNING', 'WAITING', 'ERROR', 'COMPLETE'])

    program = db.StringField()
    procedure = db.StringField()
    manager = db.StringField()

    # others
    priority: db.IntField(default=1)
    tag = db.StringField(default=None)

    # can reference ResultORMs or any ProcedureORM
    base_result = db.GenericLazyReferenceField(
        dbref=True)  # use res.id and res.document_type (class)

    created_on = db.DateTimeField(required=True)
    modified_on = db.DateTimeField(required=True)

    meta = {
        'collection':
        'task_queue',
        'indexes': [
            'created_on',
            'status',

            # Specification fields
            {
                'fields': ('program', 'procedure'),
            },  # new
            'manager',

            # order effects
            'tag',
            'priority',
            {
                'fields': ('base_result', ),
                'unique': True
            },  # new
        ]
    }

    def save(self, *args, **kwargs):
        """Override save to update modified_on."""
        self.modified_on = datetime.datetime.utcnow()
        if not self.created_on:
            self.created_on = datetime.datetime.utcnow()

        return super(TaskQueueORM, self).save(*args, **kwargs)
예제 #15
0
class PowerMeParticipance(models.Document):
    member_id = models.LongField(default=0)  #参与者id
    belong_to = models.StringField(default="", max_length=100)  #对应的活动id
    created_at = models.DateTimeField()  #创建时间
    has_join = models.BooleanField(default=False)  #是否已参与微助力
    power = models.IntField(default=0)  #助力值
    powered_member_id = models.DynamicField()  #已助力的会员id list

    meta = {'collection': 'powerme_powerme_participance', 'db_alias': 'apps'}
예제 #16
0
class UserappHasTemplateMessages(mongo_models.Document):
    """
	各百宝箱活动所配置的模板消息
	"""
    owner_id = mongo_models.LongField()  #所属商家
    apps_type = mongo_models.StringField(max_length=64)  #活动类型
    data_control = mongo_models.DynamicField(
    )  #模板选择选择控制 e.g {"success": "template_id1", "fail": "template_id2"}

    meta = {'collection': 'apps_Userapp_has_template', 'db_alias': 'apps'}
예제 #17
0
class RatingManager(mongoconnector.Document):
    rating=mongoconnector.FloatField()
    rating_history=mongoconnector.ListField(mongoconnector.IntField(choices=[1,2,3,4,5]))
    dynamic_review=mongoconnector.ListField(mongoconnector.DynamicField())
    sorting_rating=mongoconnector.SortedListField(mongoconnector.IntField())
    #multi dimensional array##
    multi_rating=mongoconnector.ListField(mongoconnector.ListField(mongoconnector.IntField()))

    def calc_rating(self):
        self.rating=mean([n for n in self.rating_history if n is not None])
예제 #18
0
class KeywordsORM(CustomDynamicDocument):
    """
        KeywordsORM are unique for a specific program and name.
    """

    # TODO: pull choices from const config
    hash_index = db.StringField(required=True)
    values = db.DynamicField()

    meta = {'indexes': [{'fields': ('hash_index', ), 'unique': True}]}
예제 #19
0
class exSignDetails(models.Document):
    """
	签到详情记录表
	"""
    member_id = models.LongField(default=0)  #参与者id
    belong_to = models.StringField(default="", max_length=100)  #对应的活动id
    created_at = models.DateTimeField()  #创建时间
    prize = models.DynamicField()  #奖励信息
    type = models.StringField(default=u"页面签到", max_length=20)  #页面签到 or 自动签到

    meta = {'collection': 'exsign_exsign_details', 'db_alias': 'apps'}
예제 #20
0
class TransactionLog(me.Document):
    """Capped Collection to Log transactions."""

    timestamp = me.DateTimeField(
        required=True,
        default=datetime.utcnow()
    )
    collection = me.StringField(required=True)
    doc_id = me.DynamicField()
    ts = me.SequenceField()

    meta = {"max_documents": 100000}
예제 #21
0
파일: models.py 프로젝트: chengdg/weizoom
class RedPacket(models.Document):
    owner_id = models.LongField()  #创建人id
    name = models.StringField(default="", max_length=100)  #名称
    start_time = models.DateTimeField()  #开始时间
    end_time = models.DateTimeField()  #结束时间
    status = models.IntField(default=0)  #状态
    related_page_id = models.StringField(default="",
                                         max_length=100)  #termite page的id
    timing = models.BooleanField(default=True)  #是否显示倒计时
    red_packet_type = models.StringField(default="random",
                                         max_length=10)  #红包方式,默认为拼手气红包
    random_total_money = models.StringField(default="",
                                            max_length=10)  #拼手气红包总金额
    random_packets_number = models.StringField(default="",
                                               max_length=10)  #拼手气红包红包个数
    random_random_number_list = models.ListField()  #随机正负金额List
    regular_packets_number = models.StringField(default="",
                                                max_length=10)  #普通红包红包个数
    regular_per_money = models.StringField(default="",
                                           max_length=10)  #普通红包单个金额
    money_range = models.StringField(default="", max_length=50)  #好友贡献金额区间
    reply_content = models.StringField(default="", max_length=50)  #参与活动回复语
    material_image = models.StringField(default="", max_length=1024)  #分享的图片链接
    share_description = models.StringField(default="", max_length=1024)  #分享描述
    wishing = models.StringField(default="", max_length=50)  #开现金红包文字
    qrcode = models.DynamicField()  #带参数二维码ticket,name
    red_packet_remain_amount = models.IntField(default=0)  #剩余可领取的红包总量
    created_at = models.DateTimeField()  #创建时间

    meta = {'collection': 'red_packet_red_packet', 'db_alias': 'apps'}

    @property
    def status_text(self):
        if self.status == STATUS_NOT_START:
            return u'未开始'
        elif self.status == STATUS_RUNNING:
            now = datetime.today()
            if now >= self.end_time:
                return u'已结束'
            else:
                return u'进行中'
        elif self.status == STATUS_STOPED:
            return u'已结束'
        else:
            return u'未知'

    @property
    def is_finished(self):
        status_text = self.status_text
        if status_text == u'已结束':
            return True
        else:
            return False
예제 #22
0
class QueueManagerORM(CustomDynamicDocument):
    """
    """

    name = db.StringField(unique=True)
    cluster = db.StringField()
    hostname = db.StringField()
    uuid = db.StringField()

    username = db.StringField()
    qcengine_version = db.StringField()
    manager_version = db.StringField()

    tag = db.StringField()
    programs = db.DynamicField()
    procedures = db.DynamicField()

    # counts
    completed = db.IntField(default=0)
    submitted = db.IntField(default=0)
    failures = db.IntField(default=0)
    returned = db.IntField(default=0)

    status = db.StringField(default='INACTIVE', choices=['ACTIVE', 'INACTIVE'])

    created_on = db.DateTimeField(required=True)
    modified_on = db.DateTimeField(required=True)

    meta = {
        'collection': 'queue_manager',
        'indexes': ['status', 'name', 'modified_on']
    }

    def save(self, *args, **kwargs):
        """Override save to update modified_on."""
        self.modified_on = datetime.datetime.utcnow()
        if not self.created_on:
            self.created_on = datetime.datetime.utcnow()

        return super(QueueManagerORM, self).save(*args, **kwargs)
예제 #23
0
class Exlottery(models.Document):
    owner_id = models.LongField()  #创建人id
    name = models.StringField(default="", max_length=100)  #名称
    lottery_type = models.StringField(default="roulette",
                                      max_length=100)  #抽奖类型
    start_time = models.DateTimeField()  #开始时间
    end_time = models.DateTimeField()  #结束时间
    status = models.IntField(default=0)  #状态
    participant_count = models.IntField(default=0)  #参与者数量
    winner_count = models.IntField(default=0)  #中奖人数
    related_page_id = models.StringField(default="",
                                         max_length=100)  #termite page的id
    created_at = models.DateTimeField()  #创建时间
    # expend = models.IntField(default=0) #消耗积分
    # delivery = models.IntField(default=0) #参与送积分
    chance = models.IntField(default=0)  #中奖几率
    allow_repeat = models.StringField(default="true", max_length=10)  #是否允许重复中奖
    prize = models.DynamicField()  #每个奖项的奖品数量

    share_description = models.StringField(default="", max_length=30)  #分享说明
    lottery_code_count = models.IntField(default=0)  #抽奖码数量
    homepage_image = models.StringField(default="", max_length=256)  #首页背景图
    exlottery_bg_image = models.StringField(default="",
                                            max_length=256)  # 抽奖背景图
    #证书文存放件路径
    cert_pem_path = models.StringField(default="", max_length=256)  #证书
    key_pem_path = models.StringField(default="", max_length=256)  #证书密钥

    meta = {'collection': 'exlottery_exlottery', 'db_alias': 'apps'}

    @property
    def status_text(self):
        if self.status == STATUS_NOT_START:
            return u'未开始'
        elif self.status == STATUS_RUNNING:
            now = datetime.today()
            if now >= self.end_time:
                return u'已结束'
            else:
                return u'进行中'
        elif self.status == STATUS_STOPED:
            return u'已结束'
        else:
            return u'未知'

    @property
    def is_finished(self):
        status_text = self.status_text
        if status_text == u'已结束':
            return True
        else:
            return False
예제 #24
0
파일: models.py 프로젝트: chengdg/weizoom
class Group(models.Document):
    owner_id = models.LongField()  #创建人id
    related_page_id = models.StringField(default="",
                                         max_length=100)  #termite page的id
    name = models.StringField(default="", max_length=100)  #名称
    start_time = models.DateTimeField()  #开始时间
    end_time = models.DateTimeField()  #结束时间
    status = models.IntField(default=0)  #状态
    is_use = models.IntField(default=1)  #删除状态 1未删除,0删除
    handle_status = models.IntField(default=0)  #手动状态 0关闭,1开启
    created_at = models.DateTimeField()  #创建时间
    group_dict = models.DynamicField(
    )  #团购活动字典{'0':{'group_type':'5','group_days':'10','group_price':'100.00'},...}
    # product_dict = models.DynamicField() #活动商品
    product_id = models.IntField()  #商品id
    product_img = models.StringField()  #商品图片
    product_name = models.StringField()  #商品名称
    product_price = models.StringField()  #商品价格
    product_socks = models.StringField()  #商品库存
    product_sales = models.StringField()  #商品销量
    product_usercode = models.StringField()  #商品编码
    product_create_at = models.StringField()  #商品创建时间
    rules = models.StringField()  #团购说明
    material_image = models.StringField()  #分享图片
    share_description = models.StringField()  #分享描述
    visited_member = models.ListField()  #浏览过的member_list

    meta = {'collection': 'group_group', 'db_alias': 'apps'}

    @property
    def status_text(self):
        if self.status == STATUS_NOT_START:
            return u'未开启'
        elif self.status == STATUS_RUNNING:
            now = datetime.today()
            if now >= self.end_time:
                return u'已结束'
            else:
                return u'进行中'
        elif self.status == STATUS_STOPED:
            return u'已结束'
        else:
            return u'未知'

    @property
    def is_finished(self):
        status_text = self.status_text
        if status_text == u'已结束':
            return True
        else:
            return False
예제 #25
0
class Rebate(models.Document):
    owner_id = models.LongField()  #创建人id
    name = models.StringField(default="", max_length=100)  #名称
    start_time = models.DateTimeField()  #开始时间
    end_time = models.DateTimeField()  #结束时间
    status = models.IntField(default=0)  #状态
    permission = models.BooleanField()  #已关注会员可参与
    is_limit_first_buy = models.BooleanField()  #订单返利条件是否限制首单
    is_limit_cash = models.BooleanField()  #订单金额是否为现金
    rebate_order_price = models.FloatField()  #订单返利需满多少元
    rebate_money = models.FloatField()  #返利返多少元
    weizoom_card_file_path = models.StringField()  #文件路径
    # weizoom_card_id_from = models.StringField() #发放微众卡号段
    # weizoom_card_id_to = models.StringField() #发放微众卡号段
    reply_type = models.IntField()  #扫码后回复:1/文字,2/图文消息
    reply_detail = models.DynamicField()  #扫码后回复文字
    reply_material_id = models.StringField()  #扫码后回复图文id
    ticket_id = models.IntField()  #唯一的字段,用于创建ticket时使用
    ticket = models.StringField(default="", max_length=256)
    is_deleted = models.BooleanField(default=False)  #是否被删除
    created_at = models.DateTimeField()  #创建时间

    meta = {'collection': 'rebate_rebate', 'db_alias': 'apps'}

    @property
    def status_text(self):
        if self.status == STATUS_NOT_START:
            return u'未开始'
        elif self.status == STATUS_RUNNING:
            now = datetime.today()
            if now >= self.end_time:
                return u'已结束'
            else:
                return u'进行中'
        elif self.status == STATUS_STOPED:
            return u'已结束'
        else:
            return u'未知'

    @property
    def is_finished(self):
        status_text = self.status_text
        if status_text == u'已结束':
            return True
        else:
            return False
예제 #26
0
파일: events.py 프로젝트: scutojr/parrot
class BasicEvent(me.Document):
    topic = me.StringField()
    hostname = me.StringField()
    service = me.StringField()
    status = me.StringField()
    output = me.StringField()
    timestampt = me.LongField()
    tags = me.DynamicField()

    meta = {'allow_inheritance': True}

    @staticmethod
    def from_dict(data: dict):
        return BasicEvent(**data)

    def to_dict(self) -> dict:
        pass
예제 #27
0
class Scanlottery(models.Document):
	owner_id = models.LongField() #创建人id
	name = models.StringField(default="", max_length=100) #名称
	lottery_type = models.StringField(default="roulette", max_length=100) #抽奖类型
	start_time = models.DateTimeField() #开始时间
	end_time = models.DateTimeField() #结束时间
	status = models.IntField(default=0) #状态
	participant_count = models.IntField(default=0) #参与者数量
	winner_count = models.IntField(default=0) #中奖人数
	related_page_id = models.StringField(default="", max_length=100) #termite page的id
	created_at = models.DateTimeField() #创建时间
	chance = models.IntField(default=0) #中奖几率
	prize = models.DynamicField() #每个奖项的奖品数量
	#证书文存放件路径
	cert_pem_path = models.StringField(default="", max_length=256) #证书
	key_pem_path = models.StringField(default="", max_length=256) #证书密钥

	
	meta = {
		'collection': 'scanlottery_scanlottery',
		'db_alias': 'apps'
	}

	@property
	def status_text(self):
		if self.status == STATUS_NOT_START:
			return u'未开始'
		elif self.status == STATUS_RUNNING:
			now = datetime.today()
			if now >= self.end_time:
				return u'已结束'
			else:
				return u'进行中'
		elif self.status == STATUS_STOPED:
			return u'已结束'
		else:
			return u'未知'
	
	@property
	def is_finished(self):
		status_text = self.status_text
		if status_text == u'已结束':
			return True
		else:
			return False
예제 #28
0
class QueryCondition(me.EmbeddedDocument):
    """The main condition of a Rule.

    The QueryCondition is the main condition type required in order to setup a
    Rule. A QueryCondition allows users to specify the query to be executed by
    providing the metric's name, an aggregation function, as well as threshold
    type and value. Additional filters may also be specified in order to limit
    down a query's results.

    In case of arbitrary rules the `target` has to store the entire query as a
    single string, aggregation function and selectors included.

    """

    target = me.StringField(required=True)
    operator = me.StringField(required=True, choices=OPERATORS)
    threshold = me.DynamicField(required=True)

    filters = me.EmbeddedDocumentListField(QueryFilter, default=lambda: [])

    aggregation = me.StringField(default='all',
                                 choices=('all', 'any', 'avg', 'count'))

    meta = {'allow_inheritance': True}

    @property
    def filters_string(self):
        """Return `self.filters` as a string."""
        return ', '.join([str(f) for f in self.filters])

    def as_dict(self):
        return {
            'target': self.target,
            'operator': self.operator,
            'threshold': self.threshold,
            'aggregation': self.aggregation,
            'filters': [f.as_dict() for f in self.filters],
        }

    def __str__(self):
        return '%s(%s){%s} %s %s' % (
            self.aggregation.upper(), self.target or '', self.filters_string,
            self.get_operator_display(), self.threshold)
예제 #29
0
class FormSchema(mongo.Document):
    id = mongo.UUIDField(required=False)
    field_groups = mongo.DynamicField(required=False)
    created = mongo.DateTimeField(default=datetime.datetime.today().date(),
                                  required=False)
    last_updated = mongo.DateTimeField(
        default=datetime.datetime.today().date(), required=False)

    @property
    def permission_type(self):
        return "forms"

    def convert_to_json(self):
        return {
            'id': str(self.id),
            'field_groups': self.field_groups,
            'created': self.created,
            'last_updated': self.last_updated
        }
예제 #30
0
파일: workflow.py 프로젝트: lichaoge/st2
class WorkflowExecutionDB(stormbase.StormFoundationDB,
                          stormbase.ChangeRevisionFieldMixin):
    RESOURCE_TYPE = types.ResourceType.EXECUTION

    action_execution = me.StringField(required=True)
    spec = me.DictField()
    graph = me.DictField()
    input = stormbase.EscapedDictField()
    notify = me.DictField()
    context = me.DictField()
    state = stormbase.EscapedDictField()
    status = me.StringField(required=True)
    output = stormbase.EscapedDictField()
    errors = me.DynamicField()
    start_timestamp = db_field_types.ComplexDateTimeField(
        default=date_utils.get_datetime_utc_now)
    end_timestamp = db_field_types.ComplexDateTimeField()

    meta = {'indexes': [{'fields': ['action_execution']}]}