| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent 92180e4 commit 81e1c13
3 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -45,9 +45,17 @@ def _build_doc(self, tmpl, **kwargs): | |||
| 45 | 45 | def __init__(self, *args, **kwargs): | |
| 46 | 46 | super(GitlabDocstring, self).__init__(*args, **kwargs) | |
| 47 | 47 | ||
| 48 | - if hasattr(self._obj, 'obj_cls') and self._obj.obj_cls is not None: | ||
| 49 | - self._parsed_lines = self._build_doc('manager_tmpl.j2', | ||
| 50 | - cls=self._obj.obj_cls) | ||
| 48 | + if getattr(self._obj, '__name__', None) == 'Gitlab': | ||
| 49 | + mgrs = [] | ||
| 50 | + gl = self._obj('http://dummy', private_token='dummy') | ||
| 51 | + for item in vars(gl).items(): | ||
| 52 | + if hasattr(item[1], 'obj_cls'): | ||
| 53 | + mgrs.append(item) | ||
| 54 | + self._parsed_lines.extend(self._build_doc('gl_tmpl.j2', | ||
| 55 | + mgrs=sorted(mgrs))) | ||
| 56 | + elif hasattr(self._obj, 'obj_cls') and self._obj.obj_cls is not None: | ||
| 57 | + self._parsed_lines.extend(self._build_doc('manager_tmpl.j2', | ||
| 58 | + cls=self._obj.obj_cls)) | ||
| 51 | 59 | elif hasattr(self._obj, 'canUpdate') and self._obj.canUpdate: | |
| 52 | - self._parsed_lines = self._build_doc('object_tmpl.j2', | ||
| 53 | - obj=self._obj) | ||
| 60 | + self._parsed_lines.extend(self._build_doc('object_tmpl.j2', | ||
| 61 | + obj=self._obj)) | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -0,0 +1,5 @@ | |||
| 1 | + {% for attr, mgr in mgrs %} | ||
| 2 | + .. attribute:: {{ attr }} | ||
| 3 | + | ||
| 4 | + {{ mgr.__class__ | classref() }} manager for {{ mgr.obj_cls | classref() }} objects. | ||
| 5 | + {% endfor %} | ||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -22,6 +22,7 @@ | |||
| 22 | 22 | import inspect | |
| 23 | 23 | import itertools | |
| 24 | 24 | import json | |
| 25 | + import re | ||
| 25 | 26 | import warnings | |
| 26 | 27 | ||
| 27 | 28 | import requests | |
@@ -64,86 +65,6 @@ class Gitlab(object): | |||
| 64 | 65 | timeout (float): Timeout to use for requests to the GitLab server. | |
| 65 | 66 | http_username (str): Username for HTTP authentication | |
| 66 | 67 | http_password (str): Password for HTTP authentication | |
| 67 | - | ||
| 68 | - Attributes: | ||
| 69 | - user_emails (UserEmailManager): Manager for GitLab users' emails. | ||
| 70 | - user_keys (UserKeyManager): Manager for GitLab users' SSH keys. | ||
| 71 | - users (UserManager): Manager for GitLab users | ||
| 72 | - broadcastmessages (BroadcastMessageManager): Manager for broadcast | ||
| 73 | - messages | ||
| 74 | - keys (DeployKeyManager): Manager for deploy keys | ||
| 75 | - group_accessrequests (GroupAccessRequestManager): Manager for GitLab | ||
| 76 | - groups access requests | ||
| 77 | - group_issues (GroupIssueManager): Manager for GitLab group issues | ||
| 78 | - group_projects (GroupProjectManager): Manager for GitLab group projects | ||
| 79 | - group_members (GroupMemberManager): Manager for GitLab group members | ||
| 80 | - groups (GroupManager): Manager for GitLab members | ||
| 81 | - hooks (HookManager): Manager for GitLab hooks | ||
| 82 | - issues (IssueManager): Manager for GitLab issues | ||
| 83 | - licenses (LicenseManager): Manager for licenses | ||
| 84 | - namespaces (NamespaceManager): Manager for namespaces | ||
| 85 | - notificationsettings (NotificationSettingsManager): Manager for global | ||
| 86 | - notification settings | ||
| 87 | - project_accessrequests (ProjectAccessRequestManager): Manager for | ||
| 88 | - GitLab projects access requests | ||
| 89 | - project_boards (ProjectBoardManager): Manager for GitLab projects | ||
| 90 | - boards | ||
| 91 | - project_board_lists (ProjectBoardListManager): Manager for GitLab | ||
| 92 | - project board lists | ||
| 93 | - project_branches (ProjectBranchManager): Manager for GitLab projects | ||
| 94 | - branches | ||
| 95 | - project_builds (ProjectBuildManager): Manager for GitLab projects | ||
| 96 | - builds | ||
| 97 | - project_commits (ProjectCommitManager): Manager for GitLab projects | ||
| 98 | - commits | ||
| 99 | - project_commit_comments (ProjectCommitCommentManager): Manager for | ||
| 100 | - GitLab projects commits comments | ||
| 101 | - project_commit_statuses (ProjectCommitStatusManager): Manager for | ||
| 102 | - GitLab projects commits statuses | ||
| 103 | - project_deployments (ProjectDeploymentManager): Manager for GitLab | ||
| 104 | - projects deployments | ||
| 105 | - project_keys (ProjectKeyManager): Manager for GitLab projects keys | ||
| 106 | - project_environments (ProjectEnvironmentManager): Manager for GitLab | ||
| 107 | - projects environments | ||
| 108 | - project_events (ProjectEventManager): Manager for GitLab projects | ||
| 109 | - events | ||
| 110 | - project_forks (ProjectForkManager): Manager for GitLab projects forks | ||
| 111 | - project_hooks (ProjectHookManager): Manager for GitLab projects hooks | ||
| 112 | - project_issue_notes (ProjectIssueNoteManager): Manager for GitLab notes | ||
| 113 | - on issues | ||
| 114 | - project_issues (ProjectIssueManager): Manager for GitLab projects | ||
| 115 | - issues | ||
| 116 | - project_members (ProjectMemberManager): Manager for GitLab projects | ||
| 117 | - members | ||
| 118 | - project_notes (ProjectNoteManager): Manager for GitLab projects notes | ||
| 119 | - project_pipelines (ProjectPipelineManager): Manager for GitLab projects | ||
| 120 | - pipelines | ||
| 121 | - project_tags (ProjectTagManager): Manager for GitLab projects tags | ||
| 122 | - project_mergerequest_notes (ProjectMergeRequestNoteManager): Manager | ||
| 123 | - for GitLab notes on merge requests | ||
| 124 | - project_mergerequests (ProjectMergeRequestManager): Manager for GitLab | ||
| 125 | - projects merge requests | ||
| 126 | - project_milestones (ProjectMilestoneManager): Manager for GitLab | ||
| 127 | - projects milestones | ||
| 128 | - project_labels (ProjectLabelManager): Manager for GitLab projects | ||
| 129 | - labels | ||
| 130 | - project_files (ProjectFileManager): Manager for GitLab projects files | ||
| 131 | - project_services (ProjectServiceManager): Manager for the GitLab | ||
| 132 | - projects services | ||
| 133 | - project_snippet_notes (ProjectSnippetNoteManager): Manager for GitLab | ||
| 134 | - note on snippets | ||
| 135 | - project_snippets (ProjectSnippetManager): Manager for GitLab projects | ||
| 136 | - snippets | ||
| 137 | - project_triggers (ProjectTriggerManager): Manager for build triggers | ||
| 138 | - project_variables (ProjectVariableManager): Manager for build variables | ||
| 139 | - user_projects (UserProjectManager): Manager for GitLab projects users | ||
| 140 | - projects (ProjectManager): Manager for GitLab projects | ||
| 141 | - runners (RunnerManager): Manager for the CI runners | ||
| 142 | - settings (ApplicationSettingsManager): manager for the Gitlab settings | ||
| 143 | - team_members (TeamMemberManager): Manager for GitLab teams members | ||
| 144 | - team_projects (TeamProjectManager): Manager for GitLab teams projects | ||
| 145 | - teams (TeamManager): Manager for GitLab teams | ||
| 146 | - todos (TodoManager): Manager for user todos | ||
| 147 | 68 | """ | |
| 148 | 69 | ||
| 149 | 70 | def __init__(self, url, private_token=None, email=None, password=None, | |
@@ -168,60 +89,45 @@ def __init__(self, url, private_token=None, email=None, password=None, | |||
| 168 | 89 | #: Create a session object for requests | |
| 169 | 90 | self.session = requests.Session() | |
| 170 | 91 | ||
| 171 | - self.settings = ApplicationSettingsManager(self) | ||
| 172 | - self.user_emails = UserEmailManager(self) | ||
| 173 | - self.user_keys = UserKeyManager(self) | ||
| 174 | - self.users = UserManager(self) | ||
| 175 | 92 | self.broadcastmessages = BroadcastMessageManager(self) | |
| 176 | 93 | self.keys = KeyManager(self) | |
| 177 | - self.group_accessrequests = GroupAccessRequestManager(self) | ||
| 178 | - self.group_issues = GroupIssueManager(self) | ||
| 179 | - self.group_projects = GroupProjectManager(self) | ||
| 180 | - self.group_members = GroupMemberManager(self) | ||
| 181 | 94 | self.groups = GroupManager(self) | |
| 182 | 95 | self.hooks = HookManager(self) | |
| 183 | 96 | self.issues = IssueManager(self) | |
| 184 | 97 | self.licenses = LicenseManager(self) | |
| 185 | 98 | self.namespaces = NamespaceManager(self) | |
| 186 | 99 | self.notificationsettings = NotificationSettingsManager(self) | |
| 187 | - self.project_accessrequests = ProjectAccessRequestManager(self) | ||
| 188 | - self.project_boards = ProjectBoardManager(self) | ||
| 189 | - self.project_board_listss = ProjectBoardListManager(self) | ||
| 190 | - self.project_branches = ProjectBranchManager(self) | ||
| 191 | - self.project_builds = ProjectBuildManager(self) | ||
| 192 | - self.project_commits = ProjectCommitManager(self) | ||
| 193 | - self.project_commit_comments = ProjectCommitCommentManager(self) | ||
| 194 | - self.project_commit_statuses = ProjectCommitStatusManager(self) | ||
| 195 | - self.project_deployments = ProjectDeploymentManager(self) | ||
| 196 | - self.project_keys = ProjectKeyManager(self) | ||
| 197 | - self.project_environments = ProjectEnvironmentManager(self) | ||
| 198 | - self.project_events = ProjectEventManager(self) | ||
| 199 | - self.project_forks = ProjectForkManager(self) | ||
| 200 | - self.project_hooks = ProjectHookManager(self) | ||
| 201 | - self.project_issue_notes = ProjectIssueNoteManager(self) | ||
| 202 | - self.project_issues = ProjectIssueManager(self) | ||
| 203 | - self.project_members = ProjectMemberManager(self) | ||
| 204 | - self.project_notes = ProjectNoteManager(self) | ||
| 205 | - self.project_pipelines = ProjectPipelineManager(self) | ||
| 206 | - self.project_tags = ProjectTagManager(self) | ||
| 207 | - self.project_mergerequest_notes = ProjectMergeRequestNoteManager(self) | ||
| 208 | - self.project_mergerequests = ProjectMergeRequestManager(self) | ||
| 209 | - self.project_milestones = ProjectMilestoneManager(self) | ||
| 210 | - self.project_labels = ProjectLabelManager(self) | ||
| 211 | - self.project_files = ProjectFileManager(self) | ||
| 212 | - self.project_services = ProjectServiceManager(self) | ||
| 213 | - self.project_snippet_notes = ProjectSnippetNoteManager(self) | ||
| 214 | - self.project_snippets = ProjectSnippetManager(self) | ||
| 215 | - self.project_triggers = ProjectTriggerManager(self) | ||
| 216 | - self.project_variables = ProjectVariableManager(self) | ||
| 217 | - self.user_projects = UserProjectManager(self) | ||
| 218 | 100 | self.projects = ProjectManager(self) | |
| 219 | 101 | self.runners = RunnerManager(self) | |
| 220 | - self.team_members = TeamMemberManager(self) | ||
| 221 | - self.team_projects = TeamProjectManager(self) | ||
| 102 | + self.settings = ApplicationSettingsManager(self) | ||
| 103 | + self.sidekiq = SidekiqManager(self) | ||
| 104 | + self.users = UserManager(self) | ||
| 222 | 105 | self.teams = TeamManager(self) | |
| 223 | 106 | self.todos = TodoManager(self) | |
| 224 | - self.sidekiq = SidekiqManager(self) | ||
| 107 | + | ||
| 108 | + # build the "submanagers" | ||
| 109 | + for parent_cls in six.itervalues(globals()): | ||
| 110 | + if (not inspect.isclass(parent_cls) | ||
| 111 | + or not issubclass(parent_cls, GitlabObject) | ||
| 112 | + or parent_cls == CurrentUser): | ||
| 113 | + continue | ||
| 114 | + | ||
| 115 | + if not parent_cls.managers: | ||
| 116 | + continue | ||
| 117 | + | ||
| 118 | + for var, cls, attrs in parent_cls.managers: | ||
| 119 | + var_name = '%s_%s' % (self._cls_to_manager_prefix(parent_cls), | ||
| 120 | + var) | ||
| 121 | + manager = cls(self) | ||
| 122 | + setattr(self, var_name, manager) | ||
| 123 | + | ||
| 124 | + def _cls_to_manager_prefix(self, cls): | ||
| 125 | + # Manage bad naming decisions | ||
| 126 | + camel_case = (cls.__name__ | ||
| 127 | + .replace('NotificationSettings', 'Notificationsettings') | ||
| 128 | + .replace('MergeRequest', 'Mergerequest') | ||
| 129 | + .replace('AccessRequest', 'Accessrequest')) | ||
| 130 | + return re.sub(r'(.)([A-Z])', r'\1_\2', camel_case).lower() | ||
| 225 | 131 | ||
| 226 | 132 | @staticmethod | |
| 227 | 133 | def from_config(gitlab_id=None, config_files=None): | |
| Back | FazBrowse Home | New Git URL |
0 commit comments