Beispiel #1
0
class Reporter(mongoengine.Document):

    meta = {'collection': 'test_reporter'}
    id = mongoengine.StringField(primary_key=True)
    first_name = mongoengine.StringField(required=True)
    last_name = mongoengine.StringField(required=True)
    email = mongoengine.EmailField()
    awards = mongoengine.ListField(mongoengine.StringField())
    articles = mongoengine.ListField(mongoengine.ReferenceField(Article))
    embedded_articles = mongoengine.ListField(
        mongoengine.EmbeddedDocumentField(EmbeddedArticle))
    embedded_list_articles = mongoengine.EmbeddedDocumentListField(
        EmbeddedArticle)
    id = mongoengine.StringField(primary_key=True)
    first_name = mongoengine.StringField(required=True)
    last_name = mongoengine.StringField(required=True)
    email = mongoengine.EmailField()
    awards = mongoengine.ListField(mongoengine.StringField())
    articles = mongoengine.ListField(mongoengine.ReferenceField(Article))
    embedded_articles = mongoengine.ListField(
        mongoengine.EmbeddedDocumentField(EmbeddedArticle))
    embedded_list_articles = mongoengine.EmbeddedDocumentListField(
        EmbeddedArticle)
    generic_reference = mongoengine.GenericReferenceField(choices=[
        Article,
        Editor,
    ])
Beispiel #2
0
class Scheduling(mongoengine.Document):
    date = mongoengine.DateTimeField()
    location = mongoengine.StringField()
    theme = mongoengine.StringField()
    body = mongoengine.StringField()
    user = mongoengine.EmailField()
    created = mongoengine.DateTimeField()
    userUpdated = mongoengine.EmailField()
    updated = mongoengine.DateTimeField()
Beispiel #3
0
class User(mongo.DynamicDocument):

    first_name = mongo.StringField(required=True)
    last_name = mongo.StringField(required=True)
    display_name = mongo.StringField(required=True)
    verification_code = mongo.StringField(required=False)
    email = mongo.EmailField(required=True, unique=True)
    role = mongo.IntField(required=True, default=Role.USER)
    facebook_id = mongo.LongField(
        required=False)  # Facebook ID is numeric but can be pretty big
    twitter_id = mongo.StringField(
        required=False)  # Twitter ID is alphanumeric
    address = mongo.StringField(required=False)
    zip_code = mongo.StringField(required=False)
    country_code = mongo.StringField(min_length=2,
                                     max_length=2,
                                     required=False)  # follows ISO_3166-1
    tel = mongo.StringField(required=False)  # contact number

    @property
    def role_type(self):
        return Role.get_role_type(self.role)

    def role_satisfy(self, role):
        return self.role >= role
Beispiel #4
0
class User(mongoengine.Document):
    gender=(
        ('male','男'),
        ('female','女'),
    )
    '''
    这里的用户名指的是网络上注册的用户名,不要等同于现实中的真实姓名,所以采用了唯一机制。
    如果是现实中的人名,那是可以重复的,肯定是不能设置unique的。
    另外关于密码,建议至少128位长度,原因后面解释。
    '''

    #name: 必填,最长不超过128个字符,并且唯一,也就是不能有相同姓名
    name=mongoengine.StringField(max_length=128,unique=True)
    #password: 必填,最长不超过256个字符(实际可能不需要这么长)
    password=mongoengine.StringField(max_length=256)
    #email: 使用Django内置的邮箱类型,并且唯一
    email=mongoengine.EmailField(unique=True)
    #sex: 性别,使用了一个choice,只能选择男或者女,默认为男
    sex=mongoengine.StringField(max_length=32,choices=gender,default='男')
    c_time=mongoengine.DateTimeField(auto_now_add=True)

    #使用__str__方法帮助人性化显示对象信息
    def __str__(self):
        return self.name

    #元数据里定义用户按创建时间的反序排列,也就是最近的最先显示
    class Meta:
        ordering=['-c_time']
        verbose_name="用户"
        verbose_name_plural="用户"
Beispiel #5
0
class User(document.Document):
    meta = {'allow_inheritance': True}
    _hidden = ['password', 'completion_token']
    type = orm.StringField()

    name = orm.StringField(required=True)
    image = orm.URLField()
    email = orm.EmailField(required=True, unique=True)
    password = orm.StringField()

    gender = orm.StringField()
    phone = orm.StringField()

    complete = orm.BooleanField(default=True)
    completion_token = orm.StringField()

    # Different based on context of user - whether events attended, mentored, or organized
    checkins = orm.ListField(orm.ReferenceField(events.Event))
    events = orm.ListField(orm.ReferenceField(events.Event))

    shirt_type = orm.StringField()
    shirt_size = orm.StringField()

    dietary = orm.StringField()
    notes = orm.MapField(orm.StringField())

    stripe_id = orm.StringField()
Beispiel #6
0
class UserNotificationPolicy(me.Document):
    """A user's notification policy comprised of notification overrides."""

    owner = me.ReferenceField('Organization',
                              required=True,
                              reverse_delete_rule=me.CASCADE)
    email = me.EmailField(domain_whitelist=config.DOMAIN_VALIDATION_WHITELIST)
    user_id = me.StringField()

    overrides = me.EmbeddedDocumentListField(NotificationOverride)

    meta = {
        'collection':
        'notification_policies',
        'indexes': [
            {
                'fields': ['user_id', 'owner'],
                'sparse': False,
                'unique': True,
                'cls': False,
            },
        ],
    }

    @property
    def user(self):
        return User.objects(me.Q(id=self.user_id)
                            | me.Q(email=self.email)).first()

    def has_blocked(self, ntf):
        """Return True if self blocks the given notification."""
        return self.has_dismissed(ntf) or self.has_overriden(ntf)

    def has_overriden(self, ntf):
        """Return True if self includes an override that matches `ntf`."""
        for override in self.overrides:
            if override.blocks(ntf.channel.ctype, ntf.rtype, ntf.rid):
                return True
        return False

    def has_dismissed(self, ntf):
        """Return True if the given notification has been dismissed."""
        if not isinstance(ntf, InAppNotification):
            return False
        return self.user_id in ntf.dismissed_by

    def clean(self):
        if not (self.email or self.user_id):
            raise me.ValidationError('Neither a user ID nor email provided')

        # Get the user's id, if missing. Some notification policies may
        # belong to non-mist users (denoted by their e-mail).
        if not self.user_id:
            user = self.user
            self.user_id = user.id if user else None
        elif not self.email:
            self.email = self.user.email

    def __str__(self):
        return 'Notification Policy of User %s' % self.email
Beispiel #7
0
class PackDB(stormbase.StormFoundationDB, stormbase.UIDFieldMixin,
             me.DynamicDocument):
    """
    System entity which represents a pack.
    """

    RESOURCE_TYPE = ResourceType.PACK
    UID_FIELDS = ['ref']

    ref = me.StringField(required=True, unique=True)
    name = me.StringField(required=True, unique=True)
    description = me.StringField(required=True)
    keywords = me.ListField(field=me.StringField())
    version = me.StringField(regex=PACK_VERSION_REGEX, required=True)
    stackstorm_version = me.StringField(regex=ST2_VERSION_REGEX)
    author = me.StringField(required=True)
    email = me.EmailField()
    contributors = me.ListField(field=me.StringField())
    files = me.ListField(field=me.StringField())
    path = me.StringField(required=False)
    dependencies = me.ListField(field=me.StringField())
    system = me.DictField()

    meta = {
        'indexes': stormbase.UIDFieldMixin.get_indexes()
    }

    def __init__(self, *args, **values):
        super(PackDB, self).__init__(*args, **values)
        self.uid = self.get_uid()
Beispiel #8
0
class User(me.Document):
    meta = {'collection': 'users'}

    username = me.StringField(required=True)
    password = me.StringField(required=True)
    email = me.EmailField(required=True, unique=True)
    first_name = me.StringField(max_length=100, required=True)
    last_name = me.StringField(max_length=100)

    status = me.StringField(max_length=100, required=True, default="active")
#   roles = me.ListField(me.ReferenceField('Role'))

    registration_date = me.DateTimeField(
        required=True, default=datetime.datetime.now)
    updated_date = me.DateTimeField(
        required=True, default=datetime.datetime.now)

    ip_address = me.StringField(
        max_length=100, required=True, default='0.0.0.0')

    def hash_password(password):
        m = hashlib.sha512()
        m.update(password.encode('utf-8'))
        return m.hexdigest()

    def set_password(self, password):
        self.password = User.hash_password(password)

    def check_password(self, password):
        return hash_password(password) == self.password
Beispiel #9
0
class User(Dictable, gj.Document):
    """Test schema."""

    name = db.StringField()
    email = db.EmailField()
    address = db.EmbeddedDocumentListField(Address)
    metadata = db.DictField()

    @classmethod
    def generate_test_data(cls, additional_suffix=""):
        """Generate test data."""
        user = cls(
            id=ObjectId(),
            name=("Test man{}").format((
                " {}").format(additional_suffix) if additional_suffix else ""),
            email=("test{}@example.com").format(additional_suffix))
        user.address = [
            Address.generate_test_data(user, additional_suffix=counter)
            for counter in range(3)
        ]
        user.metadata = {("test{}").format(counter1):
                         {("test2_{}").format(counter2):
                          ("Test value {}").format(counter2)
                          for counter2 in range(3)}
                         for counter1 in range(5)}
        return user
class StudentUser(mongoengine.Document, UserMixin):
    meta = {'collection': 'students'}

    userID = mongoengine.StringField(required=True)

    # profile information -- server/users/students/forms.py
    #                     -- server/users/students/routes.py (createProfile)
    username = mongoengine.StringField(required=True)
    password = mongoengine.StringField(required=True)
    imageFile = mongoengine.ImageField()

    # contact information -- server/users/parents/forms.py
    #                     -- server/users/parents/routes.py (register)
    firstName = mongoengine.StringField(required=True)
    lastName = mongoengine.StringField(required=True)
    email = mongoengine.EmailField()

    # acquired from parents collection
    parent = mongoengine.ObjectIdField()

    def getResetToken(self, expiresSec=1800):
        s = Serializer(current_app.config['SECRET_KEY'], expiresSec)
        return s.dumps({'userID': self.userID}).decode('utf-8')

    @staticmethod
    def verifyResetToken(token):
        s = Serializer(current_app.config['SECRET_KEY'])
        try:
            userID = s.loads(token)['userID']
        except:
            return None
        return db.students.find_one({"userID": userID})

    def __repr__(self):
        return f"User('{self.username}', '{self.email}', '{self.imageFile}')"
Beispiel #11
0
class Admin(me.Document):
    login = me.StringField(min_length=6,
                           max_length=64,
                           required=True,
                           unique=True)
    password = me.StringField(min_length=8, max_length=128, required=True)
    email = me.EmailField()
Beispiel #12
0
class Blocked(db.EmbeddedDocument):
    user_reference = db.StringField()
    user_email = db.EmailField()
    created_at = db.ComplexDateTimeField(default=datetime.datetime.now)
    last_updated_at = db.ComplexDateTimeField(default=datetime.datetime.now)
    is_active = db.BooleanField(default=True)
    version = db.IntField(default=0)
Beispiel #13
0
class User(mongoengine.Document):
    email = mongoengine.EmailField(required=True, unique=True)
    password = mongoengine.StringField(required=True)
    api_key = mongoengine.StringField()
    devices = mongoengine.ListField(mongoengine.ReferenceField(GPSDevice))

    @classmethod
    def check_api_key(self, api_key):
        try:
            return User.objects.get(api_key=api_key)
        except User.DoesNotExist:
            return None

    def save(self, *args, **kwargs):
        if not self.id and self.password:
            self.password = bcrypt.hashpw(self.password, salt=bcrypt.gensalt())
        if not self.api_key:
            self.api_key = hashlib.sha1(str(random.random())).hexdigest()
        super(User, self).save(*args, **kwargs)

    def check_password(self, password_to_check):
        return bcrypt.checkpw(hashed_password=self.password,
                              password=password_to_check)

    def set_password(self, password):
        if not self.id:
            raise Exception(
                'user.set_password() can only be called after user has been saved'
            )
        self.password = bcrypt.hashpw(password, salt=bcrypt.gensalt())

    def __str__(self):
        return self.email
Beispiel #14
0
class User(me.Document):
    meta = {'collection': 'users'}

    username = me.StringField(required=True, unique=True)
    password = me.StringField()
    email = me.EmailField(required=True, unique=True)
    first_name = me.StringField(max_length=100, required=True)
    last_name = me.StringField(max_length=100)
    status = me.StringField(max_length=100, required=True, default="active")

    registration_date = me.DateTimeField(required=True,
                                         default=datetime.datetime.now)
    updated_date = me.DateTimeField(required=True,
                                    default=datetime.datetime.now)

    ip_address = me.StringField(max_length=100,
                                required=True,
                                default='0.0.0.0')

    roles = me.ListField(me.ReferenceField('Role'))

    def set_password(self, password):
        from pyramid.threadlocal import get_current_request
        request = get_current_request()
        self.password = request.secret_manager.get_hash_password(password)
Beispiel #15
0
class User(models.Document):  # 用户模型(普通,管理员)
    card_id = models.StringField(max_length=20, required=False)  # 工号
    username = models.StringField(max_length=20, required=False)  # 用户名
    password = models.StringField(required=True)   # 登录密码
    age = models.IntField(required=False)  # 年龄
    sex = models.IntField(choices=enums.SEX_LIST, required=False)  # 性别
    department = models.StringField(max_length=30, required=False)  # 部门
    position = models.StringField(max_length=30, required=False)  # 职位
    mobile = models.StringField(required=False)  # 手机
    emergency_contact = models.StringField(required=False)  # 紧急联系人
    create_time = models.DateTimeField(default=datetime.datetime.now)  # 创建时间
    email = models.EmailField()  # email
    custom_attr = models.DictField()  # 用户其他信息
    perm = models.StringField(choices=enums.ADMIN_USER_PERMISSION_LIST, required=False)  # 权限
    # 1,False | 2,True default=enums.NORMAL
    status = models.IntField(choices=enums.USER_STATUS_LIST, default=enums.USER_STATUS_CHECK, required=True)  # 性别

    # 每一条数据都会有一个独一无二的id
    @property
    def oid(self):
        return str(self.id)

    meta = {
        "indexes": ["card_id", "username"]
    }
Beispiel #16
0
class User(mongoengine.Document):
    name = mongoengine.StringField(required=True, unique=True, max_length=50)
    email = mongoengine.EmailField(required=True, unique=True, max_length=50)
    password = mongoengine.StringField(required=True)
    joined_on = mongoengine.DateTimeField(default=datetime.datetime.utcnow)

    ## define collection name
    meta = {'collection': 'users'}

    def __repr__(self):
        return 'Im {0} and my email is {1}'.format(self.name, self.email)

    ''' check if a password matches with this objects hashed password '''

    def is_hash_match(self, password):
        return check_password_hash(self.password, password)

    ''' check if name is used '''

    def name_used(self):
        matches = self.objects(name=self.name)
        return len(matches) > 0

    ''' check if email is used '''

    def email_used(self):
        matches = self.objects(email=self.email)
        return len(matches) > 0
Beispiel #17
0
class User(UserMixin, db.Document):
	meta = {'collection': 'users'}
	email = db.EmailField(unique=True)
	confirmed = db.BooleanField(default=False)
	username = db.StringField(max_length=100, required=True, unique=True)
	pwhash = db.StringField(max_length=128, required=True)
	role_id = db.ObjectIdField()

	def set_password(self, password):
		self.pwhash = generate_password_hash(password)

	def verify_password(self, password):
		return check_password_hash(self.pwhash, password)

	def generate_confirmation_token(self, expiration=3600):
		s = Serializer(current_app.config['SECRET_KEY'], expiration)
		return s.dumps({'confirm': self.get_id()}).decode('utf-8')

	def confirm(self, token):
		s = Serializer(current_app['SECRET_KEY'])
		try:
			data = s.loads(token.encode('utf-8'))
		except:
			return False
		if data.get('confirm') != self.get_id():
			return False
		self.confirmed = True
		self.save()
		return True
Beispiel #18
0
class Otp(mongoengine.Document):
    mobile = mongoengine.StringField()
    login_otp = mongoengine.StringField()
    signup_otp = mongoengine.StringField()
    name = mongoengine.StringField()
    email = mongoengine.EmailField()
    hashed_password = mongoengine.StringField()
Beispiel #19
0
class Users(db.Document):
    username = db.StringField(max_length=50, required=True, unique=True)
    password = db.StringField(max_length=128, required=True)
    salt = db.StringField(default=Random.create(20),
                          max_length=20,
                          required=True)

    role = db.StringField(max_length=20,
                          required=True,
                          default="user",
                          choices=ROLE_OPTIONS)
    email = db.EmailField(required=True)

    meta = {
        'ordering': ['-username'],
    }

    @property
    def is_authenticated(self):
        return True

    @property
    def is_active(self):
        return True

    @property
    def is_anonymous(self):
        return False

    def get_id(self):
        return self.username
Beispiel #20
0
class OrganizationDTO(mongo.Document):
    """A DTO wrapper for Organization documents."""

    name = mongo.StringField(db_field='n')
    address = mongo.StringField(db_field='a')
    latlng = mongo.ListField(db_field='l')
    types = mongo.ListField(mongo.IntField(), db_field='ts')
    phone_numbers = mongo.ListField(db_field='ns')
    email_key = mongo.EmailField(db_field='ek')
    emails = mongo.ListField(db_field='es')
    contacts = mongo.ListField(mongo.ReferenceField(ContactDTO), db_field='cs')
    user_contacts = mongo.ListField(mongo.ReferenceField('UserDTO'),
                                    db_field='us')
    organization_url = mongo.StringField(db_field='u')
    partners = mongo.ListField(mongo.ReferenceField('self'), db_field='ps')
    facebook = mongo.URLField(db_field='f')
    twitter = mongo.URLField(db_field='t')
    keywords = mongo.StringField(db_field='ks')
    valid = mongo.BooleanField(db_field='v', default=True)
    last_updated = mongo.DateTimeField(db_field='lu')
    updated_by = mongo.ObjectIdField(db_field='ub')
    page_rank_info = mongo.EmbeddedDocumentField(document_type=PageRankInfoDTO,
                                                 db_field='r')
    page_rank = mongo.LongField(min_value=0, db_field='pr')
    page_rank_weight = mongo.FloatField(min_value=0.0,
                                        max_value=1.0,
                                        db_field='w')
    content_weight = mongo.FloatField(min_value=0.0, db_field='c')
    combined_weight = mongo.FloatField(min_value=0.0, db_field='cw')
Beispiel #21
0
class ParentUser(mongoengine.Document, UserMixin):
    meta = {'collection': 'parents'}

    firstName = mongoengine.StringField(required=True)
    lastName = mongoengine.StringField(required=True)

    email = mongoengine.EmailField()
    phone = mongoengine.StringField(required=True)

    students = mongoengine.ListField(mongoengine.ReferenceField(StudentUser))

    def resetToken(self, expireSec=1800):
        s = Serializer(current_app.config['SECRET-KEY'], expireSec)
        return s.dumps({"email": self.email}).decode('utf-8')

    @staticmethod
    def resetResetToken(token):
        s = Serializer(current_app.config['SECRET-KEY'])
        try:
            email = s.loads(token)['email']
        except:
            return None
        return db.parents.find_one({"email": email})

    def __repr__(self):
        return f"Parent('{self.firstName}','{self.lastName}','{self.email}')"
Beispiel #22
0
class Customer(mongoengine.Document):
    name = mongoengine.StringField()
    email = mongoengine.EmailField()
    hashed_password = mongoengine.StringField()
    mobile = mongoengine.StringField()
    login_otp = mongoengine.StringField()
    wallet_bal = mongoengine.DecimalField(default=0.0)
    trans_history = mongoengine.ListField(mongoengine.ObjectIdField())
Beispiel #23
0
class User(me.Document):
    name = me.StringField(required=True, max_length=100)
    lastname = me.StringField(required=True, max_length=100)
    password = me.StringField(required=True, min_length=8, max_length=256)
    email = me.EmailField(required=True, unique=True, max_length=256)
    is_admin = me.BooleanField(required=True, default=False)
    #Metadata
    meta = {'collection': 'user'}
Beispiel #24
0
class User(mongoengine.Document):
    name = mongoengine.StringField(required=True, max_length=50)
    position = mongoengine.StringField(required=True)
    extension = mongoengine.IntField()
    telephone = mongoengine.ListField()
    email = mongoengine.EmailField()
    department = mongoengine.StringField(max_length=20)
    company = mongoengine.StringField(max_length=20)
Beispiel #25
0
class User(mongoengine.Document):
    email = mongoengine.EmailField(required=True, unique=True)
    username = mongoengine.StringField(required=True,
                                       unique=True,
                                       max_length=35)
    password_hash = mongoengine.StringField(required=True)
    is_owner = mongoengine.BooleanField()
    owned_robot = mongoengine.StringField(required=False)
class EmergencyContacts(mongoengine.EmbeddedDocument):
    firstName = mongoengine.StringField(required=True)
    lastName = mongoengine.StringField(required=True)
    relationToStudent = mongoengine.StringField(required=True)

    # contact info
    phoneNumber = mongoengine.StringField(required=True)
    email = mongoengine.EmailField(required=True)
Beispiel #27
0
class User(db.Document):
    user_id = db.IntField(unique=True)
    name = db.StringField()
    phone = db.StringField(unique=True)
    email = db.EmailField()
    city = db.StringField()
    address = db.StringField()
    created = db.DateTimeField()
Beispiel #28
0
class User(mong.Document):
    email = mong.EmailField()
    username = mong.StringField()
    password = mong.StringField()

    meta = {
        'strict': False,
    }
Beispiel #29
0
class User(mongoengine.Document, UserMixin):
    email = mongoengine.EmailField(required=True)
    passwordHash = mongoengine.StringField(required=True)

    def checkPassword(self, password):
        return check_password_hash(self.passwordHash, password)

    def setPassword(self, password):
        self.passwordHash = generate_password_hash(password)
Beispiel #30
0
class User(me.Document):
    join_date = me.DateTimeField(required=True, default=datetime.now())
    username = me.StringField(required=True, unique=True)
    email = me.EmailField(required=True, unique=True)
    password = me.StringField(required=True)
    location = me.StringField(required=False)
    role = me.StringField(required=True, default="User")
    active = me.BooleanField(required=True, default=True)
    real_name = me.StringField(required=True)