Пример #1
0
 class Book(Document):
     title = fields.StrField()
     length = fields.IntField(attribute='l')
     author = fields.EmbeddedField(Author, attribute='a')
     chapters = fields.ListField(fields.EmbeddedField(Chapter))
     tags = fields.ListField(fields.StrField(), attribute='t')
     editor = fields.ReferenceField(Editor, attribute='e')
Пример #2
0
class Course(Document):  # pylint: disable=abstract-method
    """
    A course.

    Course instances are shared between students.

    Taken from fenetre/db.py.
    """

    # Course code including cohort str
    course_code = fields.StrField(required=True, unique=True)

    # Is this course's form setup locked by an admin?
    configuration_locked = fields.BoolField(default=False)

    # FORM config:

    # does this course use an attendance form (to deal with people who have COOP courses or something)
    has_attendance_form = fields.BoolField(default=True)

    # form URL
    form_url = fields.URLField(default=None)

    # form configuration
    form_config = fields.ReferenceField(Form, default=None)

    # Slots we know this course occurs on (f"{day}-{period}" so for example "2-1a" is day 2 in the morning asynchronous
    known_slots = fields.ListField(fields.StrField(), default=[])

    # Teacher name
    teacher_name = fields.StrField(default="")
Пример #3
0
class Comment(EmbeddedDocument):
    id = fields.ObjectIdField(default=ObjectId())
    content = fields.StrField()

    created_by = fields.ReferenceField("User")
    created_at = fields.DateTimeField(default=datetime.now())
    updated_at = fields.DateTimeField(default=datetime.now())
Пример #4
0
class Payment(Document):
    id_order = fields.ReferenceField(Order)
    status = fields.BooleanField()
    del_dtime = fields.DateTimeField()

    class Meta:
        collection = db.employee
Пример #5
0
class UserModel(Document):
    buylist = fields.ReferenceField(ListModel, default=None)
    chat_id = fields.IntField(required=True, unique=True)
    username = fields.StrField()
    #lastnotice = fields.DateTimeField(default=get_now())
    checknotice = fields.BoolField(default=True)
    chosenbuilding = fields.IntField(default=0)
    noticehour = fields.IntField(default=8)
    notification = fields.DictField(default={
        BEFORE_CLEANING: None,
        ON_CLEANING: 8
    })
    lastnotice = fields.DictField(default={
        BEFORE_CLEANING: get_now(),
        ON_CLEANING: get_now()
    })

    class Meta:
        collection_name = 'user'

    def update(self, **attrs) -> Union[UpdateResult, InsertOneResult]:
        for attr in attrs:
            self[attr] = attrs[attr]
        return self.commit()

    def get_buy_list(self) -> ListModel:
        try:
            return self.buylist.fetch()
        except ValidationError:
            _list = create_list(self.chat_id)
            self.update(buylist=_list)
            return _list
Пример #6
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)
Пример #7
0
    class Course(Document):
        name = fields.StrField(required=True)
        teacher = fields.ReferenceField(Teacher, required=True)

        class Meta:
            register_document = False
            collection = db.course
Пример #8
0
class User(umongo.Document):  # noqa
    """
    Main user document in database
    """

    uid = fields.IntegerField(required=True, unique=True)
    created_time = fields.IntegerField(default=time.time)
    accounts = fields.ListField(fields.ReferenceField("UserInChat"),
                                default=[])  # accounts it is a list of

    # chats (references to chats) where user exists.

    class Meta:
        collection = instance.db.users

    @staticmethod
    async def create_user(uid: int) -> typing.Union["User", typing.NoReturn]:
        """
        Create user in database or raise exception. - umongo.exceptions.UMongoError
        :param uid:
        :return:
        """
        user: User = User(uid=uid)
        await user.commit()
        return user

    @staticmethod
    async def get_user(uid: int) -> typing.Union["User", typing.NoReturn]:
        """
        Lookup user in database via UID.
        :param uid:
        :return:
        """
        user = await User.find_one({"uid": uid})
        return user

    @staticmethod
    async def get_account(document_id: str):
        """
        Lookup user in user chats via document `_id`
        :param document_id:
        :return:
        """
        user = await User.find_one({"accounts": document_id})
        return user

    @staticmethod
    async def add_account(usr: "******", document_id: str):
        """
        Add user account to accounts list.
        :param usr: user object
        :param document_id: document '_id' of new account
        :return:
        """
        current: dict = usr.dump()
        accounts: list = current["accounts"]
        accounts.append(document_id)
        usr.update({"accounts": accounts})
        return await usr.commit()
Пример #9
0
 class IOStudent(Student):
     io_field = fields.StrField(io_validate=io_validate)
     list_io_field = fields.ListField(
         fields.IntField(io_validate=io_validate))
     reference_io_field = fields.ReferenceField(
         classroom_model.Course, io_validate=io_validate)
     embedded_io_field = fields.EmbeddedField(
         EmbeddedDoc, io_validate=io_validate)
Пример #10
0
class ResetLink(Document):
    user = fields.ReferenceField('User', required=True)
    code = fields.StrField(required=True)
    type = fields.StrField(required=True,
                           validate=validate.OneOf(RESET_LINK_TYPE))
    is_used = fields.BoolField(missing=False)
    date_created = fields.DateTimeField(missing=datetime.now())
    date_valid = fields.DateTimeField(allow_none=True)
Пример #11
0
class User(Document):
    email = fields.EmailField(required=True, unique=True)
    birthday = fields.DateTimeField(
        validate=validate.Range(min=datetime(1900, 1, 1)))
    friends = fields.ListField(fields.ReferenceField("User"))

    class Meta:
        collection = db.user
Пример #12
0
class Image(Document):
    type = fields.StrField(required=True,
                           validate=validate.OneOf(
                               ["character_image", "actor_image"]))
    character = fields.ReferenceField("Character")

    class Meta:
        collection = db.image
Пример #13
0
class Tag(Document):
    name = fields.StrField()
    text = fields.StrField()
    guild = fields.ReferenceField(document=Guild)
    user_id = fields.IntegerField()

    class Meta:
        collection_name = 'tag'
Пример #14
0
class Category(Document):
    # id_cat = fields.IntegerField()
    id_cafe = fields.ReferenceField(Cafe)
    name_cat = fields.StringField(required=True, unique=True)
    image_url_cat = fields.UrlField()

    class Meta:
        collection = db.category
Пример #15
0
class Product(Document):
    category = fields.ReferenceField(Category)
    name = fields.StringField(required=True, unique=True)
    description = fields.StringField(required=True, unique=True)
    price = fields.NumberField(required=True)
    image_url = fields.UrlField()
    available_from = fields.DateTimeField()
    available_till = fields.DateTimeField()
Пример #16
0
class Reaction(Document):
    string = fields.StrField(attribute='_id', unique=True)
    reaction = fields.StrField()
    is_emb = fields.BooleanField()
    guild = fields.ReferenceField(document=Guild)

    class Meta:
        collection_name = 'reaction'
Пример #17
0
class TaskType(Document):

    number = fields.StringField(required=True, unique=True)
    points = fields.IntegerField(required=True, default=1)
    cods = fields.ListField(fields.StringField)
    description = fields.StringField()
    count_of_tasks = fields.IntegerField(default=0)
    subject = fields.ReferenceField(Subject)
Пример #18
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
Пример #19
0
    class Student(Document):
        name = fields.StrField(required=True)
        birthday = fields.DateTimeField()
        courses = fields.ListField(fields.ReferenceField(Course))

        class Meta:
            register_document = False
            collection = db.student
            allow_inheritance = True
Пример #20
0
class Topic(Document):
    """
    :ivar str name:
    :ivar typing.List[Rule] rules:
    """

    name = fields.StringField(required=True)
    rules = fields.ListField(fields.ReferenceField(Rule, dbRef=True),
                             required=True)
Пример #21
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)
    code = fields.IntegerField(required=True)
    price = fields.FloatField(required=True)
    deletion_time = fields.DateTimeField(allow_none=True)
Пример #22
0
class Message(Document):
    message = fields.StringField(required=True)
    time = fields.DateTimeField(missing=datetime.now())
    user_id = fields.ReferenceField(User, required=True)

    @property
    def user(self):
        user = self.user_id._document
        return user
Пример #23
0
class AddTagRequest(Document):
    user = fields.ReferenceField('User', required=True)
    tag_name = fields.StrField(required=True)
    type = fields.StrField(validate=validate.OneOf(TAG_TYPES))
    state = fields.StrField(validate=validate.OneOf(ADD_TAG_REQUEST_STATE))
    date = fields.DateTimeField(missing=datetime.now())

    @property
    def repeats_count(self):
        return 0
Пример #24
0
class RoutePoint(Document, metaclass=MetaBaseTemplate):
    route = fields.ReferenceField(Route, required=True)
    point = fields.DictField(required=True)
    photos = fields.ListField(fields.ObjectIdField, missing=list)
    text = fields.StringField()
    tags = fields.ListField(fields.StringField, missing=list)
    liked = fields.IntegerField(missing=0)

    class Meta:
        collection_name = "route_points"
Пример #25
0
class Cafe(Document):
    # id_cafe = fields.IntegerField()
    name_cafe = fields.StringField(required=True, unique=True)
    address = fields.StringField(required=True, unique=True)
    info = fields.StringField()
    image_url_cafe = fields.UrlField()
    payment_type = fields.ReferenceField(PaymentTypes)

    class Meta:
        collection = db.cafe
Пример #26
0
class AutoRole(Document):
    _id = fields.IntegerField(unique=True)
    delay = fields.IntegerField()
    active_auto_role = fields.ListField(fields.DictField(
        user_id=fields.IntegerField(),
        date_of_accession=fields.DateTimeField())
    )
    guild = fields.ReferenceField(document=Guild)

    class Meta:
        collection_name = 'autorole'
Пример #27
0
class Remind(Document):
    _id = fields.IntegerField()
    r_num = fields.IntegerField()
    user_id = fields.IntegerField()
    text = fields.StrField()
    guild = fields.ReferenceField(document=Guild)
    channel_id = fields.IntegerField()
    remind_time = fields.DateTimeField()

    class Meta:
        collection_name = 'remind'
Пример #28
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
Пример #29
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"
Пример #30
0
class Context(Document):
    """
    :ivar User ofUser:
    :ivar datetime timestamp:
    :ivar typing.List[Params] params:
    :ivar Message message:
    """
    ofUser = fields.ReferenceField(User, dbRef=True, required=True)
    timestamp = fields.StrictDateTimeField(tz_aware=True,
                                           format="iso",
                                           required=True)
    params = fields.ListField(fields.EmbeddedField(Params))
    message = fields.EmbeddedField(Message)