blob: c0cad5a34b5cc4c2e2140318f88eec8bf751f163 [file] [log] [blame]
Copybara854996b2021-09-07 19:36:02 +00001# Copyright 2016 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style
3# license that can be found in the LICENSE file or at
4# https://developers.google.com/open-source/licenses/bsd
5
6"""A class to display the project summary page."""
7from __future__ import print_function
8from __future__ import division
9from __future__ import absolute_import
10
Copybara854996b2021-09-07 19:36:02 +000011from businesslogic import work_env
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020012from framework import flaskservlet
Copybara854996b2021-09-07 19:36:02 +000013from framework import permissions
14from framework import servlet
15from project import project_helpers
16from project import project_views
17
Copybara854996b2021-09-07 19:36:02 +000018
19class ProjectSummary(servlet.Servlet):
20 """Page to show brief project description and process documentation."""
21
22 _PAGE_TEMPLATE = 'project/project-summary-page.ezt'
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020023 _MAIN_TAB_MODE = flaskservlet.FlaskServlet.MAIN_TAB_PROCESS
Copybara854996b2021-09-07 19:36:02 +000024
25 def GatherPageData(self, mr):
26 """Build up a dictionary of data values to use when rendering the page."""
27
28 with mr.profiler.Phase('getting project star count'):
29 num_stars = self.services.project_star.CountItemStars(
30 mr.cnxn, mr.project_id)
31 plural = '' if num_stars == 1 else 's'
32
33 page_data = {
34 'admin_tab_mode': self.PROCESS_TAB_SUMMARY,
Adrià Vilanova Martínezac4a6442022-05-15 19:05:13 +020035 'formatted_project_description': mr.project.description,
Copybara854996b2021-09-07 19:36:02 +000036 'access_level': project_views.ProjectAccessView(mr.project.access),
37 'num_stars': num_stars,
38 'plural': plural,
39 'home_page': mr.project.home_page,
40 'docs_url': mr.project.docs_url,
41 'source_url': mr.project.source_url,
Adrià Vilanova Martínezac4a6442022-05-15 19:05:13 +020042 }
Copybara854996b2021-09-07 19:36:02 +000043
44 return page_data
45
46 def GatherHelpData(self, mr, page_data):
47 """Return a dict of values to drive on-page user help.
48
49 Args:
50 mr: common information parsed from the HTTP request.
51 page_data: Dictionary of base and page template data.
52
53 Returns:
54 A dict of values to drive on-page user help, to be added to page_data.
55 """
56 help_data = super(ProjectSummary, self).GatherHelpData(mr, page_data)
57 with work_env.WorkEnv(mr, self.services) as we:
58 userprefs = we.GetUserPrefs(mr.auth.user_id)
59 dismissed = [
60 pv.name for pv in userprefs.prefs if pv.value == 'true']
61 project = mr.project
62
63 # Cue cards for project owners.
64 if self.CheckPerm(mr, permissions.EDIT_PROJECT):
65 if ('document_team_duties' not in dismissed and
66 len(project_helpers.AllProjectMembers(project)) > 1 and
67 not self.services.project.GetProjectCommitments(
68 mr.cnxn, mr.project_id).commitments):
69 help_data['cue'] = 'document_team_duties'
70
71 return help_data
Adrià Vilanova Martínezde942802022-07-15 14:06:55 +020072
73 # def GetProjectSummaryPage(self, **kwargs):
74 # return self.handler(**kwargs)