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)
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)
Example #3
0
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)
Example #4
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)
Example #5
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())
Example #6
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()
Example #7
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
 def test_from_son(self):
     field = BooleanField()
     expect(field.from_son(1)).to_equal(True)
     expect(field.from_son(0)).to_equal(False)
    def test_to_son(self):
        field = BooleanField()

        expect(field.to_son(True)).to_equal(1)
        expect(field.to_son(False)).to_equal(0)
Example #10
0
 def test_create_bool_field(self):
     field = BooleanField(db_field="test")
     expect(field.db_field).to_equal("test")
Example #11
0
class NotifyMedia(BaseDocument):
    name = StringField()
    code = StringField()
    disabled = BooleanField(default=False)