models.py 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. # -*- coding: utf-8 -*-
  2. # !/usr/bin/env python
  3. from mongoengine import DynamicDocument, StringField, IntField, BooleanField, DoesNotExist
  4. class ArchivedDatabaseConfig(DynamicDocument):
  5. alias = StringField(verbose_name = "连接别名", required = True, unique = True)
  6. name = StringField(verbose_name = "数据库名称", required = True)
  7. host = StringField(verbose_name = "连接IP", required = True)
  8. port = IntField(verbose_name = "端口", default = 27017)
  9. username = StringField(verbose_name = "用户名", default = "admin")
  10. password = StringField(verbose_name = "密码", required = True)
  11. authentication_source = StringField(verbose_name = "认证数据库名称", default = "admin")
  12. active = BooleanField(verbose_name = "是否启用该数据库连接", default = True)
  13. meta = {
  14. "collection": "ArchivedDatabaseConfig",
  15. "db_alias": "default"
  16. }
  17. @classmethod
  18. def get_all_connection(cls):
  19. connInfo = cls.objects.filter(active = True)
  20. return map(lambda x: x.to_dict(), connInfo)
  21. def to_dict(self):
  22. return {
  23. "alias": self.alias,
  24. "name": self.name,
  25. "host": self.host,
  26. "port": self.port,
  27. "username": self.username,
  28. "password": self.password,
  29. "authentication_source": self.authentication_source
  30. }
  31. class ArchivedModelProxyConfig(DynamicDocument):
  32. model = StringField(verbose_name = u'ORM名称', required = True)
  33. startDay = StringField(verbose_name = u'热点数据开始日期', required = True)
  34. meta = {
  35. "collection": "ArchivedModelProxyConfig",
  36. "db_alias": "default"
  37. }
  38. @classmethod
  39. def get_model_hot_data_start_day(cls, model_name):
  40. try:
  41. item = cls.objects.get(model = model_name)
  42. return item.startDay
  43. except DoesNotExist as e:
  44. # 默认 的现网数据库数据保存的月数
  45. if model_name == 'default':
  46. return '2017-07-01'
  47. else:
  48. return cls.get_model_hot_data_start_day('default')