def test_get_skills(self): result = database_controller.get_skills("Valdemar-Forsberg") self.assertEqual(result, [{ "skillname": "Programming", "skillpath": "Programming", "level": 1, "subcategories": [{ "skillname": "Java", "skillpath": "Programming/Java", "level": 3, "subcategories": [], "root": False, "milestones": [] }, { "skillname": "Python", "skillpath": "Programming/Python", "level": 4, "subcategories": [], "root": False, "milestones": [] }, { "skillname": "JavaScript", "skillpath": "Programming/JavaScript", "level": 2, "subcategories": [], "root": False, "milestones": [] }], "root": True, "milestones": [] }])
def login(username, password): """Authenticates user with AD. Args: username(`str`): name of the user password(`str`): password of the user Returns: `dict`: profile of the logged in user as `ProfileModel` transformed into dict """ name = authentication_controller.login(username, password) if not database_controller.exists(username): database_controller.create_user(username, name) user_skills = database_controller.get_skills(username) return dict(user=ProfileModel(username, name, user_skills).jsonable())
def set_skills(username, skills): """Adds Skills to user or changes the level. Args: username(`str`): name of the user skills(`dict(str=int)`): skillname:level pairs Returns: `dict`: updated ProfileModel of the user transformed into dict Raises: PermissionError if user is not logged in """ if not controller.is_connected(username): raise PermissionError database_controller.set_skills(username, skills) user_skills = database_controller.get_skills(username) name = authentication_controller.get_name(username) return ProfileModel(username, name, user_skills).jsonable()
def remove_skill(username, skillpath, from_db): """Remove a skill either from the user's profile or the whole database. Args: username (`str`): the username of the current user skillpath(`str`): the full path of the skill from_db(`boolean`): deletes skill from database, if True, else only from user's profile Raises: PermissionError if user is not logged in """ if not controller.is_connected(username): raise PermissionError if from_db: database_controller.remove_skill_from_database(skillpath) else: database_controller.remove_skill(username, skillpath) user_skills = database_controller.get_skills(username) name = authentication_controller.get_name(username) return ProfileModel(username, name, user_skills).jsonable()
def remove_milestone(username, skillpath, level, date, comment): """Removes a milestone from user. Args: username(`str`): name of the user skillpath(`str`): full path of the skill level(`int`): level of skill at milestone date date(`str`): date of milestone in format "YYYY-MM-DD" comment(`str`): comment for milestone Returns: `ProfileModel`: updated ProfileModel of the user. Raises: `PermissionError` if user ist not logged in. """ if not controller.is_connected(username): raise PermissionError database_controller.remove_milestone(username, skillpath, level, date, comment) user_skills = database_controller.get_skills(username) name = authentication_controller.get_name(username) return ProfileModel(username, name, user_skills).jsonable()
def add_milestone(username, skillpath, date, comment, level): """Adds a milestone to skill of a user Args: username(`str`): name of the user skillpath(`str`): full path of the skill date(`str`): date in "YYYY-MM-DD" format comment(`str`): comment/text for the milestone level(`int`): level of skill for user Returns: `dict`: updated ProfileModel of the user transformed into dict Raises: PermissionError if user is not logged in """ if not controller.is_connected(username): raise PermissionError date = datetime.datetime.strptime(date, "%Y-%m-%d").date() database_controller.add_milestone(username, skillpath, date, comment, level) user_skills = database_controller.get_skills(username) name = authentication_controller.get_name(username) return ProfileModel(username, name, user_skills).jsonable()
def test_get_skills_inexistent(self): result = database_controller.get_skills("emptyUser") self.assertEquals(result, [])