Advertisement
Guest User

Untitled

a guest
Jan 17th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.42 KB | None | 0 0
  1. import datetime
  2. import hmac
  3. from _sha1 import sha1
  4. from uuid import uuid4
  5.  
  6. from mongoengine import *
  7.  
  8.  
  9. class HistoryDocumentProcessor(object):
  10. def __init__(self, values):
  11. pass
  12.  
  13. def update_history_doc(self):
  14. if self.history is None:
  15. self.history = HistoryDocument()
  16. self.history.date_edit = datetime.datetime.utcnow()
  17. self.history.save()
  18.  
  19. def modify(self, query={}, **update):
  20. self.update_history_doc()
  21. return super(self.__class__, self).modify(query, **update)
  22.  
  23. def save(self, *args, **kwargs):
  24. self.update_history_doc()
  25. return super(self.__class__, self).save(*args, **kwargs)
  26.  
  27.  
  28. class HistoryDocument(Document):
  29. """ Base class for all classes """
  30. date_create = DateTimeField(default=datetime.datetime.utcnow, required=True)
  31. date_edit = DateTimeField(default=datetime.datetime.utcnow, required=True)
  32. date_delete = DateTimeField(default=datetime.datetime.utcnow, required=True)
  33. reason_delete = StringField(default='')
  34. valid = BooleanField(default=False)
  35. meta = {'allow_inheritance': True}
  36.  
  37.  
  38. class Role(Document):
  39. name = StringField(required=True, unique=True)
  40. description = StringField()
  41. history = ReferenceField(HistoryDocument)
  42.  
  43.  
  44. class Group(Document):
  45. name = StringField()
  46. description = StringField()
  47. history = ReferenceField(HistoryDocument)
  48.  
  49.  
  50. class Company(Document):
  51. name = StringField(required=True)
  52. address = StringField()
  53. description = StringField()
  54. history = ReferenceField(HistoryDocument)
  55. """ реквезиты """
  56. ur_name = StringField()
  57. ur_address = StringField()
  58. inn = StringField()
  59. kpp = StringField()
  60. name_of_bank = StringField()
  61. bik = StringField()
  62. payment_account = StringField()
  63. korr_account = StringField()
  64. ogrn = StringField()
  65.  
  66.  
  67. class User(Document):
  68. """ Base class for users """
  69. username = StringField(max_length=50, required=True, unique=True)
  70. password = StringField(max_length=50, min_length=8, required=True)
  71. company = ReferenceField(Company, required=True)
  72. role = ReferenceField(Role)
  73. group = ReferenceField(Group)
  74. history = ReferenceField(HistoryDocument)
  75.  
  76.  
  77. class Standards(Document):
  78. name = StringField()
  79. author = ReferenceField(User)
  80. reason = StringField()
  81. category = ReferenceField(Group)
  82. status = StringField()
  83. tags = ListField()
  84. description = StringField()
  85. text = StringField()
  86. history = ReferenceField(HistoryDocument)
  87.  
  88.  
  89. class ApiKey(Document):
  90. """
  91. Object used for storing tokens. When user creates
  92. """
  93.  
  94. user = ReferenceField(User, required=True)
  95. key = StringField(max_length=128)
  96. created = DateTimeField(default=datetime.datetime.utcnow)
  97.  
  98. def __unicode__(self):
  99. return u"%s for %s" % (self.key, self.user)
  100.  
  101. def save(self, *args, **kwargs):
  102. if not self.key:
  103. self.key = self.generate_key()
  104.  
  105. return super(ApiKey, self).save(*args, **kwargs)
  106.  
  107. @staticmethod
  108. def generate_key():
  109. # Get a random UUID.
  110. new_uuid = uuid4()
  111. # Hmac that beast.
  112. return hmac.new(new_uuid.bytes, digestmod=sha1).hexdigest()
  113.  
  114. meta = {'allow_inheritance': True}
  115.  
  116.  
  117. class RPKey(ApiKey):
  118. """
  119. Keys(tokens) used for password reset
  120. """
  121.  
  122. def save(self, *args, **kwargs):
  123. self.key = self.generate_key()
  124. self.created = datetime.datetime.utcnow()
  125. return super(ApiKey, self).save(*args, **kwargs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement