def render_admin_panel( self, req, cat, page, path_info): #req.perm.assert_permission('TRAC_ADMIN') userProfile_id = path_info teamRosterData={} userProfilesSystem = UserProfilesSystem(self.env) if req.args.has_key('tr_cancel'): req.redirect(req.href.admin(cat, page)) if userProfile_id: userProfile = userProfilesSystem.get_userProfile(userProfile_id) if userProfile.exists: if self._do_updateUserProfile(req, userProfile, teamRosterData): req.redirect(req.href.admin(cat, page)) teamRosterData['userProfile']=userProfile add_stylesheet(req, 'tracteamroster/css/teamroster.css') # wiki toolbar add_script(req, 'common/js/wikitoolbar.js') add_stylesheet(req, 'common/css/wiki.css') return 'admin_teamroster_userProfile.html', {'teamRoster':teamRosterData} else: req.redirect(req.href.admin(cat, page)) teamRosterData['lastUpdatedProfile']= UserProfile() # manage team if req.method=="POST": if req.args.has_key("tr_userProfile_update"): userProfile = userProfilesSystem.get_userProfile(req.args.get('tr_userProfile_id')) if userProfile.exists: self._do_updateUserProfile(req, userProfile, teamRosterData) teamRosterData['lastUpdatedProfile']=userProfile if req.args.has_key("tr_userProfile_search"): self._do_searchUserProfile(req, userProfilesSystem, teamRosterData) if req.args.has_key("tr_userProfile_add"): self._do_addUserProfile(req, userProfilesSystem, teamRosterData) if req.args.has_key("tr_userProfile_create"): self._do_createUserProfile(req, userProfilesSystem, teamRosterData) if req.args.has_key("tr_userProfile_remove"): self._do_removeUserProfile(req, userProfilesSystem, teamRosterData) self._do_listActiveProfiles(req, userProfilesSystem, cat, page, teamRosterData) add_script(req, 'tracteamroster/js/teamroster.js') add_stylesheet(req, 'tracteamroster/css/teamroster.css') # wiki toolbar add_script(req, 'common/js/wikitoolbar.js') add_stylesheet(req, 'common/css/wiki.css') return 'admin_teamroster_team.html', {'teamRoster':teamRosterData}
def render_preference_panel(self, req, panel): """""" userProfileData = {} userProfile = UserProfilesSystem(self.env).get_userProfile( req.session.sid) if req.method == 'POST': userProfile.name = req.args.get('tr_userProfile_name') userProfile.email = req.args.get('tr_userProfile_email') userProfile.bio = req.args.get('tr_userProfile_bio') userProfile.picture_href = TeamAdminPage( self.env)._do_uploadPicture(req, userProfile, {}, 'tr_userProfile_picture') userProfile.role = req.args.get('tr_userProfile_role') if userProfile.save(): userProfileData['message'] = 'Profile updated' userProfileData['userProfile'] = userProfile add_stylesheet(req, 'tracteamroster/css/teamroster.css') # wiki toolbar add_script(req, 'common/js/wikitoolbar.js') add_stylesheet(req, 'common/css/wiki.css') return 'prefs_teamroster_user.html', {'teamRoster': userProfileData}
def getTeamRoster(self, req, listUserProfilesTemplate=[]): """Returns project's team roster. Usage: {{{ teamroster.getTeamRoster() # without arguments returns current active user profiles (with enabled='1') }}} {{{ teamroster.getTeamRoster([{role='developer', enabled='1'}]) # Returns all userProfiles with role='developer' and enabled='1' }}} {{{ teamroster.getTeamRoster([{name='%someName%'}]) # Returns all userProfiles with name like 'someName' }}} """ if isinstance(listUserProfilesTemplate, list) and len(listUserProfilesTemplate)>0: userProfileTemplates = [] for listItem in listUserProfilesTemplate: if isinstance(listItem, dict): userProfileTemplates.append(UserProfile(**listItem)) userProfiles = UserProfilesSystem(self.env).search_userProfile(userProfileTemplates) return [dict(listItem) for listItem in userProfiles] else: return [dict(listItem) for listItem in UserProfilesSystem(self.env).get_active_userProfiles()]
def search_userProfile(self, userProfileTemplate=None): if self.masterUserProfilesStore == '': return [] _masterEnv = open_environment(self.masterUserProfilesStore) def _changeStore(userProfile): userProfile.project_name = userProfile.store.env.project_name userProfile.store = self return userProfile return map( _changeStore, UserProfilesSystem(_masterEnv).search_userProfile( userProfileTemplate))
def render_preference_panel(self, req, panel): """""" userProfileData={} userProfile = UserProfilesSystem(self.env).get_userProfile(req.session.sid) if req.method=='POST' : userProfile.name = req.args.get('tr_userProfile_name') userProfile.email = req.args.get('tr_userProfile_email') userProfile.bio = req.args.get('tr_userProfile_bio') userProfile.picture_href = TeamAdminPage(self.env)._do_uploadPicture(req, userProfile, {},'tr_userProfile_picture') userProfile.role = req.args.get('tr_userProfile_role') if userProfile.save(): userProfileData['message']='Profile updated' userProfileData['userProfile']=userProfile add_stylesheet(req, 'tracteamroster/css/teamroster.css') # wiki toolbar add_script(req, 'common/js/wikitoolbar.js') add_stylesheet(req, 'common/css/wiki.css') return 'prefs_teamroster_user.html', {'teamRoster':userProfileData}
def setUp(self): self.basedir = os.path.realpath(tempfile.mkdtemp()) self.env = EnvironmentStub(enable=['trac.*', 'tracteamroster.*']) self.env.path = os.path.join(self.basedir, 'trac-tempenv') os.mkdir(self.env.path) self.userProfilesSystem = UserProfilesSystem(self.env)
class DefaultUserProfilesStoreTestCase(unittest.TestCase): def setUp(self): self.basedir = os.path.realpath(tempfile.mkdtemp()) self.env = EnvironmentStub(enable=['trac.*', 'tracteamroster.*']) self.env.path = os.path.join(self.basedir, 'trac-tempenv') os.mkdir(self.env.path) self.userProfilesSystem = UserProfilesSystem(self.env) def tearDown(self): shutil.rmtree(self.basedir) def test_add_userProfile_1(self): """Add new userProfile """ newUserProfile = UserProfile() newUserProfile.id = _testUserProfiles[0].get('_user') newUserProfile.name = _testUserProfiles[0].get('_name') newUserProfile.email = _testUserProfiles[0].get('_email') newUserProfile.picture_href = _testUserProfiles[0].get('_picture_href') newUserProfile.bio = _testUserProfiles[0].get('_bio') newUserProfile.role = _testUserProfiles[0].get('_role') self.userProfilesSystem.add_userProfile(newUserProfile) db = self.env.get_db_cnx() cursor = db.cursor() cursor.execute( 'SELECT name, value FROM session_attribute WHERE sid=%s', (_testUserProfiles[0].get('_user'), )) _result = {} for name, value in cursor: _result[name] = value self.assertEqual(_result['enabled'], "1") self.assertEqual(_result['name'], _testUserProfiles[0].get('_name')) self.assertEqual(_result['email'], _testUserProfiles[0].get('_email')) self.assertEqual(_result['picture_href'], _testUserProfiles[0].get('_picture_href')) self.assertEqual(_result['bio'], _testUserProfiles[0].get('_bio')) self.assertEqual(_result['role'], _testUserProfiles[0].get('_role')) def test_add_userProfile_2(self): """Add new userProfile using only the constructor""" newUserProfile = UserProfile( id=_testUserProfiles[1].get('_user'), name=_testUserProfiles[1].get('_name'), email=_testUserProfiles[1].get('_email'), picture_href=_testUserProfiles[1].get('_picture_href'), bio=_testUserProfiles[1].get('_bio'), role=_testUserProfiles[1].get('_role')) self.userProfilesSystem.add_userProfile(newUserProfile) db = self.env.get_db_cnx() cursor = db.cursor() cursor.execute( 'SELECT name, value FROM session_attribute WHERE sid=%s', (_testUserProfiles[1].get('_user'), )) _result = {} for name, value in cursor: _result[name] = value self.assertEqual(_result['enabled'], "1") self.assertEqual(_result['name'], _testUserProfiles[1].get('_name')) self.assertEqual(_result['email'], _testUserProfiles[1].get('_email')) self.assertEqual(_result['picture_href'], _testUserProfiles[1].get('_picture_href')) self.assertEqual(_result['bio'], _testUserProfiles[1].get('_bio')) self.assertEqual(_result['role'], _testUserProfiles[1].get('_role')) def test_get_activeUserProfiles(self): """Get team""" self._loadData() team = self.userProfilesSystem.get_active_userProfiles() self.assertEqual(len(list(team)), 3) def test_get_userProfileById(self): """Get userProfile by id""" self._loadData() userProfile = self.userProfilesSystem.get_userProfile( _testUserProfiles[0].get('_user')) self.assertEqual(userProfile.name, _testUserProfiles[0].get('_name')) self.assertEqual(userProfile.email, _testUserProfiles[0].get('_email')) self.assertEqual(userProfile.picture_href, _testUserProfiles[0].get('_picture_href')) self.assertEqual(userProfile.bio, _testUserProfiles[0].get('_bio')) self.assertEqual(userProfile.role, _testUserProfiles[0].get('_role')) def test_get_searchUserProfilesByName(self): """Search userProfiles by name""" self._loadData() searchResult = list( self.userProfilesSystem.search_userProfile( UserProfile(name="%Foo%"))) self.assertEqual(len(searchResult), 2) self.assertEqual(searchResult[0].name, _testUserProfiles[0].get('_name')) self.assertEqual(searchResult[0].email, _testUserProfiles[0].get('_email')) self.assertEqual(searchResult[0].picture_href, _testUserProfiles[0].get('_picture_href')) self.assertEqual(searchResult[0].bio, _testUserProfiles[0].get('_bio')) self.assertEqual(searchResult[0].role, _testUserProfiles[0].get('_role')) self.assertEqual(searchResult[1].name, _testUserProfiles[1].get('_name')) self.assertEqual(searchResult[1].email, _testUserProfiles[1].get('_email')) self.assertEqual(searchResult[1].picture_href, _testUserProfiles[1].get('_picture_href')) self.assertEqual(searchResult[1].bio, _testUserProfiles[1].get('_bio')) self.assertEqual(searchResult[1].role, _testUserProfiles[1].get('_role')) def test_get_searchUserProfiles(self): """Search userProfiles """ self._loadData() searchResult = list( self.userProfilesSystem.search_userProfile( UserProfile(name="John%", role="%Dev%"))) self.assertEqual(len(searchResult), 2) self.assertEqual(searchResult[0].name, _testUserProfiles[0].get('_name')) self.assertEqual(searchResult[0].email, _testUserProfiles[0].get('_email')) self.assertEqual(searchResult[0].picture_href, _testUserProfiles[0].get('_picture_href')) self.assertEqual(searchResult[0].bio, _testUserProfiles[0].get('_bio')) self.assertEqual(searchResult[0].role, _testUserProfiles[0].get('_role')) self.assertEqual(searchResult[1].name, _testUserProfiles[1].get('_name')) self.assertEqual(searchResult[1].email, _testUserProfiles[1].get('_email')) self.assertEqual(searchResult[1].picture_href, _testUserProfiles[1].get('_picture_href')) self.assertEqual(searchResult[1].bio, _testUserProfiles[1].get('_bio')) self.assertEqual(searchResult[1].role, _testUserProfiles[1].get('_role')) def test_updateUserProfile(self): """Update userProfile""" self._loadData() userProfile4 = self.userProfilesSystem.get_userProfile( _testUserProfiles[1].get('_user')) userProfile4.email = "*****@*****.**" userProfile4.name = "Matei" userProfile4.enabled = "0" userProfile4.save() userProfile_new = self.userProfilesSystem.get_userProfile( _testUserProfiles[1].get('_user')) self.assertEqual(userProfile_new.email, "*****@*****.**") self.assertEqual(userProfile_new.name, "Matei") self.assertEqual(userProfile4.enabled, "0") def _loadData(self): self.userProfilesSystem.add_userProfile( UserProfile(id=_testUserProfiles[0].get('_user'), name=_testUserProfiles[0].get('_name'), email=_testUserProfiles[0].get('_email'), picture_href=_testUserProfiles[0].get('_picture_href'), bio=_testUserProfiles[0].get('_bio'), role=_testUserProfiles[0].get('_role'))) self.userProfilesSystem.add_userProfile( UserProfile(id=_testUserProfiles[1].get('_user'), name=_testUserProfiles[1].get('_name'), email=_testUserProfiles[1].get('_email'), picture_href=_testUserProfiles[1].get('_picture_href'), bio=_testUserProfiles[1].get('_bio'), role=_testUserProfiles[1].get('_role'))) self.userProfilesSystem.add_userProfile( UserProfile(id=_testUserProfiles[2].get('_user'), name=_testUserProfiles[2].get('_name'), email=_testUserProfiles[2].get('_email'), picture_href=_testUserProfiles[2].get('_picture_href'), bio=_testUserProfiles[2].get('_bio'), role=_testUserProfiles[2].get('_role')))
def expand_macro(self, formatter, name, content): teamRosterData = dict(userProfiles=[]) rendered_result = "" contentArgs = {} layoutArgs = {} userProfileTemplates = [] # collecting arguments if content: for i, macroArgs in enumerate(content.split('|')): if i == 0: contentArgs = MacroArguments(macroArgs) self.log.error(contentArgs) continue if i == 1: layoutArgs = MacroArguments(macroArgs) break # extracting userProfile attrs if len(contentArgs) > 0: userProfileTemplates.append(UserProfile(**contentArgs)) if len(contentArgs.getListArgs()) > 0: for listItem in contentArgs.getListArgs(): userProfileTemplates.append( UserProfile(**MacroArguments(listItem[1:len(listItem) - 1]))) # _fixes def _fixes(userProfile): userProfile.bio_html = wiki_to_html(userProfile.bio, self.env, formatter.req) or "[blank]" return userProfile # grabbing userProfiles if len(userProfileTemplates) > 0: teamRosterData['userProfiles'] = map( _fixes, UserProfilesSystem( self.env).search_userProfile(userProfileTemplates)) else: teamRosterData['userProfiles'] = map( _fixes, UserProfilesSystem(self.env).get_active_userProfiles()) # add stylesheet&script add_stylesheet(formatter.req, 'tracteamroster/css/teamroster.css') add_script(formatter.req, 'tracteamroster/js/teamroster.js') # render template rendered_result = Chrome(self.env).render_template( formatter.req, 'macro_teamroster_team.html', {'teamRoster': teamRosterData}, fragment=True) # wrap everything if len(layoutArgs) > 0: rendered_result = html.div(rendered_result, **layoutArgs) return rendered_result
def get_userProfile(self, userProfile_id): _masterEnv = open_environment(self.masterUserProfilesStore) return UserProfilesSystem(_masterEnv).get_userProfile(userProfile_id)
def setUp(self): self.basedir = os.path.realpath(tempfile.mkdtemp()) self.env = EnvironmentStub(enable=['trac.*','tracteamroster.*']) self.env.path = os.path.join(self.basedir, 'trac-tempenv') os.mkdir(self.env.path) self.userProfilesSystem = UserProfilesSystem(self.env)
class DefaultUserProfilesStoreTestCase(unittest.TestCase): def setUp(self): self.basedir = os.path.realpath(tempfile.mkdtemp()) self.env = EnvironmentStub(enable=['trac.*','tracteamroster.*']) self.env.path = os.path.join(self.basedir, 'trac-tempenv') os.mkdir(self.env.path) self.userProfilesSystem = UserProfilesSystem(self.env) def tearDown(self): shutil.rmtree(self.basedir) def test_add_userProfile_1(self): """Add new userProfile """ newUserProfile = UserProfile() newUserProfile.id = _testUserProfiles[0].get('_user') newUserProfile.name = _testUserProfiles[0].get('_name') newUserProfile.email =_testUserProfiles[0].get('_email') newUserProfile.picture_href = _testUserProfiles[0].get('_picture_href') newUserProfile.bio = _testUserProfiles[0].get('_bio') newUserProfile.role = _testUserProfiles[0].get('_role') self.userProfilesSystem.add_userProfile(newUserProfile) db=self.env.get_db_cnx() cursor = db.cursor() cursor.execute('SELECT name, value FROM session_attribute WHERE sid=%s',(_testUserProfiles[0].get('_user'),)) _result = {} for name,value in cursor: _result[name]=value self.assertEqual(_result['enabled'], "1") self.assertEqual(_result['name'], _testUserProfiles[0].get('_name')) self.assertEqual(_result['email'], _testUserProfiles[0].get('_email')) self.assertEqual(_result['picture_href'], _testUserProfiles[0].get('_picture_href')) self.assertEqual(_result['bio'], _testUserProfiles[0].get('_bio')) self.assertEqual(_result['role'], _testUserProfiles[0].get('_role')) def test_add_userProfile_2(self): """Add new userProfile using only the constructor""" newUserProfile = UserProfile( id=_testUserProfiles[1].get('_user'), name=_testUserProfiles[1].get('_name'), email=_testUserProfiles[1].get('_email'), picture_href=_testUserProfiles[1].get('_picture_href'), bio=_testUserProfiles[1].get('_bio'), role=_testUserProfiles[1].get('_role') ) self.userProfilesSystem.add_userProfile(newUserProfile) db=self.env.get_db_cnx() cursor = db.cursor() cursor.execute('SELECT name, value FROM session_attribute WHERE sid=%s',(_testUserProfiles[1].get('_user'),)) _result = {} for name,value in cursor: _result[name]=value self.assertEqual(_result['enabled'], "1") self.assertEqual(_result['name'], _testUserProfiles[1].get('_name')) self.assertEqual(_result['email'], _testUserProfiles[1].get('_email')) self.assertEqual(_result['picture_href'], _testUserProfiles[1].get('_picture_href')) self.assertEqual(_result['bio'], _testUserProfiles[1].get('_bio')) self.assertEqual(_result['role'], _testUserProfiles[1].get('_role')) def test_get_activeUserProfiles(self): """Get team""" self._loadData() team = self.userProfilesSystem.get_active_userProfiles() self.assertEqual(len(list(team)),3) def test_get_userProfileById(self): """Get userProfile by id""" self._loadData() userProfile=self.userProfilesSystem.get_userProfile(_testUserProfiles[0].get('_user')) self.assertEqual(userProfile.name,_testUserProfiles[0].get('_name') ) self.assertEqual(userProfile.email,_testUserProfiles[0].get('_email') ) self.assertEqual(userProfile.picture_href,_testUserProfiles[0].get('_picture_href') ) self.assertEqual(userProfile.bio,_testUserProfiles[0].get('_bio') ) self.assertEqual(userProfile.role,_testUserProfiles[0].get('_role') ) def test_get_searchUserProfilesByName(self): """Search userProfiles by name""" self._loadData() searchResult = list(self.userProfilesSystem.search_userProfile(UserProfile(name="%Foo%"))) self.assertEqual(len(searchResult),2) self.assertEqual(searchResult[0].name,_testUserProfiles[0].get('_name') ) self.assertEqual(searchResult[0].email,_testUserProfiles[0].get('_email') ) self.assertEqual(searchResult[0].picture_href,_testUserProfiles[0].get('_picture_href') ) self.assertEqual(searchResult[0].bio,_testUserProfiles[0].get('_bio') ) self.assertEqual(searchResult[0].role,_testUserProfiles[0].get('_role') ) self.assertEqual(searchResult[1].name,_testUserProfiles[1].get('_name') ) self.assertEqual(searchResult[1].email,_testUserProfiles[1].get('_email') ) self.assertEqual(searchResult[1].picture_href,_testUserProfiles[1].get('_picture_href') ) self.assertEqual(searchResult[1].bio,_testUserProfiles[1].get('_bio') ) self.assertEqual(searchResult[1].role,_testUserProfiles[1].get('_role') ) def test_get_searchUserProfiles(self): """Search userProfiles """ self._loadData() searchResult = list(self.userProfilesSystem.search_userProfile(UserProfile(name="John%", role="%Dev%"))) self.assertEqual(len(searchResult),2) self.assertEqual(searchResult[0].name,_testUserProfiles[0].get('_name') ) self.assertEqual(searchResult[0].email,_testUserProfiles[0].get('_email') ) self.assertEqual(searchResult[0].picture_href,_testUserProfiles[0].get('_picture_href') ) self.assertEqual(searchResult[0].bio,_testUserProfiles[0].get('_bio') ) self.assertEqual(searchResult[0].role,_testUserProfiles[0].get('_role') ) self.assertEqual(searchResult[1].name,_testUserProfiles[1].get('_name') ) self.assertEqual(searchResult[1].email,_testUserProfiles[1].get('_email') ) self.assertEqual(searchResult[1].picture_href,_testUserProfiles[1].get('_picture_href') ) self.assertEqual(searchResult[1].bio,_testUserProfiles[1].get('_bio') ) self.assertEqual(searchResult[1].role,_testUserProfiles[1].get('_role') ) def test_updateUserProfile(self): """Update userProfile""" self._loadData() userProfile4=self.userProfilesSystem.get_userProfile(_testUserProfiles[1].get('_user')) userProfile4.email="*****@*****.**" userProfile4.name="Matei" userProfile4.enabled="0" userProfile4.save() userProfile_new=self.userProfilesSystem.get_userProfile(_testUserProfiles[1].get('_user')) self.assertEqual(userProfile_new.email, "*****@*****.**") self.assertEqual(userProfile_new.name, "Matei") self.assertEqual(userProfile4.enabled,"0") def _loadData(self): self.userProfilesSystem.add_userProfile(UserProfile( id=_testUserProfiles[0].get('_user'), name=_testUserProfiles[0].get('_name'), email=_testUserProfiles[0].get('_email'), picture_href=_testUserProfiles[0].get('_picture_href'), bio=_testUserProfiles[0].get('_bio'), role=_testUserProfiles[0].get('_role') ) ) self.userProfilesSystem.add_userProfile(UserProfile( id=_testUserProfiles[1].get('_user'), name=_testUserProfiles[1].get('_name'), email=_testUserProfiles[1].get('_email'), picture_href=_testUserProfiles[1].get('_picture_href'), bio=_testUserProfiles[1].get('_bio'), role=_testUserProfiles[1].get('_role') ) ) self.userProfilesSystem.add_userProfile(UserProfile( id=_testUserProfiles[2].get('_user'), name=_testUserProfiles[2].get('_name'), email=_testUserProfiles[2].get('_email'), picture_href=_testUserProfiles[2].get('_picture_href'), bio=_testUserProfiles[2].get('_bio'), role=_testUserProfiles[2].get('_role') ) )