Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- import hmac
- from _sha1 import sha1
- from uuid import uuid4
- from mongoengine import *
- class HistoryDocumentProcessor(object):
- def __init__(self, values):
- pass
- def update_history_doc(self):
- if self.history is None:
- self.history = HistoryDocument()
- self.history.date_edit = datetime.datetime.utcnow()
- self.history.save()
- def modify(self, query={}, **update):
- self.update_history_doc()
- return super(self.__class__, self).modify(query, **update)
- def save(self, *args, **kwargs):
- self.update_history_doc()
- return super(self.__class__, self).save(*args, **kwargs)
- class HistoryDocument(Document):
- """ Base class for all classes """
- date_create = DateTimeField(default=datetime.datetime.utcnow, required=True)
- date_edit = DateTimeField(default=datetime.datetime.utcnow, required=True)
- date_delete = DateTimeField(default=datetime.datetime.utcnow, required=True)
- reason_delete = StringField(default='')
- valid = BooleanField(default=False)
- meta = {'allow_inheritance': True}
- class Role(Document):
- name = StringField(required=True, unique=True)
- description = StringField()
- history = ReferenceField(HistoryDocument)
- class Group(Document):
- name = StringField()
- description = StringField()
- history = ReferenceField(HistoryDocument)
- class Company(Document):
- name = StringField(required=True)
- address = StringField()
- description = StringField()
- history = ReferenceField(HistoryDocument)
- """ реквезиты """
- ur_name = StringField()
- ur_address = StringField()
- inn = StringField()
- kpp = StringField()
- name_of_bank = StringField()
- bik = StringField()
- payment_account = StringField()
- korr_account = StringField()
- ogrn = StringField()
- class User(Document):
- """ Base class for users """
- username = StringField(max_length=50, required=True, unique=True)
- password = StringField(max_length=50, min_length=8, required=True)
- company = ReferenceField(Company, required=True)
- role = ReferenceField(Role)
- group = ReferenceField(Group)
- history = ReferenceField(HistoryDocument)
- class Standards(Document):
- name = StringField()
- author = ReferenceField(User)
- reason = StringField()
- category = ReferenceField(Group)
- status = StringField()
- tags = ListField()
- description = StringField()
- text = StringField()
- history = ReferenceField(HistoryDocument)
- class ApiKey(Document):
- """
- Object used for storing tokens. When user creates
- """
- user = ReferenceField(User, required=True)
- key = StringField(max_length=128)
- created = DateTimeField(default=datetime.datetime.utcnow)
- def __unicode__(self):
- return u"%s for %s" % (self.key, self.user)
- def save(self, *args, **kwargs):
- if not self.key:
- self.key = self.generate_key()
- return super(ApiKey, self).save(*args, **kwargs)
- @staticmethod
- def generate_key():
- # Get a random UUID.
- new_uuid = uuid4()
- # Hmac that beast.
- return hmac.new(new_uuid.bytes, digestmod=sha1).hexdigest()
- meta = {'allow_inheritance': True}
- class RPKey(ApiKey):
- """
- Keys(tokens) used for password reset
- """
- def save(self, *args, **kwargs):
- self.key = self.generate_key()
- self.created = datetime.datetime.utcnow()
- return super(ApiKey, self).save(*args, **kwargs)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement