models.py 2.4 KB

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