示例#1
0
class Order(Document):
    id_order = fields.IntegerField(required=True, unique=True)
    products = fields.ListField(fields.ReferenceField(Product))
    user_id = fields.IntegerField(required=True, unique=True)
    order_dtime = fields.DateTimeField()
    del_dtime = fields.DateTimeField()

    class Meta:
        collection = db.order
示例#2
0
class User(Document):
    id = fields.ObjectIdField()
    full_name = fields.StrField()
    email = fields.EmailField(unique=True)
    username = fields.StrField(unique=True)
    hashed_password = fields.StrField()
    last_password_updated_at = fields.DateTimeField()
    scopes = fields.ListField(fields.StrField(), default=[])

    created_at = fields.DateTimeField(default=datetime.now())
    updated_at = fields.DateTimeField(default=datetime.now())

    class Meta:
        collection_name = 'user'
        collection = db.user

    @classmethod
    async def get(cls, id: str):
        if not ObjectId.is_valid(id):
            return None
        user = await cls.find_one({'_id': ObjectId(id)})
        return user

    def check_password(self, password: str):
        if self.hashed_password:
            return PWD_CONTEXT.verify(password, self.hashed_password)

    def set_password(self, password: str):
        self.hashed_password = PWD_CONTEXT.hash(password)
        self.last_password_updated_at = datetime.now()

    def create_access_token(self, expires_delta: timedelta = None):
        now = datetime.utcnow()
        if expires_delta:
            expire = now + expires_delta
        else:
            expire = now + timedelta(minutes=15)
        to_encode = {
            'exp': expire,
            'iat': now,
            'sub': str(self.id),
            'scope': ' '.join(self.scopes) if self.scopes else ''
        }
        encoded_jwt = jwt.encode(to_encode, SECRET_KEY, algorithm=ALGORITHM)
        return encoded_jwt

    @classmethod
    async def get_by_username(cls, username: str):
        return await cls.find_one({'username': username})

    @classmethod
    async def register_new_user(cls, email: str, full_name: str, username: str,
                                password: str):
        user = cls(email=email, full_name=full_name, username=username)
        user.set_password(password)
        await user.commit()
        return user
示例#3
0
class Trip(Document):
    user = fields.ReferenceField('User', required=True)
    from_location = fields.EmbeddedField(Location, required=True)
    to_location = fields.EmbeddedField(Location, required=True)
    start_date = fields.DateTimeField(required=True)
    end_date = fields.DateTimeField(required=True)
    purpose = fields.StrField()
    tags_to_discuss = fields.ListField(fields.ReferenceField('Tag'))
    notify_users = fields.BoolField(missing=True)
示例#4
0
class User(UsersMixin):
    def _validate_industries(field, value):
        for industry in value:
            yield from industry.industry.fetch(no_data=True)

    def _validate_invited_by(field, value):
        from models.utils import is_valid_invited_by
        if not (yield from is_valid_invited_by(value)):
            raise ValidationError('There is no such user or group code.')

    fullname = fields.StrField(required=True)
    email = fields.EmailField(unique=True, required=True)
    nickname = fields.StrField(unique=True,
                               required=True,
                               validate=validate.Regexp(r'[\w\d]+'))
    birthday = fields.DateTimeField(required=True, format=DATE_FORMAT)
    phone_numbers = fields.ListField(
        fields.StrField(validate=validate.Regexp(r'[+][\w\d]+')),
        required=True)
    photo = fields.StrField(required=True)
    bio = fields.StrField(required=False, validate=validate.Length(max=320))
    organizations = fields.StrField(required=False,
                                    validate=validate.Length(max=320))
    education = fields.StrField(required=False,
                                validate=validate.Length(max=320))
    personal_invite_code = fields.StrField(
        unique=True,
        required=True,
        validate=validate.Length(equal=INVITE_CODE_LENGTH))

    social_links = fields.ListField(fields.EmbeddedField(SocialLink))
    current_location = fields.EmbeddedField(Location)
    preferred_ways_to_meet = fields.ListField(
        fields.StrField(validate=validate.OneOf(PREFERRED_WAYS_TO_MEET)),
        unique=True)

    join_date = fields.DateTimeField(missing=datetime.utcnow())
    is_active = fields.BoolField(missing=False)
    is_deleted = fields.BoolField()
    date_deleted = fields.DateTimeField()
    is_notifications_enabled = fields.BoolField(missing=True)

    skills = fields.ListField(fields.ReferenceField(Tag), required=True)
    interests = fields.ListField(fields.ReferenceField(Tag))
    industries = fields.ListField(fields.EmbeddedField(Industry),
                                  required=True,
                                  io_validate=_validate_industries)
    languages = fields.ListField(fields.EmbeddedField(Language))

    looking_for = fields.ListField(fields.ReferenceField(LookingFor))
    bubbles = fields.ListField(fields.EmbeddedField(Bubble))

    invited_type = fields.StrField(required=True,
                                   validate=validate.OneOf(INVITE_TYPE))
    invited_by = fields.StrField(required=True,
                                 io_validate=_validate_invited_by)
示例#5
0
class Member(Document):
    class Meta:
        strict = False

    id = fields.IntegerField(attribute="_id")
    pokemon = fields.ListField(fields.EmbeddedField(Pokemon), required=True)

    selected = fields.IntegerField(required=True)

    order_by = fields.StringField(default="number")
    pokedex = fields.DictField(fields.StringField(),
                               fields.IntegerField(),
                               default=dict)
    shinies_caught = fields.IntegerField(default=0)
    balance = fields.IntegerField(default=0)
    redeems = fields.IntegerField(default=0)

    shiny_hunt = fields.IntegerField(default=None)
    shiny_streak = fields.IntegerField(default=0)

    boost_expires = fields.DateTimeField(default=datetime.min)

    last_voted = fields.DateTimeField(default=datetime.min)
    vote_total = fields.IntegerField(default=0)
    vote_streak = fields.IntegerField(default=0)
    gifts_normal = fields.IntegerField(default=0)
    gifts_great = fields.IntegerField(default=0)
    gifts_ultra = fields.IntegerField(default=0)

    silence = fields.BooleanField(default=False)
    joined_at = fields.DateTimeField(default=None)
    invites = fields.IntegerField(default=0)

    suspended = fields.BooleanField(default=False)

    @property
    def selected_pokemon(self):
        try:
            return next(
                filter(lambda x: x.number == int(self.selected), self.pokemon))
        except StopIteration:
            return None

    @property
    def boost_active(self):
        return datetime.now() < self.boost_expires

    @property
    def shiny_hunt_chance(self):
        return (1 + math.tanh(self.shiny_streak / 50)) / 4096

    def determine_shiny(self, species):
        if self.shiny_hunt != species.dex_number:
            return random.randint(1, 4096) == 1
        else:
            return random.random() < self.shiny_hunt_chance
示例#6
0
class OrderDocument(Document):
    products = fields.ListField(fields.ReferenceField(ProductDocument),
                                required=True)
    cafe = fields.ObjectIdField(required=True)
    user_id = fields.StringField(required=True, unique=True)
    order_time = fields.DateTimeField(required=True)
    status = fields.StringField(required=True)
    code = fields.IntegerField(required=True)
    price = fields.FloatField(required=True)
    deletion_time = fields.DateTimeField(allow_none=True)
示例#7
0
class Account(Document):
    #
    username = fields.StringField(required=True)
    password = fields.StringField(required=True)
    createDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1990, 1, 1)), required=True)
    updateDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1990, 1, 1)), required=True)

    class Meta():
        collection = db.account
示例#8
0
class Car(Document):
    model = fields.StringField()
    manufacturer = fields.StringField()
    release_year = fields.IntegerField()
    colour = fields.StringField()
    vin_code = fields.StringField(unique=True)
    created_time = fields.DateTimeField(default=datetime.utcnow)
    updated_time = fields.DateTimeField()

    class Meta:
        indexes = ["-created_time"]
示例#9
0
class Product(Document):
    # id_prod = fields.IntegerField()
    id_cat = fields.ReferenceField(Category)
    name_prod = fields.StringField(required=True, unique=True)
    description = fields.StringField(required=True, unique=True)
    price = fields.NumberField(required=True)
    image_url_prod = fields.UrlField()
    avail_from = fields.DateTimeField()
    avail_till = fields.DateTimeField()

    class Meta:
        collection = db.product
示例#10
0
class User(Document):
    #
    name = fields.StringField(required=True)
    department = fields.StringField(required=True)
    team = fields.StringField(required=True)
    createDate = fields.DateTimeField(
        validate=validate.Range(min=pd.Timestamp(1990, 1, 1)), required=True)
    updateDate = fields.DateTimeField(
        validate=validate.Range(min=pd.Timestamp(1990, 1, 1)), required=True)
    accountRef = fields.StringField(required=True)

    class Meta():
        collection = db.user
示例#11
0
class Project(Document):
    projectId = fields.StrField(required=True)
    name = fields.StrField(required=True)
    ownerName = fields.StrField(required=True)
    ownerORCID = fields.StrField(required=True)
    description = fields.StrField()
    createdDate = fields.DateTimeField(default=datetime.now)
    updatedDate = fields.DateTimeField(default=datetime.now)
    samples = fields.ListField(fields.ReferenceField("Sample"))
    isLocked = fields.BooleanField(default="false")

    class Meta:
        collection_name = "project"
示例#12
0
class BaseDocument(Document):
    createdAt = fields.DateTimeField(required=False)
    updatedAt = fields.DateTimeField(required=False)

    class Meta:
        abstract = True

    def pre_insert(self):
        self.createdAt = now()
        self.updatedAt = now()

    def pre_update(self):
        self.updatedAt = now()
示例#13
0
class User(Document):
    class Meta:
        collection_name = 'users'
        indexes = []

    id = fields.IntField(required=True, unique=True, attribute='_id')
    process_flag = fields.BooleanField(default=False)
    created = fields.DateTimeField(required=True)
    visited = fields.DateTimeField(required=True)
    username = fields.StrField(required=True, allow_none=True)
    first_name = fields.StrField(required=True)
    last_name = fields.StrField(required=True, allow_none=True, default=None)
    language_code = fields.StrField(required=True, allow_none=True)
    language = fields.StrField(required=True)
示例#14
0
class User(Document):
    class Meta:
        collection_name = 'users'
        indexes = []

    user_id = fields.IntField(required=True, unique=True)
    created = fields.DateTimeField(required=True)
    visited = fields.DateTimeField(required=True)
    username = fields.StrField(required=True, allow_none=True)
    first_name = fields.StrField(required=True)
    last_name = fields.StrField(required=True, allow_none=True)
    language_code = fields.StrField(required=True, allow_none=True)
    language = fields.StrField(required=True)
    is_active = fields.BoolField(required=True, default=True)
示例#15
0
class MLmodel(Document):
    #
    description = fields.StringField(required=True)  # to remember the functionality of the pkl file
    filename = fields.StringField(required=True)  # plk file name
    path = fields.StringField(required=True)  # path of the plk file
    version = fields.StringField(required=True)  # plk file version
    department = fields.StringField(required=True) # assign the model to department
    team = fields.StringField(required=True) # assign the model to team
    features = fields.StringField(required=True) # features have to be assigned
    name = fields.StringField(required=True)  # model name
    isDeployed = fields.BooleanField(required=True,default=False)
    createDate = fields.DateTimeField(validate=validate.Range(min=pd.Timestamp(1990,1,1)),required=True)
    updateDate = fields.DateTimeField(validate=validate.Range(min=pd.Timestamp(1990,1,1)),required=True)
    class Meta():
        collection = db.mlmodel
示例#16
0
class Subreddit(Document):
    """
    """
    # __tablename__ = 'subreddits_subreddit'
    # id = db.Column(db.Integer, primary_key=True)
    # name = db.Column(db.String(SUBREDDIT.MAX_NAME), unique=True)
    name = fields.StrField(validate=validate.Length(max=SUBREDDIT.MAX_NAME),
                           unique=True)

    # desc = db.Column(db.String(SUBREDDIT.MAX_DESCRIPTION))
    desc = fields.StrField(validate=validate.Length(
        max=SUBREDDIT.MAX_DESCRIPTION))

    # admin_id = db.Column(db.Integer, db.ForeignKey('users_user.id'))
    admin_id = fields.ObjectIdField()
    admin = fields.ReferenceField("User")

    # created_on = db.Column(db.DateTime, default=db.func.now())
    # updated_on = db.Column(db.DateTime, default=db.func.now(), onupdate=db.func.now())
    date_created = fields.DateTimeField(default=datetime.datetime.now())
    date_updated = fields.DateTimeField(default=datetime.datetime.now())

    # threads = db.relationship('Thread', backref='subreddit', lazy='dynamic')
    # threads = fields.ReferenceField("Thread") # Integer?

    status = fields.IntegerField(default=SUBREDDIT.ALIVE)

    class Meta:
        collection_name = 'subreddits'
        # collection = db.subreddits

    def __repr__(self):
        return '<Subreddit %r>' % (self.name)

    def get_threads(self, order_by='timestamp'):
        """
        default order by timestamp
        """
        # if order_by == 'timestamp':
        #     return self.threads.order_by(db.desc(Thread.created_on)).\
        #         all()[:SUBREDDIT.MAX_THREADS]
        # else:
        #     return self.threads.order_by(db.desc(Thread.created_on)).\
        #         all()[:SUBREDDIT.MAX_THREADS]

        threads = threads_model.Thread.find({'subreddit_id': self.id
                                             })  #[:SUBREDDIT.MAX_THREADS]
        return threads
示例#17
0
class Payment(Document):
    id_order = fields.ReferenceField(Order)
    status = fields.BooleanField()
    del_dtime = fields.DateTimeField()

    class Meta:
        collection = db.employee
示例#18
0
class BaseStudent(Document):
    name = fields.StrField(required=True)
    birthday = fields.DateTimeField()
    gpa = fields.FloatField()

    class Meta:
        abstract = True
示例#19
0
class Channel(Document):
    id = fields.IntegerField(attribute="_id")
    incense_expires = fields.DateTimeField(default=datetime.min)

    @property
    def incense_active(self):
        return datetime.utcnow() < self.incense_expires
class User(BaseDocument):
    """
    This document stores the user information and data
    as the number of victories and defeats
    """
    username = fields.StrField(
        required=True,
        unique=True,
        validate=[validate.Length(min=6, max=20)],
    )

    email = fields.StrField(
        required=True,
        unique=True,
        validate=validate.Email(),
    )

    victories = fields.IntField(
        default=0,
    )

    created_at = fields.DateTimeField(
        default=datetime.datetime.now(),
    )

    class Meta:
        """
        ODM Metadata
        """
        collection = db.users
示例#21
0
class MemberWarning(Document):
    id = fields.IntegerField(attribute="_id")
    member_id = fields.IntegerField(required=True)
    guild_id = fields.IntegerField(required=True)
    reason = fields.StringField(default=None)
    active = fields.BooleanField(default=True)
    date_issued = fields.DateTimeField(default=datetime.min)
示例#22
0
class EmployeeModel(Document):
    name = fields.StringField(required=True)
    name_lower = fields.StringField(required=True)
    email = fields.EmailField(required=True)
    age = fields.IntegerField(required=True)
    company = fields.StringField(required=True)
    company_lower = fields.StringField(required=True)
    join_date = fields.DateTimeField(required=True)
    job_title = fields.StringField(required=True)
    job_title_lower = fields.StringField(required=True)
    gender = fields.StringField(required=True)
    salary = fields.IntegerField(required=True)

    class Meta:
        collection_name = 'employee'
        indexes = ('name_lower', 'age', 'company_lower', 'job_title_lower',
                   'gender', ('$name', '$company', '$job_title'))

    @classmethod
    def serialize(cls, dct):
        return {
            key: value
            for key, value in dct.items()
            if key != '_id' and not key.endswith('_lower')
        }
示例#23
0
class LookingFor(Document):
    title = fields.StrField(required=True)
    description = fields.StrField()
    skills = fields.ListField(fields.ReferenceField('Tag'))
    recommendations = fields.ListField(fields.ReferenceField('Recommendation'))
    date = fields.DateTimeField()
    only_for_my_contacts = fields.BoolField()
示例#24
0
class Meeting(Document):
    owner = fields.ReferenceField('User', required=True)
    members = fields.ListField(fields.ReferenceField('MeetingMember'))
    meeting_type = fields.StrField(validate=validate.OneOf(MEETING_TYPES),
                                   required=True)
    state = fields.StrField(validate=validate.OneOf(MEETING_STATES))
    description = fields.StrField()

    place_address = fields.StrField()
    latitude = fields.FloatField()
    longitude = fields.FloatField()
    google_place_id = fields.IntField()
    google_place_city_id = fields.IntField()

    date_created = fields.DateTimeField(missing=datetime.now())
    date_resolved = fields.DateTimeField(required=True)
示例#25
0
    class Student(Document):
        name = fields.StrField(required=True)
        birthday = fields.DateTimeField()
        courses = fields.ListField(fields.ReferenceField(Course))

        class Meta:
            allow_inheritance = True
示例#26
0
class Member(Document):
    class Meta:
        collection_name = "member"

    # vouch = fields.ListField(fields.IntegerField, default=list)
    id = fields.IntegerField(attribute="_id")
    balance = fields.IntegerField(default=0)
    banker_balance = fields.IntegerField(default=0)
    joined_at = fields.DateTimeField(default=None)
    suspended = fields.BooleanField(default=False)
    invites = fields.IntegerField(default=0)

    gatcha_counter = fields.DictField(fields.StringField(),
                                      fields.IntegerField(),
                                      default=dict)

    # shitty event collected code
    has_collected = fields.BooleanField(default=False)

    # even more shitty reputation system
    vouched_for = fields.ListField(fields.IntegerField())
    vouched_by = fields.ListField(fields.IntegerField())

    reported_for = fields.ListField(fields.IntegerField())
    reported_by = fields.ListField(fields.IntegerField())

    pray_count = fields.IntegerField(default=0)
    pray_winnings = fields.IntegerField(default=0)

    #event system
    event_activated = fields.BooleanField(default=False)
    event_multiplier = fields.FloatField(default=1.0)
    work_activated = fields.BooleanField(default=False)
    bonus_bought = fields.BooleanField(default=False)
    points = fields.FloatField(default=0.0)
示例#27
0
class Member(Document):
    class Meta:
        strict = False

    id = fields.IntegerField(attribute="_id")
    coins = fields.IntegerField(default=0)
    last_collected = fields.DateTimeField(default=datetime.min)
示例#28
0
class ClinicalSample(Document):
    clinicalSampleCode = fields.StringField(required=True)
    sampleCounter = fields.IntegerField(required=True)
    name = fields.StrField(required=True)
    projectId = fields.ObjectIdField(required=True)
    workflowTag = fields.StrField(required=False)
    quality = fields.StrField(required=False)
    description = fields.StrField()
    processingPerson = fields.StrField()
    createdDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    updatedDate = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))

    class Meta:
        collection_name = "clinicalSample"
示例#29
0
 class WithDefault(Document):
     with_umongo_default = fields.DateTimeField(
         default=datetime(1999, 1, 1))
     with_marshmallow_missing = fields.DateTimeField(
         marshmallow_missing=datetime(2000, 1, 1))
     with_marshmallow_default = fields.DateTimeField(
         marshmallow_default=datetime(2001, 1, 1))
     with_marshmallow_and_umongo = fields.DateTimeField(
         default=datetime(1999, 1, 1),
         marshmallow_missing=datetime(2000, 1, 1),
         marshmallow_default=datetime(2001, 1, 1))
     with_force_missing = fields.DateTimeField(
         default=datetime(2001, 1, 1),
         marshmallow_missing=missing,
         marshmallow_default=missing)
     with_nothing = fields.StrField()
示例#30
0
class Rate(Document):
    from_user = fields.ReferenceField('User', required=True)
    to_user = fields.ReferenceField('User', required=True)
    rate = fields.IntField(required=True,
                           validate=validate.Range(min=1, max=5))
    description = fields.StrField()
    date = fields.DateTimeField()