Example #1
0
class StopLoss(DynamicEmbeddedDocument):
    transaction_id = StringField()

    amount_invested = DecimalField(precision=6)
    price = DecimalField(precision=6)
    result = DecimalField(precision=6)
    ratio = FloatField()

    is_closed = BooleanField(default=False)  # is closed naturally
    has_reached_level_before_days_limit = BooleanField()
    closed_date = DateTimeField(default=None)
    duration = FloatField(default=None)
    retries_founding_price_when_days_exceed = IntField()
    is_transaction_already_closed = BooleanField(default=None)
    ratio_default = FloatField(default=None)

    def generate_stop_loss_id(self):
        return f"{self.transaction_id}_sl"

    def on_reach(self, closed_date=None):
        pass

    def cancel(self):
        self.is_closed = True

    def save(self, *args, **kwargs):
        return super(StopLoss, self).save(*args, **kwargs)

    def __str__(self):
        return f"SL: {self.price}"
Example #2
0
class TakeProfit(DynamicEmbeddedDocument):
    order_number = IntField(min_value=1)
    transaction_id = StringField()

    amount_invested = DecimalField(precision=6)
    price = DecimalField(precision=6)
    result = DecimalField(precision=6)
    ratio = FloatField()
    ratio_default = FloatField(default=None)

    is_closed = BooleanField(default=False)
    is_last = BooleanField(default=False)
    has_reached_level_before_days_limit = BooleanField()
    closed_date = DateTimeField(default=None)
    duration = FloatField(default=None)
    retries_founding_price_when_days_exceed = IntField()
    is_transaction_already_closed = BooleanField(default=None)

    def generate_take_profit_id(self):
        return f"{self.transaction_id}_tp#{self.order_number}"

    def on_reach(self, closed_date=None):
        pass

    def cancel(self):
        self.is_closed = True

    def on_last_finish(self):
        pass

    def __str__(self):
        return f"TP#{self.order_number}: {self.price}"
Example #3
0
class NotificationModel(Document):
    objects = QuerySetManager()
    meta = {'collection': 'notification'}

    timestamp = DateTimeField(default=datetime.utcnow())
    notification_type = StringField(required=True)
    description = StringField()
    probability = DecimalField()
    confidence = DecimalField()
    impact_expect = DecimalField()
    external_url = StringField()
    notification_list = StringField(required=True)

    @classmethod
    def find_all(cls):
        return cls.objects()

    @classmethod
    def find_by_time(cls, limit):

        try:
            notification = cls.objects(timestamp__lte=limit)
        except Exception:
            return None

        return notification

    @classmethod
    def find_by_notification_list(cls, list):
        notifications = cls.objects(notification_list=list)
        if not notifications:
            return None
        return notifications
Example #4
0
class Transaction(DocumentValidation):
    coin_token = StringField(required=True,
                             choices=get_coin_tokens(s.SYMBOLS_PER_EXCHANGE))
    units = DecimalField(required=True,
                         min_value=0,
                         precision=s.SYMBOL_FLOAT_PRECISION)
    amount = DecimalField(required=True,
                          min_value=0,
                          precision=s.SYMBOL_FLOAT_PRECISION)
    unit_price = DecimalField(required=True,
                              min_value=0,
                              precision=s.SYMBOL_FLOAT_PRECISION)
    user = ReferenceField(User, required=True)
    added_on = DateField(required=True)
    in_or_out = StringField(required=True, choices=(
        "in",
        "out",
    ))

    meta = {
        "collection": "transaction",
        "ordering": ["-added_on"],
    }

    _pre_save_hooks = (_calculate_unit_price, )
Example #5
0
class Hotel(Document):
    id = IntField()
    name = StringField(max_length=200)
    test = BooleanField(default=True)
    target_area = StringField(required=False, max_length=1, choices=AREAS)
    selection = StringField(required=False, choices=OPTIONS)
    district = StringField(required=False)
    postal_code = StringField(required=False)
    address = MultiLineStringField(required=False)
    web = URLField(required=False)
    stars = StringField(choices=STARS)
    management = StringField(choices=MANAGEMENT, default=N_I)
    brand_name = StringField(default=N_I)
    typology = StringField(choices=TYPOLOGY, default=N_I)
    segment_style = StringField(choices=SEGMENT, default=N_I)
    m2_built = IntField(required=False)
    m2_built_per_hab = DecimalField(required=False)
    pax_beds = IntField(required=False)
    rooms = IntField(required=False)
    std = IntField(required=False)
    dis = IntField(required=False)
    sin = IntField(required=False)
    exe = IntField(required=False)
    js = IntField(required=False)
    sui = IntField(required=False)
    psui = IntField(required=False)
    ap = IntField(required=False)
    num_salas = IntField(required=False)
    m2_salas = IntField(required=False)
    salas_pax = IntField(required=False)
    business_center = StringField(required=False, choices=OPTIONS)
    restaurante = IntField(required=False)
    bar = IntField(required=False)
    fitness = StringField(required=False, choices=OPTIONS)
    belleza = StringField(required=False, choices=OPTIONS)
    sauna_turco = StringField(required=False, choices=OPTIONS)
    pool_interior = StringField(required=False, choices=OPTIONS)
    pool_exterior = StringField(required=False, choices=OPTIONS)
    terraza_azotea = StringField(required=False, choices=OPTIONS)
    parking = StringField(required=False, choices=OPTIONS)
    sellos_calidad_sostenibilidad = StringField(required=False)
    additional_services = StringField(required=False)
    points_bk = DecimalField(required=False)
    ta_rank = IntField(required=False)
    total_rank = IntField(required=False)
    points_ta = DecimalField(required=False)
    q_reviews = IntField(required=False)
    price_booking = IntField(required=False)
    price_min_ta = IntField(required=False)
    price_max_ta = IntField(required=False)
    price_bar_per_2 = IntField(required=False)
    price_band = IntField(required=False)
    notas = MultiLineStringField(required=False)
    created_at = models.DateTimeField(auto_now_add=True)
    modified_at = models.DateTimeField(auto_now=True)
    description = models.TextField(default="")

    def __unicode__(self):  # 0 param method
        return self.name
Example #6
0
class SessionPulseStudent(Document):
    session = LazyReferenceField(Session)
    attentiveness = DecimalField()
    engagement = DecimalField()
    student = LazyReferenceField(Student)
    datetime_modified = DateTimeField(default=datetime.now())
    datetime_sequence = DateTimeField(default=datetime.now())
    version = StringField()
Example #7
0
class Tick(Document):
    vtSymbol = StringField()
    lastPrice = DecimalField()
    bidPrice1 = DecimalField()
    askPrice1 = DecimalField()
    openInterest = DecimalField()
    volume = FloatField()
    bidVolume1 = FloatField()
    askVolume1 = FloatField()
Example #8
0
class RatioAttr(Attr):
    top = DecimalField()
    bottom = DecimalField()

    def __unicode__(self):
        return self.attrname + ": " + unicode(self.top) + ":" + unicode(
            self.bottom)

    def getKeywords(self):
        return [unicode(self.top) + ":" + unicode(self.bottom)]
Example #9
0
class RatioAttr(Attr):
    top = DecimalField()
    bottom = DecimalField()

    def __unicode__(self):
        return (super(RatioAttr, self).__unicode__() + unicode(self.top) + ":"
                + unicode(self.bottom))

    def getKeywords(self):
        return [unicode(self.top) + ":" + unicode(self.bottom)]
Example #10
0
class Price(EmbeddedDocument):
    '''
    Holds the data related to a specific price of an item
    at a specific store.
    '''
    user = StringField(min_length=1, max_length=64, required=True)
    upvotes = ListField(StringField(min_length=1, max_length=64))
    downvotes = ListField(StringField(min_length=1, max_length=64))
    price = DecimalField(min_value=0, precision=2, required=True)
    date = DecimalField(min_value=0, precision=6, required=True)
Example #11
0
class Product(Document):
    price = DecimalField(required=True, min_value=0.01, precision=2)
    image = StringField(required=True, min_length=1, max_length=400)
    brand = StringField(required=True, min_length=1, max_length=400)
    title = StringField(required=True, min_length=1, max_length=400)
    reviewScore = DecimalField(min_value=0.01, max_value=5, precision=2)

    def clean(self):
        self.brand = self.brand.upper()
        self.title = self.title.upper()
Example #12
0
class Candle(Document):
    time = IntField(required=True)
    low = DecimalField(required=True)
    high = DecimalField(required=True)
    open = DecimalField(required=True)
    close = DecimalField(required=True)
    volume = DecimalField(required=True)
    interval = IntField(required=True)
    product_id = StringField(required=True)

    meta = {'collection': 'candles'}
Example #13
0
class SessionIntervention(Document):
    session = LazyReferenceField(Session)
    datetime_created = DateTimeField(default=datetime.now())
    datetime_sequence = DateTimeField(default=datetime.now())
    version = StringField()
    intervention_reason = StringField()  # engagement, attention etc.
    intervention_period_start = DateTimeField()
    intervention_period_end = DateTimeField()
    intervention_reason_value = DecimalField()
    intervention_reason_threshold = DecimalField()
    meta = {'allow_inheritance': True}
Example #14
0
class DualRatioAttr(RatioAttr):
    top2 = DecimalField()
    bottom2 = DecimalField()

    def __unicode__(self):
        return (super(DualRatioAttr, self).__unicode__() +
                " and " + unicode(self.top2) + ":" + unicode(self.bottom2))

    def getKeywords(self):
        return [unicode(self.top) + ":" + unicode(self.bottom),
                unicode(self.top2) + ":" + unicode(self.bottom2)]
Example #15
0
class Anomaly(Base):
    """
    电流异常数据表
    """
    device_id = StringField()  # 设备Id
    normal = DecimalField()  # 阈值
    anomaly = DecimalField()  # 异常值
    diff = StringField()  # 差值,可以是一个百分比
    meta = {
        'collection': 'anomaly',
        'strict': True
    }
Example #16
0
class Category(Base):
    uid = StringField(index=True)
    orderId = StringField()
    title = StringField()
    slug = StringField()
    auth = StringField()
    visible = BooleanField()
    status = StringField()
    uploadedFile = StringField()
    parent = ReferenceField('Category', deref_document=False)

    description = StringField(fulltext=True)
    externalUrl = StringField()
    email = StringField()
    phone = StringField()
    address = StringField()
    postcode = StringField()
    locality = StringField()
    country = StringField()

    lat = DecimalField(precision=6)
    lon = DecimalField(precision=6)

    licenceName = StringField()
    licenceUrl = StringField()
    licenceAuthorName = StringField()
    licenceAuthorUrl = StringField()

    def get_dict_with_children(self, recursive=False, level=1):
        result = self.to_dict()
        if not recursive and level > 1:
            return result
        result['children'] = []
        for category in Category.objects(
                parent=self.id).order_by('+title').all():
            result['children'].append(
                category.get_dict_with_children(recursive, level + 1))
        return result

    def get_children_list(self):
        result = []
        for category in Category.objects(
                parent=self.id).order_by('+title').all():
            result.append(category)
            result += category.get_children_list()
        return result

    def __repr__(self):
        return '<Category %r>' % self.title

    @property
    def subsite(self):
        return Subsite.objects(categories__contains=self).first()
Example #17
0
class OrderModel(db.Document):
    '''
    Order
    '''
    meta = {'collection': 'order', 'strict': False}

    order_code = StringField()
    order_status = StringField()
    created = DateTimeField(default=datetime.now)
    order_values = DecimalField(default=0)
    cashback = DecimalField(default=0)
    cashback_values = DecimalField(default=0)
    cpf_dealer = StringField(required=True, unique=False)
Example #18
0
class Employee(BaseRecord):
    userName = StringField(max_length=50, required=True, unique=True)
    name = EmbeddedDocumentField(Name, required=True)
    birthDate = DateField(required=True)
    address = EmbeddedDocumentField(Address, required=True)
    email = EmailField(required=True, unique=True)
    phone = StringField(max_length=20, required=True)
    pin = StringField(regex=re.compile('^\d{4}'), max_length=4, required=True)
    rateOfPay = DecimalField()
    active = BooleanField(default=False)
    durationMultiplier = DecimalField(min_value=0)
    type = StringField(max_length=10, required=True)
    meta = {'collection': 'Employee'}

    def __str__(self):
        return f'{self.userName} - {self.name}'
Example #19
0
class ControlPanel(Document):

    _created_date = DateTimeField(default=datetime.datetime.utcnow)
    _key_created_user = ObjectIdField()
    _last_modified_date = DateTimeField(default=datetime.datetime.utcnow)
    _key_last_modified_user = ObjectIdField()
    _key_owner_user = ObjectIdField()

    _key_brand = ReferenceField(Brand, required=True, reverse_delete_rule=3)
    _key_room_type = ReferenceField(EngineRoomType,
                                    required=True,
                                    reverse_delete_rule=3)
    _key_cp_size = ReferenceField(ControlPanelSize,
                                  required=True,
                                  reverse_delete_rule=3)
    _key_cp_button_type = ReferenceField(ControlPanelButtonType,
                                         required=True,
                                         reverse_delete_rule=3)
    _key_extra_type = ReferenceField(ControlPanelExtra,
                                     required=True,
                                     reverse_delete_rule=3)

    _key_organization = ReferenceField(Organization,
                                       required=True,
                                       reverse_delete_rule=2)
    _key_discount = ReferenceField(Discount,
                                   required=True,
                                   reverse_delete_rule=3)

    analysis_date = DateTimeField(default=datetime.datetime.utcnow)
    ready_installation = StringField(required=True)
    rfid_card = StringField(required=True)
    price = DecimalField(required=True)
Example #20
0
class Medicine(Document):
    medicineID = StringField(required=True, primary_key=True)
    name = StringField(required=True)
    amount = DecimalField(required=True,
                          default=0,
                          MinValue=0,
                          rounding='ROUND_HALF_UP')
    lot_num = StringField(required=True)
    MFG = StringField(required=True)
    EXP = StringField(required=True, NotNull=True)
    price = DecimalField(required=True,
                         default=0,
                         MinValue=0,
                         rounding='ROUND_HALF_UP')
    create_at = DateTimeField(required=False, default=datetime.utcnow())
    update_at = DateTimeField(required=False, default=datetime.utcnow())
Example #21
0
class Transfer(Document):
    SenderAccount = IntField(required=True)
    ReceiverAccount = IntField(required=True)
    Amount = DecimalField(required=True, min_value=0)
    SenderIP = StringField(max_length=15, min_length=8)
    Date = DateTimeField(required=True, default=datetime.datetime.now())

    def save(self, *args, **kwargs):
        if self.SenderAccount == self.ReceiverAccount:
            raise Exception("InvalidTransaction")
        if (len(str(self.SenderAccount)) != 10) or (len(
                str(self.ReceiverAccount)) != 10):
            raise Exception("InvalidAccountNumber")
        if User.objects.get(
                accountNo=self.SenderAccount).balance <= self.Amount:
            raise Exception("InsufficientBalance")
        else:
            self.transferMoney()
            super().save(self, *args, **kwargs)

    def transferMoney(self):
        senderAcc = User.objects.get(accountNo=self.SenderAccount)
        senderAcc.update(set__balance=senderAcc.balance - self.Amount)
        recieverAcc = User.objects.get(accountNo=self.ReceiverAccount)
        recieverAcc.update(set__balance=recieverAcc.balance + self.Amount)
Example #22
0
class Rail(Document):
    _created_date = DateTimeField(default=datetime.datetime.now)
    _key_created_user = ObjectIdField()
    _last_modified_date = DateTimeField(default=datetime.datetime.now)
    _key_last_modified_user = ObjectIdField()
    _key_owner_user = ObjectIdField()

    analysis_date = DateTimeField(default=datetime.datetime.now)
    _key_organization = ReferenceField(Organization, required=True, reverse_delete_rule=2)
    _key_brand = ReferenceField(Brand, required=True, reverse_delete_rule=3)
    _key_kur_cinsi = ReferenceField(Currency, required=True, reverse_delete_rule=3)
    _key_iskonto = ReferenceField(Discount, required=True, reverse_delete_rule=3)

    _key_rail_size_1 = ReferenceField(RailSize, required=True, reverse_delete_rule=3)
    _key_rail_size_2 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_size_3 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_size_4 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_size_5 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_size_6 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_size_7 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_size_8 = ReferenceField(RailSize, reverse_delete_rule=1)

    _key_rail_flans_size_1 = ReferenceField(RailSize, required=True, reverse_delete_rule=3)
    _key_rail_flans_size_2 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_flans_size_3 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_flans_size_4 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_flans_size_5 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_flans_size_6 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_flans_size_7 = ReferenceField(RailSize, reverse_delete_rule=1)
    _key_rail_flans_size_8 = ReferenceField(RailSize, reverse_delete_rule=1)

    birim_fiyat = DecimalField(required=True)
Example #23
0
class CartItem(EmbeddedDocument):
    product = ReferenceField('Product')
    qty = IntField()

    # For orders
    price = DecimalField(precision=2)

    def serialize(self, order=False):
        if order:
            return {
                'id': str(self.product.id),
                'product': self.product.serialize(),
                'qty': self.qty,
                'price': float(self.price)
            }
        else:
            return {
                'id': str(self.product.id),
                'name': self.product.title,
                'price':
                float(self.product.price) if self.product.price else 0,
                'slug': self.product.slug,
                'img':
                self.product.img[0] if len(self.product.img) > 0 else None,
                'qty': self.qty
            }
Example #24
0
class ProductModel(Document):
    # 指定collection
    meta={'collection': 'projects'}
    # 原始产品编号
    original_id = StringField()
    # 产品归属平台  (网易:1;小米:2)
    website_id = IntField()
    # 产品名称
    project_name = StringField()
    # 产品价格
    project_price = DecimalField()
    # 产品地址
    project_url = StringField()
    # 产品简介
    project_desc = StringField()
    # 产品销售商
    project_platform = StringField()
    # 产品评分
    project_score = StringField()
    # 产品图片
    project_picUrl = StringField()
    # 标签关键字
    tags = ListField()
    # 设置关键字的人 默认值:Geekview
    tags_user = ListField()
    # 设置关键字的时间
    tags_time = DateTimeField()
    # 关键字状态 0:未分词或分词异常 1:已分词
    tags_status = IntField()
    # 评论数
    comment_count = IntField()
    # 更新时间
    last_updated = DateTimeField()
class Currency(Document):
    name = StringField(max_length=100, required=True)
    color = StringField(max_length=7, required=True)
    active = BooleanField(default=True)
    type = StringField(max_length=10, required=True, choices=CURRENCY_TYPE)
    symbol = StringField(max_length=10, required=True, unique=True)
    price = DecimalField(min_value=0)
Example #26
0
class DecisionSignal(Document):
    created_at = DateTimeField(default=datetime.datetime.now)
    date = DateTimeField(default=datetime.datetime.now)
    processor_used = StringField(choices=ChannelNameChoices.choices)
    message = ReferenceField(Message)
    initial_price = DecimalField(precision=6)
    pair = StringField(choices=pairs_without_slash, required=True)
    take_profits = ListField()
    stop_loss = DictField()
    type = StringField(choices=DecisionSignalTypeChoices.choices)

    def clean(self):
        if self.pair is not None:
            self.pair = self.pair.replace('/', '').upper()
        return super(DecisionSignal, self).clean()

    def validate(self, clean=True):

        self.clean()

        if self.pair not in pairs_without_slash:
            raise IncorrectDecisionSignalPair(**{"pair": self.pair})
        if self.message.type not in [
                MessageTypeChoices.SIGNAL, MessageTypeChoices.SIGNAL_EXTRA
        ]:
            raise IncorrectDecisionSignalMessageType
        return super(DecisionSignal, self).validate(clean)

    def save(self, *args, **kwargs):
        return super(DecisionSignal, self).save(*args, **kwargs)
Example #27
0
class Deal(Document):
    deal_id = IntField(required=True)
    name = StringField(required=True)
    stage = StringField()
    close_date = DateTimeField()
    deal_type = StringField()
    amount = DecimalField()
Example #28
0
class MachineEngine(Document):

    _created_date = DateTimeField(default=datetime.datetime.utcnow)
    _key_created_user = ObjectIdField()
    _last_modified_date = DateTimeField(default=datetime.datetime.utcnow)
    _key_last_modified_user = ObjectIdField()
    _key_owner_user = ObjectIdField()
    analysis_date = StringField(required=True)

    _key_organization = ReferenceField(Organization,
                                       required=True,
                                       reverse_delete_rule=2)
    _key_room_type = ReferenceField(EngineRoomType,
                                    required=True,
                                    reverse_delete_rule=3)
    _key_engine_speed = ReferenceField(EngineSpeed,
                                       required=True,
                                       reverse_delete_rule=3)
    _key_volume = ReferenceField(Volume, required=True, reverse_delete_rule=3)
    _key_capacity = ReferenceField(Capacity,
                                   required=True,
                                   reverse_delete_rule=3)
    _key_engine_type = ReferenceField(EngineType,
                                      required=True,
                                      reverse_delete_rule=3)
    _key_kur_cinsi = ReferenceField(Currency,
                                    required=True,
                                    reverse_delete_rule=3)
    _key_iskonto = ReferenceField(Discount,
                                  required=True,
                                  reverse_delete_rule=3)

    birim_fiyat = DecimalField(required=True)
Example #29
0
class Snapshot(Document):
    """
    A Snapshot contains how much cash a user has and what stocks a user owns on a particular date.
    """
    user_id = ObjectIdField()  # Reference to the User's _id
    cash = DecimalField(max_length=255, default=50000, precision=2)
    stocks_owned = DictField(default={})
Example #30
0
class ArticleNumberState(BaseRecord):  # Need Batch Upload
    state = StringField(max_length=2, min_length=2, required=True, unique_with="fkArticleNumber")
    price = DecimalField(required=True)
    fkArticleNumber = ReferenceField(ArticleNumber, required=True, dbref=False)
    meta = {'collection': 'ArticleNumberState'}

    def __str__(self):
        return f'{self.state} {self.fkArticleNumber.description}'