Esempio n. 1
0
 def account_valid(self, val, field_name):
     _dao = UserDao()
     user = _dao.find_one({'$or':[{'email':val},{'username':val}]})
     if user is None:
         return False
     else:
         return True
Esempio n. 2
0
class LoginValidator(Validator):
    def __init__(self, account):
        self.account = account
        
        Validator.__init__(self)
        
        self.dao = UserDao()
        self.rules = {'account': { 
                                'account_valid' : [self.account_valid, 'email', 'The account does not exist.']
                                },
                      'password':{
                                'password_valid' : [self.password_valid, 'password', 'Wrong password']
                               }
                    }

    def account_valid(self, val, field_name):
        _dao = UserDao()
        user = _dao.find_one({'$or':[{'email':val},{'username':val}]})
        if user is None:
            return False
        else:
            return True

    def password_valid(self, val, field_name):
        account = self.account        
        user = self.dao.find_one({'$or':[{'email':account},{'username':account}]})
        if user is None:
            return False
        else:
            return user['password'] == val
Esempio n. 3
0
 def __init__(self):
     """Arguments:
         name -- string type
         item_id -- BSON ObjectId type
     """
     self.dao = UserDao()
     self.roles = ['Admin', 'User']
     self.titles = ['Project Manager', 'Team Lead', 'Developer', 'Tester'] # The order should confirm with users.html
Esempio n. 4
0
 def __init__(self, account):
     self.account = account
     
     Validator.__init__(self)
     
     self.dao = UserDao()
     self.rules = {'account': { 
                             'account_valid' : [self.account_valid, 'email', 'The account does not exist.']
                             },
                   'password':{
                             'password_valid' : [self.password_valid, 'password', 'Wrong password']
                            }
                 }
Esempio n. 5
0
class UserService():
    def __init__(self):
        """Arguments:
            name -- string type
            item_id -- BSON ObjectId type
        """
        self.dao = UserDao()
        self.roles = ['Admin', 'User']
        self.titles = ['Project Manager', 'Team Lead', 'Developer', 'Tester'] # The order should confirm with users.html
        
    def get_role(self, role):
        if role < len(self.roles):
            return self.roles[role]
        else:
            return 'None'
    
    def get_title(self, title):
        if title < len(self.titles):
            return self.titles[title]
        else:
            return 'None'
        
    def get_user(self, sid):
        """
        Argument:
            sid -- string type
        """
        if sid != '':
            oid = ObjectId(sid)
            user = self.dao.find_one({'_id':oid})
            return {'id':str(user['_id']),
                    'username':user['username'],
                    'email':user['email'],
                    'phone':user['phone'],
                    'created':user['created'],
                    'role':self.get_role(user['role']),
                    'title':self.get_title(user['title'])}
        else:
            return None
        
    def delete_user(self, sid):
        if sid != '':
            oid = ObjectId(sid)
            self.dao.remove({'_id':oid})
            
    def get_users(self, query={}):
        """ Get the users for rendering the html
        """
        users = self.dao.find(query)
        
        if users is not None:
            _users = []
            for user in users:
                _users.append({'id':str(user['_id']),
                                'username':user['username'],
                                'email':user['email'],
                                'role':self.get_role(user['role']),
                                'title':self.get_title(user['title'])})
            return _users
        else:
            return []
        

    def save_user(self, user, mode):
        """
        Arguments:
            user -- dictionary type
        Return:
        The '_id' value of to_save or [None] if manipulate is False and to_save has no _id field.
        """
        _dict = dict(user) # Clone user is a must
        if '_id' in _dict:
            del _dict['_id']
            
        if mode == Mode.EDIT:
            if 'id' in user.keys():
                _dict['_id'] = user['id']
        else:
            _dict['created'] = time.time()
        return self.dao.save(_dict)


    
    def login(self, account, password, remember_me=False):
        """
        Arguments:
            account: string type, can be username or email address
            password: string type
        Return 
            True if the log in attempt succeeds, otherwise Error code
        """
        user = self.dao.find_one({'$or':[{'email':account}, {'username':account}]})
        if user is None:
            return LoginError.USER_NOT_EXIT
        else:
            if user['password'] == password:
                login_user(User(user), remember=remember_me)
                return LoginError.NO_ERROR
            else:
                return LoginError.WRONG_PASSWORD
Esempio n. 6
0
 def unique(self, val, field_name):
     _dao = UserDao()
     ret = _dao.find_one({field_name:val})
     return ret is None
Esempio n. 7
0
 def index(self, page=1):
     users = UserDao.all()
     return self.render(users=users)
Esempio n. 8
0
 def show(self, id):
     user = UserDao.find(id)
     return self.render(user=user)
Esempio n. 9
0
 def index(self, page=1):
     users = UserDao.all()
     return self.render(users=users)
Esempio n. 10
0
 def show(self, id):
     user = UserDao.find(id)
     return self.render(user=user)