summaryrefslogtreecommitdiff
path: root/gitlab/v4/objects
diff options
context:
space:
mode:
Diffstat (limited to 'gitlab/v4/objects')
-rw-r--r--gitlab/v4/objects/__init__.py1
-rw-r--r--gitlab/v4/objects/projects.py3
-rw-r--r--gitlab/v4/objects/releases.py36
-rw-r--r--gitlab/v4/objects/tags.py13
4 files changed, 39 insertions, 14 deletions
diff --git a/gitlab/v4/objects/__init__.py b/gitlab/v4/objects/__init__.py
index 9f91f53..8a2ed7c 100644
--- a/gitlab/v4/objects/__init__.py
+++ b/gitlab/v4/objects/__init__.py
@@ -56,6 +56,7 @@ from .pages import *
from .pipelines import *
from .projects import *
from .push_rules import *
+from .releases import *
from .runners import *
from .services import *
from .settings import *
diff --git a/gitlab/v4/objects/projects.py b/gitlab/v4/objects/projects.py
index 722b9ea..b354af9 100644
--- a/gitlab/v4/objects/projects.py
+++ b/gitlab/v4/objects/projects.py
@@ -33,6 +33,7 @@ from .packages import ProjectPackageManager
from .pages import ProjectPagesDomainManager
from .pipelines import ProjectPipelineManager, ProjectPipelineScheduleManager
from .push_rules import ProjectPushRulesManager
+from .releases import ProjectReleaseManager
from .runners import ProjectRunnerManager
from .services import ProjectServiceManager
from .snippets import ProjectSnippetManager
@@ -40,7 +41,7 @@ from .statistics import (
ProjectAdditionalStatisticsManager,
ProjectIssuesStatisticsManager,
)
-from .tags import ProjectProtectedTagManager, ProjectReleaseManager, ProjectTagManager
+from .tags import ProjectProtectedTagManager, ProjectTagManager
from .triggers import ProjectTriggerManager
from .users import ProjectUserManager
from .variables import ProjectVariableManager
diff --git a/gitlab/v4/objects/releases.py b/gitlab/v4/objects/releases.py
new file mode 100644
index 0000000..d9112e4
--- /dev/null
+++ b/gitlab/v4/objects/releases.py
@@ -0,0 +1,36 @@
+from gitlab import cli
+from gitlab import exceptions as exc
+from gitlab.base import * # noqa
+from gitlab.mixins import * # noqa
+
+
+__all__ = [
+ "ProjectRelease",
+ "ProjectReleaseManager",
+ "ProjectReleaseLink",
+ "ProjectReleaseLinkManager",
+]
+
+
+class ProjectRelease(RESTObject):
+ _id_attr = "tag_name"
+ _managers = (("links", "ProjectReleaseLinkManager"),)
+
+
+class ProjectReleaseManager(NoUpdateMixin, RESTManager):
+ _path = "/projects/%(project_id)s/releases"
+ _obj_cls = ProjectRelease
+ _from_parent_attrs = {"project_id": "id"}
+ _create_attrs = (("name", "tag_name", "description"), ("ref", "assets"))
+
+
+class ProjectReleaseLink(RESTObject, ObjectDeleteMixin, SaveMixin):
+ pass
+
+
+class ProjectReleaseLinkManager(CRUDMixin, RESTManager):
+ _path = "/projects/%(project_id)s/releases/%(tag_name)s/assets/links"
+ _obj_cls = ProjectReleaseLink
+ _from_parent_attrs = {"project_id": "project_id", "tag_name": "tag_name"}
+ _create_attrs = (("name", "url"), ("filepath", "link_type"))
+ _update_attrs = ((), ("name", "url", "filepath", "link_type"))
diff --git a/gitlab/v4/objects/tags.py b/gitlab/v4/objects/tags.py
index c4d60db..1f333c5 100644
--- a/gitlab/v4/objects/tags.py
+++ b/gitlab/v4/objects/tags.py
@@ -9,8 +9,6 @@ __all__ = [
"ProjectTagManager",
"ProjectProtectedTag",
"ProjectProtectedTagManager",
- "ProjectRelease",
- "ProjectReleaseManager",
]
@@ -71,14 +69,3 @@ class ProjectProtectedTagManager(NoUpdateMixin, RESTManager):
_obj_cls = ProjectProtectedTag
_from_parent_attrs = {"project_id": "id"}
_create_attrs = (("name",), ("create_access_level",))
-
-
-class ProjectRelease(RESTObject):
- _id_attr = "tag_name"
-
-
-class ProjectReleaseManager(NoUpdateMixin, RESTManager):
- _path = "/projects/%(project_id)s/releases"
- _obj_cls = ProjectRelease
- _from_parent_attrs = {"project_id": "id"}
- _create_attrs = (("name", "tag_name", "description"), ("ref", "assets"))