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 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 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 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 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)