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)
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)
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)
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())
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()
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)
def test_create_bool_field(self): field = BooleanField(db_field="test") expect(field.db_field).to_equal("test")
class NotifyMedia(BaseDocument): name = StringField() code = StringField() disabled = BooleanField(default=False)