| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
1 parent c9b5d3b commit d8de4dc
21 files changed
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -49,7 +49,6 @@ class RESTObject(object): | |||
| 49 | 49 | _parent_attrs: Dict[str, Any] | |
| 50 | 50 | _short_print_attr: Optional[str] = None | |
| 51 | 51 | _updated_attrs: Dict[str, Any] | |
| 52 | - _managers: Optional[Iterable[Tuple[str, str]]] = None | ||
| 53 | 52 | manager: "RESTManager" | |
| 54 | 53 | ||
| 55 | 54 | def __init__(self, manager: "RESTManager", attrs: Dict[str, Any]) -> None: | |
@@ -151,10 +150,19 @@ def __hash__(self) -> int: | |||
| 151 | 150 | return hash(self.get_id()) | |
| 152 | 151 | ||
| 153 | 152 | def _create_managers(self) -> None: | |
| 154 | - if self._managers is None: | ||
| 155 | - return | ||
| 156 | - | ||
| 157 | - for attr, cls_name in self._managers: | ||
| 153 | + # NOTE(jlvillal): We are creating our managers by looking at the class | ||
| 154 | + # annotations. If an attribute is annotated as being a *Manager type | ||
| 155 | + # then we create the manager and assign it to the attribute. | ||
| 156 | + for attr, annotation in sorted(self.__annotations__.items()): | ||
| 157 | + if not isinstance(annotation, (type, str)): | ||
| 158 | + continue | ||
| 159 | + if isinstance(annotation, type): | ||
| 160 | + cls_name = annotation.__name__ | ||
| 161 | + else: | ||
| 162 | + cls_name = annotation | ||
| 163 | + # All *Manager classes are used except for the base "RESTManager" class | ||
| 164 | + if cls_name == "RESTManager" or not cls_name.endswith("Manager"): | ||
| 165 | + continue | ||
| 158 | 166 | cls = getattr(self._module, cls_name) | |
| 159 | 167 | manager = cls(self.manager.gitlab, parent=self) | |
| 160 | 168 | # Since we have our own __setattr__ method, we can't use setattr() | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -27,7 +27,6 @@ class GroupBoardListManager(CRUDMixin, RESTManager): | |||
| 27 | 27 | ||
| 28 | 28 | class GroupBoard(SaveMixin, ObjectDeleteMixin, RESTObject): | |
| 29 | 29 | lists: GroupBoardListManager | |
| 30 | - _managers = (("lists", "GroupBoardListManager"),) | ||
| 31 | 30 | ||
| 32 | 31 | ||
| 33 | 32 | class GroupBoardManager(CRUDMixin, RESTManager): | |
@@ -51,7 +50,6 @@ class ProjectBoardListManager(CRUDMixin, RESTManager): | |||
| 51 | 50 | ||
| 52 | 51 | class ProjectBoard(SaveMixin, ObjectDeleteMixin, RESTObject): | |
| 53 | 52 | lists: ProjectBoardListManager | |
| 54 | - _managers = (("lists", "ProjectBoardListManager"),) | ||
| 55 | 53 | ||
| 56 | 54 | ||
| 57 | 55 | class ProjectBoardManager(CRUDMixin, RESTManager): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -21,11 +21,6 @@ class ProjectCommit(RESTObject): | |||
| 21 | 21 | comments: "ProjectCommitCommentManager" | |
| 22 | 22 | discussions: ProjectCommitDiscussionManager | |
| 23 | 23 | statuses: "ProjectCommitStatusManager" | |
| 24 | - _managers = ( | ||
| 25 | - ("comments", "ProjectCommitCommentManager"), | ||
| 26 | - ("discussions", "ProjectCommitDiscussionManager"), | ||
| 27 | - ("statuses", "ProjectCommitStatusManager"), | ||
| 28 | - ) | ||
| 29 | 24 | ||
| 30 | 25 | @cli.register_custom_action("ProjectCommit") | |
| 31 | 26 | @exc.on_http_error(exc.GitlabGetError) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -13,7 +13,6 @@ | |||
| 13 | 13 | ||
| 14 | 14 | class ProjectRegistryRepository(ObjectDeleteMixin, RESTObject): | |
| 15 | 15 | tags: "ProjectRegistryTagManager" | |
| 16 | - _managers = (("tags", "ProjectRegistryTagManager"),) | ||
| 17 | 16 | ||
| 18 | 17 | ||
| 19 | 18 | class ProjectRegistryRepositoryManager(DeleteMixin, ListMixin, RESTManager): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -11,7 +11,6 @@ | |||
| 11 | 11 | ||
| 12 | 12 | class ProjectDeployment(SaveMixin, RESTObject): | |
| 13 | 13 | mergerequests: ProjectDeploymentMergeRequestManager | |
| 14 | - _managers = (("mergerequests", "ProjectDeploymentMergeRequestManager"),) | ||
| 15 | 14 | ||
| 16 | 15 | ||
| 17 | 16 | class ProjectDeploymentManager(RetrieveMixin, CreateMixin, UpdateMixin, RESTManager): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -22,7 +22,6 @@ | |||
| 22 | 22 | ||
| 23 | 23 | class ProjectCommitDiscussion(RESTObject): | |
| 24 | 24 | notes: ProjectCommitDiscussionNoteManager | |
| 25 | - _managers = (("notes", "ProjectCommitDiscussionNoteManager"),) | ||
| 26 | 25 | ||
| 27 | 26 | ||
| 28 | 27 | class ProjectCommitDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): | |
@@ -34,7 +33,6 @@ class ProjectCommitDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): | |||
| 34 | 33 | ||
| 35 | 34 | class ProjectIssueDiscussion(RESTObject): | |
| 36 | 35 | notes: ProjectIssueDiscussionNoteManager | |
| 37 | - _managers = (("notes", "ProjectIssueDiscussionNoteManager"),) | ||
| 38 | 36 | ||
| 39 | 37 | ||
| 40 | 38 | class ProjectIssueDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): | |
@@ -46,7 +44,6 @@ class ProjectIssueDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): | |||
| 46 | 44 | ||
| 47 | 45 | class ProjectMergeRequestDiscussion(SaveMixin, RESTObject): | |
| 48 | 46 | notes: ProjectMergeRequestDiscussionNoteManager | |
| 49 | - _managers = (("notes", "ProjectMergeRequestDiscussionNoteManager"),) | ||
| 50 | 47 | ||
| 51 | 48 | ||
| 52 | 49 | class ProjectMergeRequestDiscussionManager( | |
@@ -63,7 +60,6 @@ class ProjectMergeRequestDiscussionManager( | |||
| 63 | 60 | ||
| 64 | 61 | class ProjectSnippetDiscussion(RESTObject): | |
| 65 | 62 | notes: ProjectSnippetDiscussionNoteManager | |
| 66 | - _managers = (("notes", "ProjectSnippetDiscussionNoteManager"),) | ||
| 67 | 63 | ||
| 68 | 64 | ||
| 69 | 65 | class ProjectSnippetDiscussionManager(RetrieveMixin, CreateMixin, RESTManager): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -26,10 +26,6 @@ class GroupEpic(ObjectDeleteMixin, SaveMixin, RESTObject): | |||
| 26 | 26 | ||
| 27 | 27 | issues: "GroupEpicIssueManager" | |
| 28 | 28 | resourcelabelevents: GroupEpicResourceLabelEventManager | |
| 29 | - _managers = ( | ||
| 30 | - ("issues", "GroupEpicIssueManager"), | ||
| 31 | - ("resourcelabelevents", "GroupEpicResourceLabelEventManager"), | ||
| 32 | - ) | ||
| 33 | 29 | ||
| 34 | 30 | ||
| 35 | 31 | class GroupEpicManager(CRUDMixin, RESTManager): | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -71,35 +71,6 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject): | |||
| 71 | 71 | subgroups: "GroupSubgroupManager" | |
| 72 | 72 | variables: GroupVariableManager | |
| 73 | 73 | wikis: GroupWikiManager | |
| 74 | - _managers = ( | ||
| 75 | - ("accessrequests", "GroupAccessRequestManager"), | ||
| 76 | - ("audit_events", "GroupAuditEventManager"), | ||
| 77 | - ("badges", "GroupBadgeManager"), | ||
| 78 | - ("billable_members", "GroupBillableMemberManager"), | ||
| 79 | - ("boards", "GroupBoardManager"), | ||
| 80 | - ("customattributes", "GroupCustomAttributeManager"), | ||
| 81 | - ("descendant_groups", "GroupDescendantGroupManager"), | ||
| 82 | - ("exports", "GroupExportManager"), | ||
| 83 | - ("epics", "GroupEpicManager"), | ||
| 84 | - ("hooks", "GroupHookManager"), | ||
| 85 | - ("imports", "GroupImportManager"), | ||
| 86 | - ("issues", "GroupIssueManager"), | ||
| 87 | - ("issues_statistics", "GroupIssuesStatisticsManager"), | ||
| 88 | - ("labels", "GroupLabelManager"), | ||
| 89 | - ("members", "GroupMemberManager"), | ||
| 90 | - ("members_all", "GroupMemberAllManager"), | ||
| 91 | - ("mergerequests", "GroupMergeRequestManager"), | ||
| 92 | - ("milestones", "GroupMilestoneManager"), | ||
| 93 | - ("notificationsettings", "GroupNotificationSettingsManager"), | ||
| 94 | - ("packages", "GroupPackageManager"), | ||
| 95 | - ("projects", "GroupProjectManager"), | ||
| 96 | - ("runners", "GroupRunnerManager"), | ||
| 97 | - ("subgroups", "GroupSubgroupManager"), | ||
| 98 | - ("variables", "GroupVariableManager"), | ||
| 99 | - ("clusters", "GroupClusterManager"), | ||
| 100 | - ("deploytokens", "GroupDeployTokenManager"), | ||
| 101 | - ("wikis", "GroupWikiManager"), | ||
| 102 | - ) | ||
| 103 | 74 | ||
| 104 | 75 | @cli.register_custom_action("Group", ("to_project_id",)) | |
| 105 | 76 | @exc.on_http_error(exc.GitlabTransferProjectError) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -113,15 +113,6 @@ class ProjectIssue( | |||
| 113 | 113 | resourcelabelevents: ProjectIssueResourceLabelEventManager | |
| 114 | 114 | resourcemilestoneevents: ProjectIssueResourceMilestoneEventManager | |
| 115 | 115 | resourcestateevents: ProjectIssueResourceStateEventManager | |
| 116 | - _managers = ( | ||
| 117 | - ("awardemojis", "ProjectIssueAwardEmojiManager"), | ||
| 118 | - ("discussions", "ProjectIssueDiscussionManager"), | ||
| 119 | - ("links", "ProjectIssueLinkManager"), | ||
| 120 | - ("notes", "ProjectIssueNoteManager"), | ||
| 121 | - ("resourcelabelevents", "ProjectIssueResourceLabelEventManager"), | ||
| 122 | - ("resourcemilestoneevents", "ProjectIssueResourceMilestoneEventManager"), | ||
| 123 | - ("resourcestateevents", "ProjectIssueResourceStateEventManager"), | ||
| 124 | - ) | ||
| 125 | 116 | ||
| 126 | 117 | @cli.register_custom_action("ProjectIssue", ("to_project_id",)) | |
| 127 | 118 | @exc.on_http_error(exc.GitlabUpdateError) | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
@@ -45,7 +45,6 @@ class GroupBillableMember(ObjectDeleteMixin, RESTObject): | |||
| 45 | 45 | _short_print_attr = "username" | |
| 46 | 46 | ||
| 47 | 47 | memberships: "GroupBillableMemberMembershipManager" | |
| 48 | - _managers = (("memberships", "GroupBillableMemberMembershipManager"),) | ||
| 49 | 48 | ||
| 50 | 49 | ||
| 51 | 50 | class GroupBillableMemberManager(ListMixin, DeleteMixin, RESTManager): | |
| Back | FazBrowse Home | New Git URL |
0 commit comments