Example #1
0
class User(object):
    
    db = None
    
    '''
    classdocs
    '''
    #constructor
    def __init__(self):
        self.connection = Connection('localhost', 27017)
        self.db = self.connection.MOOC
        self.db_users = self.db['usercollection']
        
        self.course = Course()
     
    def reset(self):
        self.db_users.remove()
        
    # get user by email          
    def getByEmail(self, email):
        info = self.db_users.find_one({'email' : email})
        return info
    
    #create user 
    def create(self, info):
        try:
            data = {}
            data['email'] = info['email'] 
            data['own'] = []
            data['enrolled'] = []
            data['quizzes'] = [] 
             
            return self.db_users.save(data)
        except ValidationError as ve:
            print str(ve)
            return False
        
    
    #update user
    def update(self, email, info):
        try:
            if info.has_key('email'):
                del info['email']
                
            data={}                
            data = info #TODO
            self.db_users.update({'email' : email}, {"$set" : data})
        except ValidationError as ve:
            print str(ve)
            return False
        
        return True
    
    def updateOwnedCourse(self, email, courseId):
        self.db_users.update({'email' : email}, {"$addToSet" :{'own' : str(courseId)}})
    
    #delete user
    def delete(self, email):
        return self.db_users.remove({'email' : email})
        
    #enroll user
    def enroll(self, email, courseId):
        #check if course is available
        course = self.course.getById(courseId)
        if not course:
            return None   #course not available 

        
        #add new course
        self.db_users.update({'email' : email}, {"$addToSet" :{'enrolled' : courseId}})
        
        return True 
    
    #enroll user
    def drop(self, email, courseId):
        #add new course
        self.db_users.update({'email' : email}, {"$pull" :{'enrolled' : courseId}})
        
        return True