Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(100)

Unified Diff: appengine/monorail/proto/user_pb2.py

Issue 1868553004: Open Source Monorail (Closed) Base URL: https://chromium.googlesource.com/infra/infra.git@master
Patch Set: Rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « appengine/monorail/proto/tracker_pb2.py ('k') | appengine/monorail/proto/usergroup_pb2.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: appengine/monorail/proto/user_pb2.py
diff --git a/appengine/monorail/proto/user_pb2.py b/appengine/monorail/proto/user_pb2.py
new file mode 100644
index 0000000000000000000000000000000000000000..5859cf05689b3d2c965421ee28319a028eb92a7b
--- /dev/null
+++ b/appengine/monorail/proto/user_pb2.py
@@ -0,0 +1,122 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is govered by a BSD-style
+# license that can be found in the LICENSE file or at
+# https://developers.google.com/open-source/licenses/bsd
+
+"""Protocol buffers for Monorail users."""
+
+from protorpc import messages
+
+
+class ActionLimit(messages.Message):
+ """In-memory business object for action rate limiting.
+
+ We will keep track of the number of actions
+ of various types by individual users and limit each user's ability
+ to perform a large number of those actions. E.g., no one user can
+ create too many new projects.
+
+ Our application code checks three kinds of action limits:
+ 1. A soft limit on the number of actions in a period of time.
+ If this soft limit is exceeded, the user will need to solve a CAPTCHA.
+ 2. A hard limit on the number of actions in a period of time.
+ if this hard limit is exceeded, the requested actions will fail.
+ 3. A lifetime limit. The user cannot perform this type of action more
+ than this many times, ever. We can adjust the lifetime limit
+ for individual users who contact us.
+
+ The numeric values for the actual limits are coded as constants in our
+ application. Only the lifetime limit is stored in this PB, and then only
+ if it differs from the default.
+ """
+ # Number of times that the user has performed this type of action recently.
+ recent_count = messages.IntegerField(1, required=True, default=0)
+
+ # Time of most recent counter reset in seconds.
+ # If (Now - reset_timestamp) > threshold, recent_count may be zeroed.
+ reset_timestamp = messages.IntegerField(2, required=True, default=0)
+
+ # Number of times that the user has performed this type of action ever.
+ lifetime_count = messages.IntegerField(3, required=True, default=0)
+
+ # This field is only present for users who have contacted us and
+ # asked us to increase their lifetime limit. When present, this value
+ # overrides the application's built-in default limit.
+ lifetime_limit = messages.IntegerField(4, default=0)
+
+ # This field is only present for users who have contacted us and
+ # asked us to increase their period limit. When present, this value
+ # overrides the application's built-in default limit.
+ period_soft_limit = messages.IntegerField(5, default=0)
+ period_hard_limit = messages.IntegerField(6, default=0)
+
+
+class IssueUpdateNav(messages.Enum):
+ """Pref for where a project member goes after an issue update."""
+ UP_TO_LIST = 0 # Back to issue list or grid view.
+ STAY_SAME_ISSUE = 1 # Show the same issue with the update.
+ NEXT_IN_LIST = 2 # Triage mode: go to next issue, if any.
+
+
+class User(messages.Message):
+ """In-memory busines object for representing users."""
+ # Is this user a site administer?
+ is_site_admin = messages.BooleanField(4, required=True, default=False)
+
+ # User notification preferences. These preferences describe when
+ # a user is sent a email notification after an issue has changed.
+ # The user is notified if either of the following is true:
+ # 1. notify_issue_change is True and the user is named in the
+ # issue's Owner or CC field.
+ # 2. notify_starred_issue_change is True and the user has starred
+ # the issue.
+ notify_issue_change = messages.BooleanField(5, default=True)
+ notify_starred_issue_change = messages.BooleanField(6, default=True)
+
+ # This user has been banned, and this string describes why. All access
+ # to Monorail pages should be disabled.
+ banned = messages.StringField(7, default='')
+
+ # User action counts and limits.
+ project_creation_limit = messages.MessageField(ActionLimit, 8)
+ issue_comment_limit = messages.MessageField(ActionLimit, 9)
+ issue_attachment_limit = messages.MessageField(ActionLimit, 10)
+ issue_bulk_edit_limit = messages.MessageField(ActionLimit, 11)
+ ignore_action_limits = messages.BooleanField(13, default=False)
+
+ after_issue_update = messages.EnumField(
+ IssueUpdateNav, 29, default=IssueUpdateNav.STAY_SAME_ISSUE)
+
+ # Should we obfuscate the user's email address and require solving a captcha
+ # to reveal it entirely? The default value corresponds to requiring users to
+ # opt into publishing their identities, but our code ensures that the
+ # opposite takes place for Gmail accounts.
+ obscure_email = messages.BooleanField(26, default=True)
+
+ # The email address chosen by the user to reveal on the site.
+ email = messages.StringField(27)
+
+ # The user has seen these cue cards and dismissed them.
+ dismissed_cues = messages.StringField(32, repeated=True)
+
+ # Sticky state for show/hide widget on people details page.
+ keep_people_perms_open = messages.BooleanField(33, default=False)
+
+ deleted = messages.BooleanField(39, default=False)
+ deleted_timestamp = messages.IntegerField(40, default=0)
+
+ preview_on_hover = messages.BooleanField(42, default=True)
+
+ flag_spam_limit = messages.MessageField(ActionLimit, 43)
+ api_request_limit = messages.MessageField(ActionLimit, 44)
+
+def MakeUser():
+ """Create and return a new user record in RAM."""
+ user = User()
+ user.project_creation_limit = ActionLimit()
+ user.issue_comment_limit = ActionLimit()
+ user.issue_attachment_limit = ActionLimit()
+ user.issue_bulk_edit_limit = ActionLimit()
+ user.flag_spam_limit = ActionLimit()
+ user.api_request_limit = ActionLimit()
+ return user
« no previous file with comments | « appengine/monorail/proto/tracker_pb2.py ('k') | appengine/monorail/proto/usergroup_pb2.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698