class User(Document):
    __collection__ = 'users'

    index = IntField(required=True)
    email = StringField(required=True)
    first_name = StringField(
        db_field="whatever", max_length=50, default=lambda: "Bernardo"
    )
    last_name = StringField(max_length=50, default="Heynemann")
    is_admin = BooleanField(default=True)
    website = URLField(default="http://google.com/")
    updated_at = DateTimeField(
        required=True, auto_now_on_insert=True, auto_now_on_update=True
    )
    embedded = EmbeddedDocumentField(
        EmbeddedDocument, db_field="embedded_document"
    )
    nullable = EmbeddedDocumentField(
        EmbeddedDocument, db_field="nullable_embedded_document"
    )
    numbers = ListField(IntField())

    posts = ListField(ReferenceField(reference_document_type=Post))

    def __repr__(self):
        return "%s %s <%s>" % (self.first_name, self.last_name, self.email)
示例#2
0
class EventStatus(BaseDocument):
    class Meta:
        fields_map = dict()
        verbose_name = 'eventStatus'

    code = StringField(required=True, max_length=16)
    name = StringField(required=True, max_length=64)
示例#3
0
class RaceStatisticInfo(BaseModel):
    race_cid = StringField(required=True)  # 竞赛活动cid信息
    daily_code = StringField(required=True)  # 日期
    total_member_count = IntegerField(default=0)  # 总会员人数
    total_answer_times = IntegerField(default=0)  # 总答题数
    total_red_packet_count = IntegerField(default=0)  # 总红包数
    total_red_packet_amount = FloatField(default=0.0)  # 总红包金额
class Post(Document):
    __collection__ = 'posts'

    title = StringField(required=True)
    text = StringField(required=True, db_field='content')
    category = ReferenceField(reference_document_type=Category)
    comments = ListField(EmbeddedDocumentField(embedded_document_type=Comment))
示例#5
0
class User(Document):
    __collection__ = 'users'

    id = UUIDField()
    name = StringField()
    email = EmailField(required=True, unique=True)
    password = StringField(required=True)
    date_added = DateTimeField(required=True, auto_now_on_insert=True)
示例#6
0
class User(Document):
    email = StringField(required=True)
    first_name = StringField(max_length=50)
    last_name = StringField(max_length=50)
    is_admin = BooleanField(default=True)

    def __repr__(self):
        return "%s %s <%s>" % (self.first_name, self.last_name, self.email)
示例#7
0
class User(Document):
    __collection__ = "users"  # optional. if no collection is specified, class name is used.

    first_name = StringField(required=True)
    last_name = StringField(required=True)

    @property
    def full_name(self):
        return "%s, %s" % (self.last_name, self.first_name)
示例#8
0
文件: fake.py 项目: dimonji/chimera
class FakeUserDocument(Document):
    __collection__ = "fakeUser"
    fake_id = StringField()
    info = EmbeddedDocumentField(FakeUserInfoDocument)
    critic = BaseField()
    cluster = StringField()

    def get_user_name(self) -> str:
        return self.info.name
示例#9
0
class Event(BaseDocument):
    name = StringField(required=True, max_length=255)
    status = StringField(required=True, max_length=16)
    level = StringField(required=True, max_length=16)
    started_at = DateTimeField(required=True)
    ended_at = DateTimeField(required=True)
    # created_by = ReferenceField(reference_document_type=User)
    created_at = DateTimeField(required=True, auto_now_on_insert=True)
    participants = ListField(JsonField(required=True))
示例#10
0
class Alteration(BaseDocument):
    title = StringField(max_length=64)
    product = StringField(max_length=32)
    execute_at = DateTimeField()
    reason = StringField(max_length=128)
    effect = StringField(max_length=128)
    sent_at = DateTimeField()
    sent_by = ListField(StringField())
    sent_to = ListField(JsonField())
示例#11
0
class UserDocument(BaseDocument):
    """Пользовательская информация.

    :type name: str Имя для идентификации пользователя;
    :type password: str Пароль для авторизации пользователя;
    """
    __collection__ = "user"

    username = StringField(required=True, unique=True)
    password = StringField(required=True)
示例#12
0
文件: user.py 项目: Helo250/ops-tools
class User(BaseDocument):
    email = EmailField(required=False)
    mobile = MobileField(required=False)
    nickname = StringField(required=True, max_length=32)
    auth_uid = StringField(required=True)
    is_active = BooleanField(default=True)

    @classmethod
    def get_by_natural_key(cls, auth_uid):
        return cls.object(auth_uid=auth_uid)
示例#13
0
class User(Document):
    email = StringField(required=True)
    first_name = StringField(max_length=50, default=lambda: "Bernardo")
    last_name = StringField(max_length=50, default="Heynemann")
    is_admin = BooleanField(default=True)
    website = URLField(default="http://google.com/")
    updated_at = DateTimeField(required=True, auto_now_on_insert=True, auto_now_on_update=True)

    def __repr__(self):
        return "%s %s <%s>" % (self.first_name, self.last_name, self.email)
示例#14
0
class Issue(Document):
    __collection__ = 'issues'

    id = UUIDField()
    title = StringField(required=True)
    content = StringField(required=True)
    level = StringField(required=True)
    date_added = DateTimeField(required=True, auto_now_on_insert=True)
    date_updated = DateTimeField(required=True, auto_now_on_update=True)
    user = ReferenceField(User)
示例#15
0
class User(Document):
    __collection__ = "AggregationUser"

    email = StringField(required=True)
    first_name = StringField(max_length=50, default=lambda: "Bernardo")
    last_name = StringField(max_length=50, default="Heynemann")
    is_admin = BooleanField(default=True)
    updated_at = DateTimeField(required=True,
                               auto_now_on_insert=True,
                               auto_now_on_update=True)
    number_of_documents = IntField()
    list_items = ListField(IntField())
示例#16
0
class EmailQueue(BaseDocument):
    message = StringField(required=True)
    to = StringField(required=True)
    sended = BooleanField(default=False)

    @staticmethod
    def add(username, to, subject, msg, type="text"):

        message = MIMEMultipart('alternative')
        message['From'] = username
        message['To'] = to
        message['Subject'] = subject

        if type == "text":
            msg = MIMEText(msg, 'plain', 'utf-8')
        elif type == "html":
            msg = MIMEText(msg, 'html', 'utf-8')

        message.attach(msg)
        message = message.as_string()

        EmailQueue(message=message, to=to).save()

    @staticmethod
    def send(application):
        emails = EmailQueue.objects(sended=False)
        for email in emails:
            email._send_mail(application)
            email.delete()

    def _send_mail(self, app):
        settings = app.settings.get('email', {})

        host = settings.get("host")
        port = settings.get("port")
        username = settings.get("username")
        password = settings.get("password")

        smtpserver = smtplib.SMTP(host, port)

        smtpserver.ehlo()
        if settings.get('use_tls'):
            smtpserver.starttls()
        if password:
            smtpserver.login(username, password)

        smtpserver.sendmail(username, self.to, self.message)
        smtpserver.close()
示例#17
0
 def test_to_query(self):
     field = ListField(StringField())
     field.from_son(["1", "2", "3"])
     expect(field.to_query(["1", "2", "3"])).to_equal({
         "$all": ["1", "2", "3"]
     })
     expect(field.to_query("string")).to_equal("string")
示例#18
0
class Message(BaseDocument):
    # 消息内容
    title = StringField(max_length=64)
    content = StringField(max_length=500)
    comment = StringField(max_length=200)
    # 发送信息
    sent_from = JsonField()
    sent_at = DateTimeField()
    sent_by = ListField(StringField())
    sent_to = ListField(JsonField())
    next_sent_at = DateTimeField()
    # 管理信息
    created_at = DateTimeField(auto_now_on_insert=True)
    # created_by = ReferenceField()
    updated_at = DateTimeField(auto_now_on_insert=True,
                               auto_now_on_update=True)
    status = StringField(max_length=32, default=MessageStatusEnum('未发送').name)
    configure = JsonField()
    log = ListField(JsonField())
    is_active = BooleanField(default=True)

    @classmethod
    def validate_values(cls, dic, allow_cover=True):
        validated = super(Message, cls).validate_values(dic, allow_cover)
        schedule = validated['configure'].get('schedule',
                                              DefaultMessageSchedule)
        customized = validated['configure'].get('customized', [])
        if schedule == 'once':
            pass
        elif schedule == 'customized' and customized:
            sent_at = validated.get('sent_at')
            validated['next_sent_at'] = get_next_day(sent_at, customized,
                                                     schedule)
        else:
            sent_at = validated.get('sent_at')
            validated['next_sent_at'] = get_next_day(sent_at, 1, schedule)
        return validated

    @staticmethod
    async def ir_cron():
        with open('/tmp/wodeshijie', 'a+') as f:
            for m in await Message.objects.find_all():
                f.write('%s \n' % m.title)
        return True
示例#19
0
class ThirdPartyPlatform(BaseDocument):
    """
    authentication:
        [{
            'type': 'text',
            'label': '账户',
            'name': 'account',
            'required': true
        },
        {
            'type': text,
            'label':'密码',
            'name': 'password',
            'required': true
        }]
    """
    name = StringField(max_length=32)
    code = StringField(max_length=32)
    authentication = ListField(JsonField())
示例#20
0
class User(BaseDocument):
    mobile = StringField(required=True)
    password = StringField(required=True)
    nickname = StringField(required=True)
    gender = IntField(required=True, default=1)
    description = StringField()
    avatar_url = StringField()

    school_id = ReferenceField(reference_document_type=School)
    like_count = IntField(required=True, default=0)
    follower_count = IntField(required=True, default=0)
    following_count = IntField(required=True, default=0)

    create_time = DateTimeField(required=True,
                                auto_now_on_insert=True,
                                auto_now_on_update=False)

    def to_dict(self):
        data = super(User, self).to_dict()
        del data['password']
        return data
示例#21
0
class User(Document):
    def __init__(self, **kwargs):
        super(User, self).__init__(**kwargs)

    id = IntField(unique=True)
    email = EmailField()

    _salt = BinaryField(12)
    # 64 is the length of the SHA-256 encoded string length
    _password = StringField(64)

    group = ReferenceField('scheduler.model.Group')
    timetable = EmbeddedDocumentField('scheduler.model.Schedule')
示例#22
0
class Lesson(Document):
    id = IntField()
    name = StringField(required=True)
    audience = StringField()
    teacher_name = StringField()
    lesson_type = StringField()
    start_time = StringField()
    color = StringField()
    comments = ListField(EmbeddedDocumentField(embedded_document_type=Comment))
    day = ReferenceField('DayTimetable')
示例#23
0
class BoardDocument(BaseDocument):
    """Доска на которой размещены списки с карточками.

    Доска может быть доступна для нескольких пользователей.

    :type title: str Заголовок доски;
    :type listsCards: list Набор списков карточек для конкретной доски;
    :type users: list Список пользователей имеющий доступ к доске;
    """
    __collection__ = "board"

    title = StringField(required=True)
    users = ListField(ReferenceField(UserDocument))

    def check_permission(self, document_user: UserDocument):
        """Проверка прав доступа к текущему документу у определенного пользователя."""
        return document_user._id in self.users
示例#24
0
class Account(BaseDocument):
    name = StringField(max_length=64)
    platform = StringField(max_length=32)
    account = StringField(max_length=32)
    password = StringField(max_length=128)
    access = JsonField()
    url = StringField(max_length=65535)
    parent = ReferenceField(reference_document_type='models.account.Account')
    adaptor = StringField(max_length=32)

    @property
    def children(self):
        return self.objects.find_all(parent=self._id)
示例#25
0
class CardDocument(BaseDocument):
    """Данные по карточке.

    :type message: str Текст сообщения карточки;
    :type position: int Порядковый номер позиции в списке карточек;
    """
    __collection__ = "card"
    __lazy__ = False

    message = StringField(required=True)
    position = IntField(required=True)
    listCards = ReferenceField(ListCardsDocument)

    async def check_permission(self, document_user: UserDocument):
        """Проверка прав доступа к текущему документу у определенного пользователя."""
        collection_list_cards = await ListCardsDocument().objects.filter({"_id": self.listCards._id}).find_all()
        if not collection_list_cards:
            return False
        document_list_cards = collection_list_cards[-1]
        return document_list_cards.check_permission(document_user)
示例#26
0
class ListCardsDocument(BaseDocument):
    """Список с карточками.

    :type title: str Заголовок списка;
    :type cards: list Набор карточек актуальных для списка;
    :type position: int Порядковый номер позиции в ряде списков;
    """
    __collection__ = "listCards"
    __lazy__ = False

    title = StringField(required=True)
    position = IntField(required=True)
    board = ReferenceField(BoardDocument)

    async def check_permission(self, document_user: UserDocument):
        """Проверка прав доступа к текущему документу у определенного пользователя."""
        collection_board = await BoardDocument().objects.filter({"_id": self.board._id}).find_all()
        if not collection_board:
            return False
        document_board = collection_board[-1]
        return document_board.check_permission(document_user)
示例#27
0
    def test_validate_enforces_strings(self):
        field = StringField(max_length=5)

        expect(field.validate(1)).to_be_false()
示例#28
0
 def test_can_create_query_operator(self):
     query = QueryOperator()
     expect(query).not_to_be_null()
     expect(query.get_value(StringField(), "some value")).to_equal("some value")
示例#29
0
    def test_validate_enforces_maxlength(self):
        field = StringField(max_length=5)

        expect(field.validate("-----")).to_be_true()
        expect(field.validate("-----" * 2)).to_be_false()
示例#30
0
 def test_is_empty(self):
     field = StringField()
     expect(field.is_empty(None)).to_be_true()
     expect(field.is_empty("")).to_be_true()
     expect(field.is_empty("123")).to_be_false()
class Comment(Document):
    title = StringField(required=True)
    text = StringField(required=True)
class Category(Document):
    __collection__ = 'categories'

    name = StringField(required=True)
    descr = StringField(required=True)
class EmbeddedDocument(Document):
    test = StringField(db_field="other", required=True)
    embedded2 = EmbeddedDocumentField(EmbeddedDocument2)