def process_request(self, req): """ Render welcome page """ # Prepare data for template prjs = Projects() data = {} data['baseurl'] = conf.url_projects_path if req.authname == 'anonymous': conf.redirect(req) # Get project count data['project_count'] = prjs.project_count() user = get_userstore().getUser(req.authname) global_timeline = GlobalTimeline() data['show_explore'] = self.env[FindProjectsModule].has_explore_perm(req) data['latest_events'] = global_timeline.get_latest_events(req.authname, 5) # Check if user is allowed to create project data['can_create_project'] = user.can_create_project() # Configuration values the welcome page wants data['site_name'] = conf.site_name data['site_title_text'] = conf.site_title_text data['site_punch_line'] = conf.punch_line data['site_theme_path'] = conf.getThemePath() wiki_welcome = self._get_welcome_page(req) if wiki_welcome: data['wiki_welcome'] = wiki_welcome return "welcome.html", data, None
def process_request(self, req): """ Render page """ if req.authname == "anonymous": conf.redirect(req, conf.url_home_path + "/user") # Prepare data for template data = {} data["baseurl"] = conf.url_projects_path data["base_path"] = req.base_path data["watchlist"] = self._get_watchlist_events(req) data["to_web_time"] = to_web_time if req.args.get("format") == "rss": return "watchlist_timeline.rss", data, "application/rss+xml" return "watchlist_timeline.html", data, None
def process_request(self, req): """ Render page """ if req.authname == 'anonymous': conf.redirect(req, conf.url_home_path + '/user') # Prepare data for template data = {} data['baseurl'] = conf.url_projects_path data['base_path'] = req.base_path data['watchlist'] = self._get_watchlist_events(req) data['to_web_time'] = to_web_time if req.args.get('format') == 'rss': return "watchlist_timeline.rss", data, 'application/rss+xml' return "watchlist_timeline.html", data, None
def process_request(self, req): """ Process request for listing, creating and removing projects """ users = get_userstore() ctx = get_context(req) author = ctx['author'] = users.getUser(req.authname) if req.authname == 'anonymous': conf.redirect(req) # TODO: are recent_public and active_public lists really needed? actions = { "new": self.new_project_form, "create": self.create_project, "remove": self.remove_project, "forkables": self._list_forkable_projects, "recent_public": self._list_recent_public_projects, "active_public": self._list_mostactive_public_projects } # Default action action = 'list' # Try if other action is given try: act = str(req.path_info.rsplit('/', 1)[1]) if act in actions: action = act except: self.log.debug( "ProjectListModule.process_request failed splitting action.") if action in self.project_listings: explore_comp = self.env[FindProjectsModule] if not explore_comp.has_explore_perm(req): req.redirect(conf.url_home_path) # Run requested action if actions.has_key(action): return actions[action](req) req.redirect(ProjectListModule.home())
def process_request(self, req): """ Process request for listing, creating and removing projects """ users = get_userstore() ctx = get_context(req) author = ctx['author'] = users.getUser(req.authname) if req.authname == 'anonymous': conf.redirect(req) # TODO: are recent_public and active_public lists really needed? actions = { "new": self.new_project_form, "create": self.create_project, "remove": self.remove_project, "forkables": self._list_forkable_projects, "recent_public": self._list_recent_public_projects, "active_public": self._list_mostactive_public_projects } # Default action action = 'list' # Try if other action is given try: act = str(req.path_info.rsplit('/', 1)[1]) if act in actions: action = act except: self.log.debug("ProjectListModule.process_request failed splitting action.") if action in self.project_listings: explore_comp = self.env[FindProjectsModule] if not explore_comp.has_explore_perm(req): req.redirect(conf.url_home_path) # Run requested action if actions.has_key(action): return actions[action](req) req.redirect(ProjectListModule.home())
def process_request(self, req): """ Render welcome page """ # Prepare data for template prjs = Projects() data = {} data['baseurl'] = conf.url_projects_path if req.authname == 'anonymous': conf.redirect(req) # Get project count data['project_count'] = prjs.project_count() user = get_userstore().getUser(req.authname) global_timeline = GlobalTimeline() data['show_explore'] = self.env[FindProjectsModule].has_explore_perm( req) data['latest_events'] = global_timeline.get_latest_events( req.authname, 5) # Check if user is allowed to create project data['can_create_project'] = user.can_create_project() # Configuration values the welcome page wants data['site_name'] = conf.site_name data['site_title_text'] = conf.site_title_text data['site_punch_line'] = conf.punch_line data['site_theme_path'] = conf.getThemePath() wiki_welcome = self._get_welcome_page(req) if wiki_welcome: data['wiki_welcome'] = wiki_welcome return "welcome.html", data, None
def process_request(self, req): """ Render welcome page """ # Cast into bool directly, since match object properties are not needed viewing_user_profile = bool(RE_HOME_USER.match(req.path_info)) userstore = get_userstore() if (req.authname == 'anonymous' and not self.env.config.getbool('multiproject', 'allow_public_projects')): conf.redirect(req, req.href('/user')) if viewing_user_profile: username = req.path_info.rsplit("/")[-1] else: username = req.authname user = userstore.getUser(username) if not user: raise TracError("User not found.") if req.authname == 'anonymous' and not viewing_user_profile: conf.redirect(req, conf.url_home_path + '/user') if user.username == 'anonymous' or user.username == 'authenticated': raise TracError("User not found.") # Possible values sort_cols = {'DATE': 5, 'PRIORITY': 6, 'PROJECT': 7} desc_asc = {'DESC': True, 'ASC': False} sort_tasks_by = req.args.get('sort_tasks_by','DATE') if sort_tasks_by not in sort_cols: sort_tasks_by = 'DATE' sort_col = sort_cols[sort_tasks_by] sort_options = {'DESC':'DESC', 'ASC':'ASC'} sort_tasks_order = sort_options.get(req.args.get('sort_tasks_order'), 'ASC') data = {} data['username'] = user.getDisplayName() if viewing_user_profile: if username != req.authname: # TODO: i18n support data['usernames'] = username + "'s" else: data['usernames'] = "Your" else: data['username'] = "******".format(user.givenName, user.lastName) data['usernames'] = "My" data['baseurl'] = conf.url_projects_path data['userpage'] = viewing_user_profile data['base_path'] = req.base_path # Prepare data for template prjs = Projects() default_projects, default_names = prjs.get_default_projects() data['default_projects'] = default_projects try: if viewing_user_profile: projects = prjs.get_participated_projects(user, by_ldap=False, public_only=True) else: projects = prjs.get_participated_projects(user, by_ldap=True, public_only=False) except TracError as e: projects = [] if viewing_user_profile: all_projects = projects else: all_projects = default_projects + [p for p in projects if p.env_name not in default_names] admin_projects = [] other_projects = [] if viewing_user_profile: other_projects = all_projects else: for project in all_projects: if project.is_admin(user.username): admin_projects.append(project) else: other_projects.append(project) # admin_projects is [] in public profile or if there are not public, administrated projects data['projects_where_admin'] = admin_projects data['projects'] = other_projects # Get tickets and posts # [project, row[URL], row[SUMMARY], row[DESCRIPTION], row[PRIORITY], to_datetime(row[TIME]/1000000)] policy = CQDEPermissionPolicy(self.env) ticket_projects = [] post_projects = [] if viewing_user_profile: for project in all_projects: self.log.warning('project %s' % project.env_name) if policy.check_permission(project.env_name, 'TICKET_VIEW', 'anonymous'): ticket_projects.append(project) if policy.check_permission(project.env_name, 'DISCUSSION_VIEW', 'anonymous'): post_projects.append(project) else: ticket_projects = all_projects post_projects = all_projects tasks = prjs.get_all_user_tasks(user.username, ticket_projects) do_reverse = desc_asc[sort_tasks_order] tasks = sorted(tasks, key = lambda task: task[sort_col], reverse = do_reverse) # Get posts posts = self._get_posts(user.username, post_projects) data['tasks'] = tasks (totaltickets, totalclosed) = prjs.get_all_user_task_sums(user.username, all_projects) data['user'] = user data['known_priorities'] = ['blocker', 'critical', 'major', 'minor', 'trivial'] data['sort_tasks_by'] = sort_tasks_by data['sort_tasks_order'] = sort_tasks_order data['posts'] = posts[:10] data['userpage'] = viewing_user_profile data['to_web_time'] = to_web_time # Check if user can create a project data['can_create_project'] = user.can_create_project() if viewing_user_profile: if username != req.authname: data['title'] = username + "'s profile" data['badgelinktitle'] = "View profile" else: data['title'] = "This is your public profile" data['badgelinktitle'] = "View your profile" else: data['title'] = "My projects" data['badgelinktitle'] = "View my public profile" topics_started = 0 for post in posts: if post['topic_id'] == 0: topics_started += 1 data['user'].details = {'Total tickets':totaltickets, 'Total tickets closed':totalclosed, 'Discussions started': topics_started} if not viewing_user_profile: data['watchlist'] = self._get_watchlist_events(user) return "myprojects.html", data, None