Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit9412a5d

Browse files
author
Gauvain Pocentek
committed
Add support for group badges
Also consolidate project/group badges tests, and add some docsFixes#469
1 parent01a41ef commit9412a5d

File tree

6 files changed

+115
-3
lines changed

6 files changed

+115
-3
lines changed

‎docs/api-objects.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ API examples
77

88
gl_objects/access_requests
99
gl_objects/emojis
10+
gl_objects/badges
1011
gl_objects/branches
1112
gl_objects/protected_branches
1213
gl_objects/messages

‎docs/gl_objects/badges.rst

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
######
2+
Badges
3+
######
4+
5+
Badges can be associated with groups and projects.
6+
7+
Reference
8+
---------
9+
10+
* v4 API:
11+
12+
+:class:`gitlab.v4.objects.GroupBadge`
13+
+:class:`gitlab.v4.objects.GroupBadgeManager`
14+
+:attr:`gitlab.v4.objects.Group.badges`
15+
+:class:`gitlab.v4.objects.ProjectBadge`
16+
+:class:`gitlab.v4.objects.ProjectBadgeManager`
17+
+:attr:`gitlab.v4.objects.Project.badges`
18+
19+
* GitLab API:
20+
21+
+ https://docs.gitlab.com/ce/api/group_badges.html
22+
+ https://docs.gitlab.com/ce/api/project_badges.html
23+
24+
Examples
25+
--------
26+
27+
List badges::
28+
29+
badges = group_or_project.badges.list()
30+
31+
Get ad badge::
32+
33+
badge = group_or_project.badges.get(badge_id)
34+
35+
Create a badge::
36+
37+
badge = group_or_project.badges.create({'link_url': link, 'image_url': image_link})
38+
39+
Update a badge::
40+
41+
badge.image_link = new_link
42+
badge.save()
43+
44+
Delete a badge::
45+
46+
badge.delete()
47+
48+
Render a badge (preview the generate URLs)::
49+
50+
output = group_or_project.badges.render(link, image_link)
51+
print(output['rendered_link_url'])
52+
print(output['rendered_image_url'])

‎gitlab/exceptions.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,10 @@ class GitlabVerifyError(GitlabOperationError):
213213
pass
214214

215215

216+
classGitlabRenderError(GitlabOperationError):
217+
pass
218+
219+
216220
defon_http_error(error):
217221
"""Manage GitlabHttpError exceptions.
218222

‎gitlab/mixins.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,3 +571,27 @@ def participants(self, **kwargs):
571571

572572
path='%s/%s/participants'% (self.manager.path,self.get_id())
573573
returnself.manager.gitlab.http_get(path,**kwargs)
574+
575+
576+
classBadgeRenderMixin(object):
577+
@cli.register_custom_action(('GroupBadgeManager','ProjectBadgeManager'),
578+
('link_url','image_url'))
579+
@exc.on_http_error(exc.GitlabRenderError)
580+
defrender(self,link_url,image_url,**kwargs):
581+
"""Preview link_url and image_url after interpolation.
582+
583+
Args:
584+
link_url (str): URL of the badge link
585+
image_url (str): URL of the badge image
586+
**kwargs: Extra options to send to the server (e.g. sudo)
587+
588+
Raises:
589+
GitlabAuthenticationError: If authentication is not correct
590+
GitlabRenderError: If the rendering failed
591+
592+
Returns:
593+
dict: The rendering properties
594+
"""
595+
path='%s/render'%self.path
596+
data= {'link_url':link_url,'image_url':image_url}
597+
returnself.gitlab.http_get(path,data,**kwargs)

‎gitlab/v4/objects.py

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -555,6 +555,18 @@ class GroupAccessRequestManager(ListMixin, CreateMixin, DeleteMixin,
555555
_from_parent_attrs= {'group_id':'id'}
556556

557557

558+
classGroupBadge(SaveMixin,ObjectDeleteMixin,RESTObject):
559+
pass
560+
561+
562+
classGroupBadgeManager(BadgeRenderMixin,CRUDMixin,RESTManager):
563+
_path='/groups/%(group_id)s/badges'
564+
_obj_cls=GroupBadge
565+
_from_parent_attrs= {'group_id':'id'}
566+
_create_attrs= (('link_url','image_url'),tuple())
567+
_update_attrs= (tuple(), ('link_url','image_url'))
568+
569+
558570
classGroupBoardList(SaveMixin,ObjectDeleteMixin,RESTObject):
559571
pass
560572

@@ -746,6 +758,7 @@ class Group(SaveMixin, ObjectDeleteMixin, RESTObject):
746758
_short_print_attr='name'
747759
_managers= (
748760
('accessrequests','GroupAccessRequestManager'),
761+
('badges','GroupBadgeManager'),
749762
('boards','GroupBoardManager'),
750763
('customattributes','GroupCustomAttributeManager'),
751764
('issues','GroupIssueManager'),
@@ -1398,12 +1411,12 @@ class ProjectBadge(SaveMixin, ObjectDeleteMixin, RESTObject):
13981411
pass
13991412

14001413

1401-
classProjectBadgeManager(CRUDMixin,RESTManager):
1414+
classProjectBadgeManager(BadgeRenderMixin,CRUDMixin,RESTManager):
14021415
_path='/projects/%(project_id)s/badges'
14031416
_obj_cls=ProjectBadge
14041417
_from_parent_attrs= {'project_id':'id'}
14051418
_create_attrs= (('link_url','image_url'),tuple())
1406-
_update_attrs= (('link_url','image_url'),tuple())
1419+
_update_attrs= (tuple(), ('link_url','image_url'))
14071420

14081421

14091422
classProjectEvent(Event):

‎tools/python_test_v4.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,18 @@
274274
settings=group2.notificationsettings.get()
275275
assert(settings.level=='disabled')
276276

277+
# group badges
278+
badge_image='http://example.com'
279+
badge_link='http://example/img.svg'
280+
badge=group2.badges.create({'link_url':badge_link,'image_url':badge_image})
281+
assert(len(group2.badges.list())==1)
282+
badge.image_url='http://another.example.com'
283+
badge.save()
284+
badge=group2.badges.get(badge.id)
285+
assert(badge.image_url=='http://another.example.com')
286+
badge.delete()
287+
assert(len(group2.badges.list())==0)
288+
277289
# group milestones
278290
gm1=group1.milestones.create({'title':'groupmilestone1'})
279291
assert(len(group1.milestones.list())==1)
@@ -656,8 +668,14 @@
656668
# project badges
657669
badge_image='http://example.com'
658670
badge_link='http://example/img.svg'
659-
bp=admin_project.badges.create({'link_url':badge_link,'image_url':badge_image})
671+
badge=admin_project.badges.create({'link_url':badge_link,'image_url':badge_image})
660672
assert(len(admin_project.badges.list())==1)
673+
badge.image_url='http://another.example.com'
674+
badge.save()
675+
badge=admin_project.badges.get(badge.id)
676+
assert(badge.image_url=='http://another.example.com')
677+
badge.delete()
678+
assert(len(admin_project.badges.list())==0)
661679

662680
# project wiki
663681
wiki_content='Wiki page content'

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp