|
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