|
19 | 19 | from __future__ import print_function
|
20 | 20 | from __future__ import division
|
21 | 21 | from __future__ import absolute_import
|
| 22 | +import importlib |
22 | 23 | import inspect
|
23 | 24 | import itertools
|
24 | 25 | import json
|
|
31 | 32 | import gitlab.config
|
32 | 33 | from gitlab.const import * # noqa
|
33 | 34 | from gitlab.exceptions import * # noqa
|
34 |
| -from gitlab.objects import * # noqa |
| 35 | +from gitlab.v3.objects import * # noqa |
35 | 36 |
|
36 | 37 | __title__ = 'python-gitlab'
|
37 | 38 | __version__ = '0.20'
|
@@ -91,40 +92,43 @@ def __init__(self, url, private_token=None, email=None, password=None,
|
91 | 92 | #: Create a session object for requests
|
92 | 93 | self.session = requests.Session()
|
93 | 94 |
|
94 |
| - self.broadcastmessages = BroadcastMessageManager(self) |
95 |
| - self.keys = KeyManager(self) |
96 |
| - self.deploykeys = DeployKeyManager(self) |
97 |
| - self.gitlabciymls = GitlabciymlManager(self) |
98 |
| - self.gitignores = GitignoreManager(self) |
99 |
| - self.groups = GroupManager(self) |
100 |
| - self.hooks = HookManager(self) |
101 |
| - self.issues = IssueManager(self) |
102 |
| - self.licenses = LicenseManager(self) |
103 |
| - self.namespaces = NamespaceManager(self) |
104 |
| - self.notificationsettings = NotificationSettingsManager(self) |
105 |
| - self.projects = ProjectManager(self) |
106 |
| - self.runners = RunnerManager(self) |
107 |
| - self.settings = ApplicationSettingsManager(self) |
108 |
| - self.sidekiq = SidekiqManager(self) |
109 |
| - self.snippets = SnippetManager(self) |
110 |
| - self.users = UserManager(self) |
111 |
| - self.teams = TeamManager(self) |
112 |
| - self.todos = TodoManager(self) |
| 95 | + objects = importlib.import_module('gitlab.v%s.objects' % |
| 96 | + self._api_version) |
| 97 | + |
| 98 | + self.broadcastmessages = objects.BroadcastMessageManager(self) |
| 99 | + self.keys = objects.KeyManager(self) |
| 100 | + self.deploykeys = objects.DeployKeyManager(self) |
| 101 | + self.gitlabciymls = objects.GitlabciymlManager(self) |
| 102 | + self.gitignores = objects.GitignoreManager(self) |
| 103 | + self.groups = objects.GroupManager(self) |
| 104 | + self.hooks = objects.HookManager(self) |
| 105 | + self.issues = objects.IssueManager(self) |
| 106 | + self.licenses = objects.LicenseManager(self) |
| 107 | + self.namespaces = objects.NamespaceManager(self) |
| 108 | + self.notificationsettings = objects.NotificationSettingsManager(self) |
| 109 | + self.projects = objects.ProjectManager(self) |
| 110 | + self.runners = objects.RunnerManager(self) |
| 111 | + self.settings = objects.ApplicationSettingsManager(self) |
| 112 | + self.sidekiq = objects.SidekiqManager(self) |
| 113 | + self.snippets = objects.SnippetManager(self) |
| 114 | + self.users = objects.UserManager(self) |
| 115 | + self.teams = objects.TeamManager(self) |
| 116 | + self.todos = objects.TodoManager(self) |
113 | 117 |
|
114 | 118 | # build the "submanagers"
|
115 |
| - for parent_cls in six.itervalues(globals()): |
| 119 | + for parent_cls in six.itervalues(vars(objects)): |
116 | 120 | if (not inspect.isclass(parent_cls)
|
117 |
| - or not issubclass(parent_cls, GitlabObject) |
118 |
| - or parent_cls == CurrentUser): |
| 121 | + or not issubclass(parent_cls, objects.GitlabObject) |
| 122 | + or parent_cls == objects.CurrentUser): |
119 | 123 | continue
|
120 | 124 |
|
121 | 125 | if not parent_cls.managers:
|
122 | 126 | continue
|
123 | 127 |
|
124 |
| - for var, cls, attrs in parent_cls.managers: |
| 128 | + for var, cls_name, attrs in parent_cls.managers: |
125 | 129 | var_name = '%s_%s' % (self._cls_to_manager_prefix(parent_cls),
|
126 | 130 | var)
|
127 |
| - manager = cls(self) |
| 131 | + manager = getattr(objects, cls_name)(self) |
128 | 132 | setattr(self, var_name, manager)
|
129 | 133 |
|
130 | 134 | @property
|
|
0 commit comments