Exemplo n.º 1
0
class Account(db.Document):
    # 用户id
    account_id = db.IntField()
    # 手机号
    username = db.StringField(unique=True, required=True)
    # 手机号
    phone = db.StringField()
    # email
    email = db.StringField()
    # 区域
    phone_area = db.StringField()
    # 密码, md5后的密码
    password = db.StringField(max_length=50, min_length=8, required=True)
    # 用户名
    nickname = db.StringField()
    # 登录类型
    loginType = db.StringField()
    # 用户id
    user_id = db.StringField()
    # 会话
    sessionid = db.StringField()
    # 创建时间
    create_time = db.FloatField(
        default=time.mktime(datetime.now().timetuple()))
    # 更新时间
    update_time = db.FloatField(
        default=time.mktime(datetime.now().timetuple()))

    # 账号列表,当前用户拥有的wky账号列表
    devices = db.ListField(db.ReferenceField(Device))
    income = db.EmbeddedDocumentField('Income')
    device_info = db.EmbeddedDocumentField('DeviceInfo')

    def __str__(self):
        pass
Exemplo n.º 2
0
class Monitorados(db.Document):
    meta = {'collection': 'Monitorados'}
    cod_audio = db.StringField(required=True)
    cod_usu = db.StringField(required=True)
    datahora = db.DateTimeField()
    total_ptpositivo = db.IntField(required=True)
    total_ptnegativo = db.IntField(required=True)
    sentditas = db.ListField(db.EmbeddedDocumentField(sentDitas))
    sentnditas = db.ListField(db.EmbeddedDocumentField(sentNDitas))
Exemplo n.º 3
0
class StaticRow(db.Document):
    siteName = db.StringField()
    siteID = db.StringField()
    zoneID = db.StringField()
    rowID = db.StringField()
    firmwareVersion = db.StringField()
    boardSerialNo = db.StringField()
    stow = db.EmbeddedDocumentField(Stow)
    limits = db.EmbeddedDocumentField(Limits)
    position = db.EmbeddedDocumentField(Position)
    meta = {'collection': 'StaticRow'}
Exemplo n.º 4
0
class User(db.Document):
    uid = db.StringField(required=True,
                         unique=True,
                         default=lambda: uid_generator())
    email = db.EmailField(required=True, unique=True)
    password = db.StringField(required=True)
    authorization = db.EmbeddedDocumentField(UserAuthorization,
                                             default=UserAuthorization)
    profile = db.EmbeddedDocumentField(UserProfile, default=UserProfile)
    activity = db.EmbeddedDocumentField(UserActivity, default=UserActivity)

    meta = {'indexes': ['email', 'uid'], 'ordering': ['-activity.created']}

    def hash_token(self, token):
        return pwd_context.encrypt(token)

    def verify_token(self, token):
        for db_token in self.activity.valid_tokens:
            if (pwd_context.verify(token, db_token)):
                return True
        return False

    def remove_token(self, token):
        for db_token in self.activity.valid_tokens:
            if (pwd_context.verify(token, db_token)):
                self.activity.valid_tokens.remove(db_token)
                return True
        return False

    def hash_password(self, password):
        self.password = pwd_context.encrypt(password)

    def verify_password(self, password):
        return pwd_context.verify(password, self.password)

    def generate_auth_token(self, expiration=600):
        # s = Serializer(app.config['SECRET_KEY'], expires_in=expiration)
        s = Serializer(SECRET_KEY, expires_in=expiration)
        return s.dumps({'uid': str(self.uid)})

    @staticmethod
    def verify_auth_token(token):
        s = Serializer(SECRET_KEY)
        try:
            data = s.loads(token)
        except SignatureExpired:
            return None  # valid token, but expired
        except BadSignature:
            return None  # invalid token

        user = User.objects.filter(uid=data['uid']).first()
        return user
class ControllerInfo(db.EmbeddedDocument):
    siteName = db.StringField()
    siteID = db.StringField()
    zoneID = db.StringField()
    rowID = db.StringField()
    firmwareVersion = db.StringField()
    boardSerialNo = db.IntField()
    threshold_wind_speed = db.FloatField()
    table_length = db.FloatField()
    table_width = db.FloatField()
    stow = db.EmbeddedDocumentField(Stow)
    limits = db.EmbeddedDocumentField(Limits)
    position = db.EmbeddedDocumentField(Position)
Exemplo n.º 6
0
class Animals(db.Document):
    title = db.StringField(required=True, max_length=30, min_length=1)
    route = db.StringField(required=True, max_length=25, min_length=1)
    categories = db.ReferenceField(Categories)
    description = db.MapField(db.EmbeddedDocumentField(DescriptionItem))
    descriptionExtended = db.MapField(
        db.EmbeddedDocumentField(DescriptionItem))
    contact = db.DictField()
    address = db.DictField()
    conditions = db.DictField()
    pageText = db.StringField(required=True, max_length=500, min_length=1)
    adjective = db.StringField(required=True, max_length=50, min_length=1)
    images = db.ListField()
Exemplo n.º 7
0
class GameRoom(db.Document):
    word = db.StringField(default="")
    waiting = db.BooleanField(default=True)
    currentQuestion = db.StringField(default="")
    gameFinished = db.BooleanField(default=False)
    winner = db.ListField(db.StringField())
    bothAnswered = db.BooleanField(default=False)
    members = db.ListField(db.EmbeddedDocumentField(Player),default=list)
    answers = db.ListField(db.EmbeddedDocumentField(PlayerAnswer))
    questions = db.ListField(db.StringField())
    hasBot = db.BooleanField(default=False)
    botName = db.StringField(default="")
    created_at = db.DateTimeField(default=datetime.datetime.utcnow)
Exemplo n.º 8
0
class UserActivity(db.EmbeddedDocument):
    created = db.DateTimeField(default=lambda: now())
    email_verification = db.EmbeddedDocumentField(EmailVerification,
                                                  default=EmailVerification)
    password_reset = db.EmbeddedDocumentField(PasswordReset,
                                              default=PasswordReset)
    user_restricted = db.BooleanField(default=False)
    failed_logins = db.IntField(default=0)
    user_banned = db.BooleanField(default=False)
    valid_tokens = db.ListField()
    payment_reference = db.StringField(min_length=UID_SIZE,
                                       max_length=UID_SIZE,
                                       unique=True)
    activity_audit = db.ListField(db.ReferenceField(ActivityAudit))
Exemplo n.º 9
0
class Book(db.Document):
    isbn = db.StringField(required=True, unique=True, primary_key=True)
    title = db.StringField(required=True)
    origin_title = db.StringField()
    subtitle = db.StringField()
    author = db.ListField(db.StringField())
    translator = db.ListField(db.StringField())
    create_time = db.IntField(default=time_int, required=True)
    publish_time = db.StringField()
    image = db.EmbeddedDocumentField(CDNImage, required=True)
    page = db.IntField()
    catelog = db.StringField()
    price = db.DecimalField()
    publisher = db.StringField()
    description = db.StringField()
    author_description = db.StringField()
    tag = db.ListField(db.EmbeddedDocumentField(BookTag))
    binding = db.StringField()
    rate = db.FloatField()
    reason = db.StringField(require=True)

    enabled = db.BooleanField(default=True)

    need_to_refund = db.IntField(default=0)
    need_to_replace = db.IntField(default=0)

    class NotBookInstance(Exception):
        pass

    def __unicode__(self):
        return u'《{}》'.format(self.title)

    def save(self):
        me = super(Book, self).save()
        if not me.image.is_cdn:
            image_url = save_image(me.image.url, str(me.pk))
            me.image.url = image_url
            me.image.is_cdn = True
            me.save()
        return me

    def add_storehouse(self, number, add_type):
        if add_type == 'REFUND':
            self.need_to_refund += number
            self.save()
        elif add_type == 'REPLACE':
            self.need_to_replace += number
            self.save()
Exemplo n.º 10
0
class Channel(db.Document):

    name = db.StringField(required=True, unique=True)
    messages = db.ListField(db.EmbeddedDocumentField(Message))

    def __str__(self):
        return self.name
Exemplo n.º 11
0
class Image(db.Document):
    meta = {
        'collection': 'image',
        'ordering': ['-img_id'],
        'strict': False,
    }
    img_id = db.IntField()
    url = db.ListField(db.StringField())
    word = db.StringField(max_length=512)
    author = db.StringField()
    board = db.StringField()
    w_list = db.ListField(db.StringField())
    m_list = db.ListField(db.StringField())
    w = db.IntField(default=0)
    m = db.IntField(default=0)
    comments = db.ListField(db.EmbeddedDocumentField(Comment))
    visible = db.BooleanField()
    ct = db.DateTimeField(default=datetime.now)

    def api_data(self):
        return dict(
            img_id=self.img_id,
            url=self.url,
            word=self.word,
            author=self.author,
            w=self.w,
            m=self.m,
            ct=self.ct.__str__(),
            comments_num=len(self.comments),
        )
Exemplo n.º 12
0
class Cart(db.Document):
    user_id = db.IntField(required=True)
    products = db.ListField(db.EmbeddedDocumentField(Product))

    meta = {'collection': 'products_in_cart', 'indexes': ['user_id']}

    @classmethod
    def add_document(cls, user_id, product_id, count):
        cart = Cart.objects(user_id=user_id).first()

        if cart is None:
            cart = cls(user_id=user_id)

        product = Product(product_id=product_id, count=count)

        if product in cart.products:
            index = cart.products.index(product)
            existing_product = cart.products[index]
            existing_product.count += product.count
            return cart

        products = [product]

        if len(cart.products) == 0:
            cart.products = products
        else:
            cart.products.extend(products)

        return cart
Exemplo n.º 13
0
class Person(db.Document):
    name = db.StringField(required=True, unique=True)
    quotes = db.ListField(db.EmbeddedDocumentField(Quote))

    @staticmethod
    def make_person(name):
        return Person(name=name, quotes=[])
Exemplo n.º 14
0
class Jobs(db.Document):
    customer_name = db.StringField()
    job_address = db.EmbeddedDocumentField(Address)
    billing_address = db.EmbeddedDocumentField(Address)
    email = db.EmailField()
    customer_phone = db.IntField()
    description = db.StringField()
    size = db.StringField()
    expectedStartDate = db.DateTimeField()
    expectedEndDate = db.DateTimeField()
    costPerWorker = db.FloatField()
    assignedWorkers = db.ListField(db.ReferenceField(Worker))
    costPerVehicle = db.FloatField()
    assignedVehicles = db.ListField(db.ReferenceField(Vehicle))
    cleaningEquipments = db.ListField(db.ReferenceField(Equipment))
    status = db.BooleanField()
Exemplo n.º 15
0
class Course(db.Document):
    """Modeling of a course object. 
    course_id:          integer
    title:              string
    year:               integer
    description:        string
    prerequisites:      list(integer), list of course ids
    instructor:         integer, instructor's user id
    enrolled_students:  list of students' user ids
    time_added:         datetime, 
                        timestamp of the course added to the system
    start_date:         datetime 
    end_date:           datetime
    recurring:          boolean, is a recurring course (or not)
    announcements:      list of announcements
    """

    course_id = db.IntField(required=True)
    #code = db.StringField(max_length=20)
    title = db.StringField(max_length=60, required=True)
    year = db.IntField(required=True)
    description = db.StringField(required=True)
    prerequisites = db.ListField(db.IntField())
    instructor = db.IntField(required=True)
    #school = db.StringField(max_length=60)
    enrolled_students = db.ListField(db.IntField())
    time_added = db.DateTimeField(default=datetime.now())
    start_date = db.DateTimeField(required=True)
    end_date = db.DateTimeField(required=True)
    recurring = db.BooleanField(required=True)
    announcements = db.ListField(db.EmbeddedDocumentField(Announcement))
Exemplo n.º 16
0
class Zone(db.Document):
    siteName = db.StringField()
    siteID = db.StringField()
    rows = db.IntField()
    zoneID = db.StringField()
    firmwareVersion = db.StringField()
    position = db.EmbeddedDocumentField(Position)
    meta = {'collection': 'Zone'}
Exemplo n.º 17
0
class Event(db.Document):
    title = db.StringField(required=True, max_length=120)
    description = db.StringField(required=True)
    last_updated = db.DateTimeField(default=datetime.datetime.now())
    starting_at = db.DateTimeField(required=True)
    ending_at = db.DateTimeField()
    user = db.ReferenceField(User)
    comments = db.ListField(db.EmbeddedDocumentField('Comment'))
Exemplo n.º 18
0
class Tip(db.Document):
    category = db.ReferenceField(Category)
    user = db.ReferenceField(User)
    ctime = db.DateTimeField()
    title = db.StringField()
    text_raw = db.StringField()
    text_rendered = db.StringField()
    stars = db.ListField(db.EmbeddedDocumentField(Star))
Exemplo n.º 19
0
class Information(db.Document):
    user_id = db.ReferenceField(User, unique=True, required=True)
    history = db.ListField(db.EmbeddedDocumentField(History), default=list)
    like = db.ListField(db.ReferenceField(Product, required=True),
                        default=list)
    cart = db.ListField(db.ReferenceField(Product, required=True),
                        default=list)
    coupon = db.ListField(db.ReferenceField(Coupon, required=True),
                          default=list)
Exemplo n.º 20
0
class User(db.Document):
    username = db.StringField(max_length=50, required=True)
    email = db.StringField(required=True)
    password = db.StringField(required=True)
    homepage = db.EmbeddedDocumentField(HomePage)
    role = db.StringField(max_length=20)
    status = db.StringField(max_length=10)
    session = db.DictField()  #db.StringField()
    tags = db.ListField(db.StringField(max_length=30))
Exemplo n.º 21
0
class Search(db.Document):
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    query = db.StringField(default="vaccine")
    searchItems = db.ListField(db.EmbeddedDocumentField('SearchItem'))
    meta = {
        'allow_inheritance': True,
        'indexes': ['-created_at'],
        'ordering': ['-created_at']
    }
Exemplo n.º 22
0
class Person(db.Document):
    _id = ObjectIdField()
    name = db.StringField()
    # ReferenceField (Foreign Key).
    sex = db.ReferenceField(Sex.Sex, required=True)
    # List of objects.
    address = db.ListField(db.EmbeddedDocumentField(Address.Address))

    # Allowing Inheritance for extra models
    meta = {'allow_inheritance': True}
Exemplo n.º 23
0
class Report(db.EmbeddedDocument):
    goal = db.StringField(max_length=140, required=True)
    summary = db.StringField(max_length=500, required=True)
    #db.EmbeddedDocumentField(Summary)
    results = db.StringField(max_length=500, required=True)
    #db.EmbeddedDocumentField(Results)
    datapath = db.URLField()
    analysis = db.EmbeddedDocumentField(Plots)
    created = db.DateTimeField(help_text='date it was created')
    modified = db.DateTimeField(help_text='last modified')
Exemplo n.º 24
0
class Snapshots(db.Document):
    url = db.StringField(max_length=1000, required=True)
    timestamp = db.DateTimeField(required=False, default=datetime.datetime.now)
    response = db.EmbeddedDocumentField(Responses)
    sha256 = db.StringField(max_length=256, required=True)
    screenshot = db.FileField()

    meta = {
        'ordering': ['-timestamp'],
    }
Exemplo n.º 25
0
class Post(db.Document):
    # Post model, has a list of comments. only title is required
    title = db.StringField(required=True, max_length=200)
    content = db.StringField()
    comments = db.ListField(db.EmbeddedDocumentField(Comment))
    name = db.StringField(max_length=50)
    time = db.DateTimeField()

    def __repr__(self):
        return 'Post: {}'.format(self.content)
Exemplo n.º 26
0
class Buyer(db.Document, BaseUser):
    """Buyers Collection"""

    meta = {
        'collection': 'buyers',
        'indexes': ['user_id']
    }

    user_id = db.IntField(required=True)
    name = db.StringField(required=True)
    email = db.StringField(required=True)
    password = db.StringField(required=True)
    mobile_number = db.StringField(min_length=10, max_length=10)
    addresses = db.ListField(db.EmbeddedDocumentField(Address))

    @classmethod
    def add_document(cls, name, email, password, address_params, user_id=None):

        address = Address(house_number=address_params['house_number'],
                          house_name=address_params['house_name'],
                          street_name_1=address_params['street_name_1'],
                          street_name_2=address_params['street_name_2'],
                          area=address_params['area'],
                          district=address_params['district'],
                          state=address_params['state'],
                          country=address_params['country'],
                          postal_code=address_params['postal_code'],
                          nearby_landmark=address_params['nearby_landmark'],
                          tag=address_params['tag'],
                          extra=address_params['extra'])

        if user_id is None:
            next_id = Counter.get_next_sequence_value('buyers')
            encrypt_password = bcrypt.generate_password_hash(
                password, current_app.config.get('BCRYPT_LOG_ROUNDS')
            ).decode()

            buyer = cls(user_id=next_id,
                        name=name,
                        email=email,
                        password=encrypt_password)

        elif isinstance(user_id, int):
            buyer = cls.objects(user_id=user_id).first()

            if buyer is None:
                # TODO
                return buyer

        buyer.addresses.append(address)

        return buyer

    def __repr__(self):
        return f'Buyer(id={self.user_id})'
Exemplo n.º 27
0
class User(db.Document):
    # 字段
    name = db.StringField(max_length=30, required=True)
    password = db.StringField(max_length=30, min_length=6, required=True)
    phone = db.StringField()
    device = db.ReferenceField(Device1)
    devices = db.ListField(db.ReferenceField(Device1))
    emdevices = db.ListField(db.EmbeddedDocumentField('Device1'))

    def __str__(self):
        return "name:{} - phone:{}".format(self.name, self.phone)
class User(UserMixin, db.Document):
    class Status(IntEnum):
        NO_ACTIVE = 0
        ACTIVE = 1
        BANNED = 2

    meta = {'collection': 'users', 'auto_create_index': False}
    email = db.StringField(max_length=30, required=True)
    password = db.StringField(required=True)
    created_date = db.DateTimeField(default=datetime.now)
    status = db.IntField(default=Status.NO_ACTIVE)

    entries = db.ListField(db.EmbeddedDocumentField(MoneyEntry), default=list)

    incomes_categories = db.ListField(db.StringField(),
                                      default=constants.INCOMES_CATEGORIES)
    expenses_categories = db.ListField(db.StringField(),
                                       default=constants.EXPENSES_CATEGORIES)

    settings = db.EmbeddedDocumentField(Settings, default=Settings)
Exemplo n.º 29
0
class Question(db.Document):
    question = db.StringField(max_length=511, required=True)
    answer = db.StringField(max_length=4095)
    tags = db.ListField(db.EmbeddedDocumentField("Tag"))
    created_at = db.DateTimeField(default=datetime.datetime.now, required=True)
    answer_source = db.StringField(max_length=63)
    answered_at = db.DateTimeField()
    question_source = db.StringField(max_length=63, required=True)

    def get_question(self):
        return self.question
Exemplo n.º 30
0
class ClassNote(db.Document):
    title = db.StringField(required=True,max_length=120)
    url_title = db.StringField(unique=True,required=True, max_length=120)
    description = db.StringField()
    class_date = db.DateTimeField()
    content = db.StringField()
    assignment = db.StringField()
    assignments = db.ListField( db.EmbeddedDocumentField(Assignment) )
    github_url = db.StringField(default=None)
    demo_url = db.StringField(default=None)
    last_updated = db.DateTimeField(default=datetime.datetime.now())
    published = db.BooleanField(default=False)