Project import generated by Copybara.
GitOrigin-RevId: d9e9e3fb4e31372ec1fb43b178994ca78fa8fe70
diff --git a/sitewide/sitewide_helpers.py b/sitewide/sitewide_helpers.py
new file mode 100644
index 0000000..33f53c3
--- /dev/null
+++ b/sitewide/sitewide_helpers.py
@@ -0,0 +1,38 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file or at
+# https://developers.google.com/open-source/licenses/bsd
+
+"""Helper functions used in sitewide servlets."""
+from __future__ import print_function
+from __future__ import division
+from __future__ import absolute_import
+
+import logging
+
+from framework import permissions
+from proto import project_pb2
+
+
+def GetViewableStarredProjects(
+ cnxn, services, viewed_user_id, effective_ids, logged_in_user):
+ """Returns a list of viewable starred projects."""
+ starred_project_ids = services.project_star.LookupStarredItemIDs(
+ cnxn, viewed_user_id)
+ projects = list(
+ services.project.GetProjects(cnxn, starred_project_ids).values())
+ viewable_projects = FilterViewableProjects(
+ projects, logged_in_user, effective_ids)
+ return viewable_projects
+
+
+def FilterViewableProjects(project_list, logged_in_user, effective_ids):
+ """Return subset of LIVE project protobufs viewable by the given user."""
+ viewable_projects = []
+ for project in project_list:
+ if (project.state == project_pb2.ProjectState.LIVE and
+ permissions.UserCanViewProject(
+ logged_in_user, effective_ids, project)):
+ viewable_projects.append(project)
+
+ return viewable_projects