123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120 |
- import datetime
- from flask import g
- from mongoengine import (
- BooleanField,
- DateTimeField,
- Document,
- IntField,
- ListField,
- ReferenceField,
- StringField,
- )
- from ..._compat import as_unicode
- def get_user_id():
- try:
- return g.user.id
- except Exception:
- return None
- class Permission(Document):
- name = StringField(max_length=100, required=True, unique=True)
- def __unicode__(self):
- return self.name
- class ViewMenu(Document):
- name = StringField(max_length=100, required=True, unique=True)
- def __eq__(self, other):
- return (isinstance(other, self.__class__)) and (self.name == other.name)
- def __neq__(self, other):
- return self.name != other.name
- def __unicode__(self):
- return self.name
- class PermissionView(Document):
- permission = ReferenceField(Permission)
- view_menu = ReferenceField(ViewMenu)
- def __unicode__(self):
- return str(self.permission).replace("_", " ") + " on " + str(self.view_menu)
- def __repr__(self):
- return str(self.permission).replace("_", " ") + " on " + str(self.view_menu)
- class Role(Document):
- meta = {
- "allow_inheritance": True
- } # Added for role extension via mongoengine Document inheritance
- name = StringField(max_length=64, required=True, unique=True)
- permissions = ListField(ReferenceField(PermissionView))
- def __unicode__(self):
- return self.name
- def __repr__(self):
- return self.name
- class User(Document):
- meta = {
- "allow_inheritance": True
- } # Added for user extension via Mongoengine Document inheritance
- first_name = StringField(max_length=64, required=True)
- last_name = StringField(max_length=64, required=True)
- username = StringField(max_length=64, required=True, unique=True)
- password = StringField(max_length=256)
- active = BooleanField()
- email = StringField(max_length=320, required=True, unique=True)
- last_login = DateTimeField()
- login_count = IntField()
- fail_login_count = IntField()
- roles = ListField(ReferenceField(Role))
- created_on = DateTimeField(default=datetime.datetime.now)
- changed_on = DateTimeField(default=datetime.datetime.now)
- created_by = ReferenceField("self", default=get_user_id())
- changed_by = ReferenceField("self", default=get_user_id())
- @property
- def is_authenticated(self):
- return True
- @property
- def is_active(self):
- return self.active
- @property
- def is_anonymous(self):
- return False
- def get_id(self):
- return as_unicode(self.id)
- def get_full_name(self):
- return "{0} {1}".format(self.first_name, self.last_name)
- def __unicode__(self):
- return self.get_full_name()
- class RegisterUser(Document):
- first_name = StringField(max_length=64, required=True)
- last_name = StringField(max_length=64, required=True)
- username = StringField(max_length=64, required=True, unique=True)
- password = StringField(max_length=256)
- email = StringField(max_length=64, required=True)
- registration_date = DateTimeField(default=datetime.datetime.now)
- registration_hash = StringField(max_length=256)
|