Beispiel #1
0
class User(BaseDocument):
    name = db.StringField(verbose_name=u'name', max_length=100)

    email = db.EmailField(verbose_name=u'email',
                          max_length=100,
                          required=True,
                          unique=True)

    pw_hash = db.StringField(verbose_name=u'Password Hash',
                             max_length=100,
                             required=True)

    is_superuser = db.BooleanField(verbose_name=u'Is Superuser', default=False)

    meta = {'indexes': ['email']}

    def __unicode__(self):
        return self.name

    def __init__(self, *args, **kwargs):
        password = kwargs.pop('password', None)
        super(User, self).__init__(*args, **kwargs)
        if password:
            self.set_password(password)

    def set_password(self, password):
        self.pw_hash = generate_password_hash(
            password,
            method=current_app.config['PROJECT_PASSWORD_HASH_METHOD'])

    def check_password(self, password):
        return check_password_hash(self.pw_hash, password)
Beispiel #2
0
class User(db.Document):
    user_id     =   db.IntField(unique=True)
    first_name  =   db.StringField(max_length=20)
    last_name   =   db.StringField(max_length=20)
    email       =   db.EmailField(max_length=30, unique=True)
    birthday    =   db.DateField()
    gender      =   db.StringField()
    address     =   db.StringField()
    suburb      =   db.StringField()
    postcode    =   db.IntField(length=4)
    description =   db.StringField(max_length = 200)
    password    =   db.StringField(max_length=20)
    available   =   db.BooleanField(default=True)
    token       =   db.StringField()
    contacts    =   db.ListField(Contact)
    # profile_pic =   
    
    def set_password(self, password):
        self.password = generate_password_hash(password)

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

    def assign_token(self, id):
        secret = 'YUWA'
        token = str(jwt.encode({'id': id}, secret, algorithm='HS256'))
        self.token = token
        db.Users.update(
            {"_id": id}, 
            {$set: {"token": token}}
        )
        return token

    def invalidate_token(self, token):
        self.token = ""
Beispiel #3
0
class User(db.Document):
    username = db.StringField(db_field="u", required=True)
    password = db.StringField(db_field="p", required=True)
    email = db.EmailField(db_field="e", required=True)
    firstname = db.StringField(db_field="fn", max_length=50)
    lastname = db.StringField(db_field="ln", max_length=50)
    created = db.IntField(db_field="c", default=now())
class User(db.Document):
    username = db.StringField(db_field="u", required=True, unique=True)
    password = db.StringField(db_field="p", required=True)
    email = db.EmailField(db_field="e", required=True, unique=True)
    first_name = db.StringField(db_field="fn", max_length=50)
    last_name = db.StringField(db_field="ln", max_length=50)
    created = db.IntField(db_field="c", default=now())
    bio = db.StringField(db_field="b", max_length=160)
    email_confirmed = db.BooleanField(db_field="ecf", default=False)
    change_configuration = db.DictField(db_field="cc")
    profile_image = db.StringField(db_field="i", default=None)

    # Make username and email all lowercase
    # This method is called before object is written to the database
    @classmethod
    # Do any manipulations you need to do within pre_save
    def pre_save(cls, sender, document, **kwargs):
        document.username = document.username.lower()
        document.email = document.email.lower()

    def profile_imgsrc(self, size):
        # return os.path.join(IMAGE_URL, "user", "%s.%s.%s.png" % (self.id,
        #                     self.profile_image, size))
        return os.path.join(
            IMAGE_URL, "user",
            "{0}.{1}.{2}.png".format(self.id, self.profile_image, size))

    # Add indexes
    meta = {
        "indexes": ["username", "email", "-created"]
        # -created means sort order reversed to get most recent members
    }
Beispiel #5
0
class User(db.Document):
    username = db.StringField(db_field="u", required=True, unique=True)
    password = db.StringField(db_field="p", required=True)
    email = db.EmailField(db_field="e", required=True, unique=True)
    first_name = db.StringField(db_field="fn", max_length=50)
    last_name = db.StringField(db_field="ln", max_length=50)
    created = db.IntField(db_field="c", default=now())
    bio = db.StringField(db_field="b", max_length=160)
    email_confirmed = db.BooleanField(db_field="ecf", default=False)
    change_configuration = db.DictField(db_field="cc")
    profile_image = db.StringField(db_field="i", default=None)

    @classmethod
    def pre_save(cls, sender, document, **kwargs):
        document.username = document.username.lower()
        document.email = document.email.lower()

    def profile_imgsrc(self, size):
        if self.profile_image:
            if AWS_BUCKET:
                return os.path.join(AWS_CONTENT_URL, AWS_BUCKET, 'user',
                                    '%s.%s.%s.png' % (self.id, self.profile_image, size))
            else:
                return url_for('static', filename=os.path.join(STATIC_IMAGE_URL, 'user',
                                                               '%s.%s.%s.png' % (self.id, self.profile_image, size)))
        else:
            return url_for('static', filename=os.path.join(STATIC_IMAGE_URL, 'user', 'no-profile.%s.png' % (size)))

    meta = {
        'indexes': ['username', 'email', '-created']
    }
Beispiel #6
0
class User(db.Document): #create object for Mongo
    username=db.StringField(db_field="u", required = True, unique = True) #dbfield name in Mongo: single letter to save space
    password=db.StringField(db_field="p", required = True)
    email=db.EmailField(db_field="e", required = True, unique = True)
    first_name=db.StringField(db_field="fn", max_length=50)
    last_name=db.StringField(db_field="ln", max_length=50)
    created=db.IntField(db_field="c", default=now())
    bio=db.StringField(db_field="b", max_length=200)
    email_confirmed=db.BooleanField(db_field="ec", default=False)
    change_configuration=db.DictField(db_field="cc")
    profile_image = db.StringField(db_field="i", default=None)
    
    @classmethod  #for pre_save
    def pre_save(cls, sender, document, **kwargs): #always called before database save
        document.username = document.username.lower()
        document.email = document.email.lower()
        
    def profile_imgsrc(self, size):
        if self.profile_image:
            if AWS_BUCKET:
                return os.path.join(AWS_CONTENT_URL, AWS_BUCKET, 'user', '%s.%s.%s.png' % (self.id, self.profile_image, size))
            else:
                return url_for('static', filename=os.path.join(STATIC_IMAGE_URL, 'user', '%s.%s.%s.png' % (self.id, self.profile_image, size)))
        else:
            return url_for('static', filename=os.path.join(STATIC_IMAGE_URL, 'user', 'no-profile.%s.png' % (size)))
    meta = {
        'indexes': ['username', 'email', '-created'] #create indices to sort the data
    }
Beispiel #7
0
class User(db.Document):
    username = db.StringField(db_field="u", required=True)
    password = db.StringField(db_field="p", required=True)
    email = db.EmailField(db_field="e", required=True, unique=True)
    created = db.IntField(db_field="c", default=now())
    userIntId = db.IntField(db_field="rI", default=now())
    meta = {'indexes': ['username', 'email', '-created']}
Beispiel #8
0
class User(db.Document):
    email = db.EmailField(required=True, unique=True)
    alias = db.StringField(required=True, unique=True)
    password = db.StringField(min_length=8, required=True)
    emailVerified = db.BooleanField(default=False)
    lastLogin = db.DateTimeField()
    allowTracking = db.BooleanField(default=False)
    isMod = db.BooleanField(default=False)
Beispiel #9
0
class User(db.Document):
    username = db.StringField(db_field="u", required=True, unique=True)
    password = db.StringField(db_field="p", required=True)
    email = db.EmailField(db_field="e", required=True, unique=True)
    first_name = db.StringField(db_field="fn", max_length=50)
    last_name = db.StringField(db_field="ln", max_length=50)
    created = db.IntField(db_field="c", default=now())
    bio = db.StringField(db_field="b", max_length=160)

    meta = {'indexes': ['username', 'email', '-created']}
Beispiel #10
0
class Company(db.Document):
    company_id = db.IntField( unique=True )
    fc_id = db.IntField()
    company_name = db.StringField( max_lenght=50 )
    email = db.EmailField( max_lenght=30, unique=True )
    password = db.StringField()
    
    def set_password(self, password):
        self.password = generate_password_hash(password)
        
    def get_password(self, password):
        return check_password_hash(self.password, password)        
Beispiel #11
0
class User(BaseDocument):

    username = db.StringField(verbose_name=u'login',
                              max_length=30,
                              required=True,
                              unique=True)

    name = db.StringField(verbose_name=u'nome', max_length=100)

    email = db.EmailField(verbose_name=u'e-mail',
                          max_length=100,
                          required=True,
                          unique=True)

    pw_hash = db.StringField(verbose_name=u'senha',
                             max_length=100,
                             required=True)

    is_active = db.BooleanField(verbose_name=u'ativo',
                                default=True,
                                required=True)

    is_superuser = db.BooleanField(verbose_name=u'super usuário',
                                   default=False,
                                   required=True)

    last_login = db.DateTimeField(verbose_name=u'último login', required=False)

    meta = {'indexes': ['username', 'email']}

    def __unicode__(self):
        return self.username

    def __init__(self, *args, **kwargs):
        password = kwargs.pop('password', None)
        super(User, self).__init__(*args, **kwargs)
        if password:
            self.set_password(password)

    def set_password(self, password):
        self.pw_hash = generate_password_hash(
            password,
            method=current_app.config['PROJECT_PASSWORD_HASH_METHOD'])

    def check_password(self, password):
        return check_password_hash(self.pw_hash, password)

    def refresh_last_login(self):
        self.last_login = datetime.now()
        self.save()
Beispiel #12
0
class User(db.Document):
    username = db.StringField(db_field='u', unique=True)
    password = db.StringField(db_field='pwd')
    email = db.EmailField(db_field='em', required=True, unique=True)
    first_name = db.StringField(db_field="fn", max_length=50, default=None)
    last_name = db.StringField(db_field="ln", max_length=50, default=None)
    created = db.IntField(db_field='c', default=now())
    email_confirmed = db.BooleanField(db_field="ecf", default=False)
    change_configuration = db.DictField(db_field="cc")
    profile_image = db.StringField(db_field="i", default=None)
    facebook_link = db.StringField(db_field="fb")
    tel = db.StringField(db_field="tl")
    provider = db.StringField(db_field="pv", default='local')

    @classmethod
    def pre_save(cls, sender, document, **kwargs):  #don't understand
        if document.username:
            document.username = document.username.lower()
        document.email = document.email.lower()

    def user_imgsrc(self, size):
        if self.profile_image:
            if AWS_BUCKET:
                return os.path.join(
                    AWS_CONTENT_URL, AWS_BUCKET, 'user',
                    '%s.%s.%s.png' % (self.id, self.profile_image, size))
            else:
                return url_for(
                    'static',
                    filename=os.path.join(
                        STATIC_IMAGE_URL, 'user', '%s.%s.%s.jpg' %
                        (self.id, self.profile_image, size))).replace(
                            "%5C", "/")
        else:
            return url_for('static',
                           filename=os.path.join(
                               'assets', 'default_image',
                               'default-profile.png')).replace('%5C', '/')

    #Class method to add Notification delete old one
    def add_notification(self, name, data):
        Notification.objects.filter(name=name, user_id=self.id).delete()
        n = Notification(name=name,
                         payload_json=json.dumps(data),
                         user_id=self.id)
        n.save()
        return n

    meta = {'indexes': ['username', 'email', '-created']}
Beispiel #13
0
class User(db.Document):
    username = db.StringField(db_field='u', required=True, unique=True)
    password = db.StringField(db_field='p', required=True)
    email = db.EmailField(db_field='e', required=True, unique=True)
    first_name = db.StringField(db_field='fn', max_length=50)
    last_name = db.StringField(db_field='ln', max_length=50)
    created = db.IntField(db_field='c', default=now())
    bio = db.StringField(db_field='b', max_length=160)

    @classmethod
    def pre_save(cls, sender, document, **kwargs):
        document.username = document.username.lower()
        document.email = document.email.lower()

    meta = {'indexes': ['username', 'email', '-created']}
Beispiel #14
0
class User(db.Document):
    username = db.StringField(db_field='u', required=True)
    password = db.StringField(db_field='p', required=True)
    email = db.EmailField(db_field='e', required=True)
    first_name = db.StringField(db_field='fn', max_length=20)
    last_name = db.StringField(db_field='ln', max_length=20)
    created = db.IntField(db_field='cr', default=now())
    bio = db.StringField(db_field='b', max_length=160)

#   @classmethod # decorator used to save the credentials in lowercase
#  def pre_save(cls, sender, document, **kwargs):
#     document.username = document.username.lower()
#    email.username = email.username.lower()


# signals.pre_save.connect(User.pre_save, sender = User)
Beispiel #15
0
class User(db.Document):
    username = db.StringField(db_field="u", required=True, unique=True)
    password = db.StringField(db_field="p", required=True)
    email = db.EmailField(db_field="e", required=True, unique=True)
    first_name = db.StringField(db_field="fn", max_length=50)
    last_name = db.StringField(db_field="ln", max_length=50)
    created = db.IntField(db_field="c", default=now())
    bio = db.StringField(db_field="b", max_length=160)
    email_confirmed = db.BooleanField(db_field="ecf", default=False)
    change_configuration = db.DictField(db_field="cc")

    @classmethod
    def pre_save(cls, sender, document, **kwargs):
        document.username = document.username.lower()
        document.email = document.email.lower()

    meta = {'indexes': ['username', 'email', '-created']}
Beispiel #16
0
class User(db.Document):
    username = db.StringField(db_field=DBFields.username.value,
                              required=True,
                              unique=True)
    password = db.StringField(db_field=DBFields.password.value, required=True)
    email = db.EmailField(db_field=DBFields.email.value,
                          required=True,
                          unique=True)
    first_name = db.StringField(db_field=DBFields.first_name.value,
                                max_length=75)
    last_name = db.StringField(db_field=DBFields.last_name.value,
                               max_length=50)
    created = db.IntField(db_field=DBFields.created.value,
                          default=TimeUtils.now())
    bio = db.StringField(db_field=DBFields.bio.value, max_length=50)

    meta = {'indexes': ['username', 'email', '-created']}
Beispiel #17
0
class Banned(db.Document):
    '''stores emails of people who are not allowed to make accounts'''
    email = db.EmailField(required=True)
    reason = db.StringField(max_length=1000)
Beispiel #18
0
class User(BaseDocument):

    control = db.EmbeddedDocumentField(Control,
                                       verbose_name=u'control',
                                       required=False)

    username = db.StringField(verbose_name=u'login',
                              max_length=30,
                              required=True,
                              unique=True)

    name = db.StringField(verbose_name=u'nome', max_length=100)

    institution = db.StringField(verbose_name=u'institution',
                                 required=True,
                                 max_length=100)

    email = db.EmailField(verbose_name=u'e-mail',
                          max_length=100,
                          required=True,
                          unique=True)

    pw_hash = db.StringField(verbose_name=u'senha',
                             max_length=100,
                             required=True)

    is_active = db.BooleanField(verbose_name=u'ativo',
                                default=True,
                                required=True)

    is_superuser = db.BooleanField(verbose_name=u'super usuário',
                                   default=False,
                                   required=True)

    last_login = db.DateTimeField(verbose_name=u'último login', required=False)

    meta = {'indexes': ['username', 'email', 'control', 'is_superuser']}

    def __unicode__(self):
        return self.username

    def __init__(self, *args, **kwargs):
        password = kwargs.pop('password', None)
        super(User, self).__init__(*args, **kwargs)
        if password:
            self.set_password(password)

    def set_password(self, password):
        self.pw_hash = generate_password_hash(
            password,
            method=current_app.config['PROJECT_PASSWORD_HASH_METHOD'])

    def add_project(self, project_name):
        self.control.projects.append(project_name)
        self.save()

    def remove_project(self, project_name):
        if project_name in self.control.projects:
            self.control.projects.remove(project_name)
            self.save()

    def check_password(self, password):
        return check_password_hash(self.pw_hash, password)

    def refresh_last_login(self):
        self.last_login = datetime.now()
        self.save()

    def change_active(self, is_active):
        self.is_active = is_active
        self.save()

    def change_superuser(self, is_superuser):
        self.is_superuser = is_superuser
        self.save()

    def add_control(self):
        self.control = Control(projects=[])
        self.save()