blob: 316e1d52ce7e613a2a934d497c6db1ff06ecc466 [file] [log] [blame]
# Copyright 2016 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""A class to display the project summary page."""
from __future__ import print_function
from __future__ import division
from __future__ import absolute_import
from businesslogic import work_env
from framework import permissions
from framework import servlet
from project import project_helpers
from project import project_views
class ProjectSummary(servlet.Servlet):
"""Page to show brief project description and process documentation."""
_PAGE_TEMPLATE = 'project/project-summary-page.ezt'
_MAIN_TAB_MODE = servlet.Servlet.MAIN_TAB_PROCESS
def GatherPageData(self, mr):
"""Build up a dictionary of data values to use when rendering the page."""
with mr.profiler.Phase('getting project star count'):
num_stars = self.services.project_star.CountItemStars(
mr.cnxn, mr.project_id)
plural = '' if num_stars == 1 else 's'
page_data = {
'admin_tab_mode': self.PROCESS_TAB_SUMMARY,
'formatted_project_description': mr.project.description,
'access_level': project_views.ProjectAccessView(mr.project.access),
'num_stars': num_stars,
'plural': plural,
'home_page': mr.project.home_page,
'docs_url': mr.project.docs_url,
'source_url': mr.project.source_url,
}
return page_data
def GatherHelpData(self, mr, page_data):
"""Return a dict of values to drive on-page user help.
Args:
mr: common information parsed from the HTTP request.
page_data: Dictionary of base and page template data.
Returns:
A dict of values to drive on-page user help, to be added to page_data.
"""
help_data = super(ProjectSummary, self).GatherHelpData(mr, page_data)
with work_env.WorkEnv(mr, self.services) as we:
userprefs = we.GetUserPrefs(mr.auth.user_id)
dismissed = [
pv.name for pv in userprefs.prefs if pv.value == 'true']
project = mr.project
# Cue cards for project owners.
if self.CheckPerm(mr, permissions.EDIT_PROJECT):
if ('document_team_duties' not in dismissed and
len(project_helpers.AllProjectMembers(project)) > 1 and
not self.services.project.GetProjectCommitments(
mr.cnxn, mr.project_id).commitments):
help_data['cue'] = 'document_team_duties'
return help_data
def GetProjectSummaryPage(self, **kwargs):
return self.handler(**kwargs)