@@ -833,6 +833,55 @@ class GroupIssueManager(ListMixin, RESTManager):
833
833
_types = {"labels" : types .ListAttribute }
834
834
835
835
836
+ class GroupLabel (SubscribableMixin , SaveMixin , ObjectDeleteMixin , RESTObject ):
837
+ _id_attr = "name"
838
+
839
+ # Update without ID, but we need an ID to get from list.
840
+ @exc .on_http_error (exc .GitlabUpdateError )
841
+ def save (self , ** kwargs ):
842
+ """Saves the changes made to the object to the server.
843
+
844
+ The object is updated to match what the server returns.
845
+
846
+ Args:
847
+ **kwargs: Extra options to send to the server (e.g. sudo)
848
+
849
+ Raises:
850
+ GitlabAuthenticationError: If authentication is not correct.
851
+ GitlabUpdateError: If the server cannot perform the request.
852
+ """
853
+ updated_data = self ._get_updated_data ()
854
+
855
+ # call the manager
856
+ server_data = self .manager .update (None , updated_data , ** kwargs )
857
+ self ._update_attrs (server_data )
858
+
859
+
860
+ class GroupLabelManager (
861
+ ListMixin , CreateMixin , UpdateMixin , DeleteMixin , RESTManager
862
+ ):
863
+ _path = "/groups/%(group_id)s/labels"
864
+ _obj_cls = GroupLabel
865
+ _from_parent_attrs = {"group_id" : "id" }
866
+ _create_attrs = (("name" , "color" ), ("description" , "priority" ))
867
+ _update_attrs = (("name" ,), ("new_name" , "color" , "description" , "priority" ))
868
+
869
+ # Delete without ID.
870
+ @exc .on_http_error (exc .GitlabDeleteError )
871
+ def delete (self , name , ** kwargs ):
872
+ """Delete a Label on the server.
873
+
874
+ Args:
875
+ name: The name of the label
876
+ **kwargs: Extra options to send to the server (e.g. sudo)
877
+
878
+ Raises:
879
+ GitlabAuthenticationError: If authentication is not correct
880
+ GitlabDeleteError: If the server cannot perform the request
881
+ """
882
+ self .gitlab .http_delete (self .path , query_data = {"name" : name }, ** kwargs )
883
+
884
+
836
885
class GroupMember (SaveMixin , ObjectDeleteMixin , RESTObject ):
837
886
_short_print_attr = "username"
838
887
@@ -1042,6 +1091,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject):
1042
1091
("customattributes" , "GroupCustomAttributeManager" ),
1043
1092
("epics" , "GroupEpicManager" ),
1044
1093
("issues" , "GroupIssueManager" ),
1094
+ ("labels" , "GroupLabelManager" ),
1045
1095
("members" , "GroupMemberManager" ),
1046
1096
("mergerequests" , "GroupMergeRequestManager" ),
1047
1097
("milestones" , "GroupMilestoneManager" ),
0 commit comments