|
15 | 15 | # You should have received a copy of the GNU Lesser General Public License
|
16 | 16 | # along with this program. If not, see <http://www.gnu.org/licenses/>.
|
17 | 17 |
|
| 18 | +from enum import Enum, IntEnum |
| 19 | + |
18 | 20 | from gitlab._version import __title__, __version__
|
19 | 21 |
|
20 | 22 | # NOTE(jlvillal): '_DEPRECATED' only affects users accessing constants via the
|
21 | 23 | # top-level gitlab.* namespace. See 'gitlab/__init__.py:__getattr__()' for the
|
22 | 24 | # consumer of '_DEPRECATED' For example 'x = gitlab.NO_ACCESS'. We want users
|
23 | 25 | # to instead use constants by doing code like: gitlab.const.NO_ACCESS.
|
24 | 26 | _DEPRECATED = [
|
| 27 | + "ADMIN_ACCESS", |
25 | 28 | "DEFAULT_URL",
|
26 | 29 | "DEVELOPER_ACCESS",
|
27 | 30 | "GUEST_ACCESS",
|
|
52 | 55 | "VISIBILITY_PUBLIC",
|
53 | 56 | ]
|
54 | 57 |
|
| 58 | + |
| 59 | +# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/access.rb#L12-18 |
| 60 | +class AccessLevel(IntEnum): |
| 61 | + NO_ACCESS: int = 0 |
| 62 | + MINIMAL_ACCESS: int = 5 |
| 63 | + GUEST: int = 10 |
| 64 | + REPORTER: int = 20 |
| 65 | + DEVELOPER: int = 30 |
| 66 | + MAINTAINER: int = 40 |
| 67 | + OWNER: int = 50 |
| 68 | + ADMIN: int = 60 |
| 69 | + |
| 70 | + |
| 71 | +# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/lib/gitlab/visibility_level.rb#L23-25 |
| 72 | +class Visibility(Enum): |
| 73 | + PRIVATE: str = "private" |
| 74 | + INTERNAL: str = "internal" |
| 75 | + PUBLIC: str = "public" |
| 76 | + |
| 77 | + |
| 78 | +class NotificationLevel(Enum): |
| 79 | + DISABLED: str = "disabled" |
| 80 | + PARTICIPATING: str = "participating" |
| 81 | + WATCH: str = "watch" |
| 82 | + GLOBAL: str = "global" |
| 83 | + MENTION: str = "mention" |
| 84 | + CUSTOM: str = "custom" |
| 85 | + |
| 86 | + |
| 87 | +# https://gitlab.com/gitlab-org/gitlab/-/blob/e97357824bedf007e75f8782259fe07435b64fbb/app/views/search/_category.html.haml#L10-37 |
| 88 | +class SearchScope(Enum): |
| 89 | + # all scopes (global, group and project) |
| 90 | + PROJECTS: str = "projects" |
| 91 | + ISSUES: str = "issues" |
| 92 | + MERGE_REQUESTS: str = "merge_requests" |
| 93 | + MILESTONES: str = "milestones" |
| 94 | + WIKI_BLOBS: str = "wiki_blobs" |
| 95 | + COMMITS: str = "commits" |
| 96 | + BLOBS: str = "blobs" |
| 97 | + USERS: str = "users" |
| 98 | + |
| 99 | + # specific global scope |
| 100 | + GLOBAL_SNIPPET_TITLES: str = "snippet_titles" |
| 101 | + |
| 102 | + # specific project scope |
| 103 | + PROJECT_NOTES: str = "notes" |
| 104 | + |
| 105 | + |
55 | 106 | DEFAULT_URL: str = "https://gitlab.com"
|
56 | 107 |
|
57 |
| -NO_ACCESS: int = 0 |
58 |
| -MINIMAL_ACCESS: int = 5 |
59 |
| -GUEST_ACCESS: int = 10 |
60 |
| -REPORTER_ACCESS: int = 20 |
61 |
| -DEVELOPER_ACCESS: int = 30 |
62 |
| -MAINTAINER_ACCESS: int = 40 |
63 |
| -OWNER_ACCESS: int = 50 |
64 |
| -ADMIN_ACCESS: int = 60 |
65 |
| - |
66 |
| -VISIBILITY_PRIVATE: str = "private" |
67 |
| -VISIBILITY_INTERNAL: str = "internal" |
68 |
| -VISIBILITY_PUBLIC: str = "public" |
69 |
| - |
70 |
| -NOTIFICATION_LEVEL_DISABLED: str = "disabled" |
71 |
| -NOTIFICATION_LEVEL_PARTICIPATING: str = "participating" |
72 |
| -NOTIFICATION_LEVEL_WATCH: str = "watch" |
73 |
| -NOTIFICATION_LEVEL_GLOBAL: str = "global" |
74 |
| -NOTIFICATION_LEVEL_MENTION: str = "mention" |
75 |
| -NOTIFICATION_LEVEL_CUSTOM: str = "custom" |
| 108 | +NO_ACCESS = AccessLevel.NO_ACCESS.value |
| 109 | +MINIMAL_ACCESS = AccessLevel.MINIMAL_ACCESS.value |
| 110 | +GUEST_ACCESS = AccessLevel.GUEST.value |
| 111 | +REPORTER_ACCESS = AccessLevel.REPORTER.value |
| 112 | +DEVELOPER_ACCESS = AccessLevel.DEVELOPER.value |
| 113 | +MAINTAINER_ACCESS = AccessLevel.MAINTAINER.value |
| 114 | +OWNER_ACCESS = AccessLevel.OWNER.value |
| 115 | +ADMIN_ACCESS = AccessLevel.ADMIN.value |
| 116 | + |
| 117 | +VISIBILITY_PRIVATE = Visibility.PRIVATE.value |
| 118 | +VISIBILITY_INTERNAL = Visibility.INTERNAL.value |
| 119 | +VISIBILITY_PUBLIC = Visibility.PUBLIC.value |
| 120 | + |
| 121 | +NOTIFICATION_LEVEL_DISABLED = NotificationLevel.DISABLED.value |
| 122 | +NOTIFICATION_LEVEL_PARTICIPATING = NotificationLevel.PARTICIPATING.value |
| 123 | +NOTIFICATION_LEVEL_WATCH = NotificationLevel.WATCH.value |
| 124 | +NOTIFICATION_LEVEL_GLOBAL = NotificationLevel.GLOBAL.value |
| 125 | +NOTIFICATION_LEVEL_MENTION = NotificationLevel.MENTION.value |
| 126 | +NOTIFICATION_LEVEL_CUSTOM = NotificationLevel.CUSTOM.value |
76 | 127 |
|
77 | 128 | # Search scopes
|
78 | 129 | # all scopes (global, group and project)
|
79 |
| -SEARCH_SCOPE_PROJECTS: str = "projects" |
80 |
| -SEARCH_SCOPE_ISSUES: str = "issues" |
81 |
| -SEARCH_SCOPE_MERGE_REQUESTS: str = "merge_requests" |
82 |
| -SEARCH_SCOPE_MILESTONES: str = "milestones" |
83 |
| -SEARCH_SCOPE_WIKI_BLOBS: str = "wiki_blobs" |
84 |
| -SEARCH_SCOPE_COMMITS: str = "commits" |
85 |
| -SEARCH_SCOPE_BLOBS: str = "blobs" |
86 |
| -SEARCH_SCOPE_USERS: str = "users" |
| 130 | +SEARCH_SCOPE_PROJECTS = SearchScope.PROJECTS.value |
| 131 | +SEARCH_SCOPE_ISSUES = SearchScope.ISSUES.value |
| 132 | +SEARCH_SCOPE_MERGE_REQUESTS = SearchScope.MERGE_REQUESTS.value |
| 133 | +SEARCH_SCOPE_MILESTONES = SearchScope.MILESTONES.value |
| 134 | +SEARCH_SCOPE_WIKI_BLOBS = SearchScope.WIKI_BLOBS.value |
| 135 | +SEARCH_SCOPE_COMMITS = SearchScope.COMMITS.value |
| 136 | +SEARCH_SCOPE_BLOBS = SearchScope.BLOBS.value |
| 137 | +SEARCH_SCOPE_USERS = SearchScope.USERS.value |
87 | 138 |
|
88 | 139 | # specific global scope
|
89 |
| -SEARCH_SCOPE_GLOBAL_SNIPPET_TITLES: str = "snippet_titles" |
| 140 | +SEARCH_SCOPE_GLOBAL_SNIPPET_TITLES = SearchScope.GLOBAL_SNIPPET_TITLES.value |
90 | 141 |
|
91 | 142 | # specific project scope
|
92 |
| -SEARCH_SCOPE_PROJECT_NOTES: str = "notes" |
| 143 | +SEARCH_SCOPE_PROJECT_NOTES = SearchScope.PROJECT_NOTES.value |
93 | 144 |
|
94 | 145 | USER_AGENT: str = f"{__title__}/{__version__}"
|
0 commit comments