Skip to content

Commit 6d3450c

Browse files
author
Gauvain Pocentek
committed
Add support for broadcast messages API
1 parent c185fe2 commit 6d3450c

File tree

6 files changed

+96
-0
lines changed

6 files changed

+96
-0
lines changed

docs/api-objects.rst

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ API objects manipulation
1616
gl_objects/issues
1717
gl_objects/labels
1818
gl_objects/licenses
19+
gl_objects/messages
1920
gl_objects/mrs
2021
gl_objects/namespaces
2122
gl_objects/milestones

docs/gl_objects/messages.py

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# list
2+
msgs = gl.broadcastmessages.list()
3+
# end list
4+
5+
# get
6+
msg = gl.broadcastmessages.get(msg_id)
7+
# end get
8+
9+
# create
10+
msg = gl.broadcastmessages.create({'message': 'Important information'})
11+
# end create
12+
13+
# update
14+
msg.font = '#444444'
15+
msg.color = '#999999'
16+
msg.save()
17+
# end update
18+
19+
# delete
20+
gl.broadcastmessages.delete(msg_id)
21+
# or
22+
msg.delete()
23+
# end delete

docs/gl_objects/messages.rst

+46
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
##################
2+
Broadcast messages
3+
##################
4+
5+
You can use broadcast messages to display information on all pages of the
6+
gitlab web UI. You must have administration permissions to manipulate broadcast
7+
messages.
8+
9+
* Object class: :class:`gitlab.objects.BroadcastMessage`
10+
* Manager object: :attr:`gitlab.Gitlab.broadcastmessages`
11+
12+
Examples
13+
--------
14+
15+
List the messages:
16+
17+
.. literalinclude:: messages.py
18+
:start-after: # list
19+
:end-before: # end list
20+
21+
Get a single message:
22+
23+
.. literalinclude:: messages.py
24+
:start-after: # get
25+
:end-before: # end get
26+
27+
Create a message:
28+
29+
.. literalinclude:: messages.py
30+
:start-after: # create
31+
:end-before: # end create
32+
33+
The date format for ``starts_at`` and ``ends_at`` parameters is
34+
``YYYY-MM-ddThh:mm:ssZ``.
35+
36+
Update a message:
37+
38+
.. literalinclude:: messages.py
39+
:start-after: # update
40+
:end-before: # end update
41+
42+
Delete a message:
43+
44+
.. literalinclude:: messages.py
45+
:start-after: # delete
46+
:end-before: # end delete

gitlab/__init__.py

+3
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,8 @@ class Gitlab(object):
6969
user_emails (UserEmailManager): Manager for GitLab users' emails.
7070
user_keys (UserKeyManager): Manager for GitLab users' SSH keys.
7171
users (UserManager): Manager for GitLab users
72+
broadcastmessages (BroadcastMessageManager): Manager for broadcast
73+
messages
7274
keys (DeployKeyManager): Manager for deploy keys
7375
group_accessrequests (GroupAccessRequestManager): Manager for GitLab
7476
groups access requests
@@ -168,6 +170,7 @@ def __init__(self, url, private_token=None, email=None, password=None,
168170
self.user_emails = UserEmailManager(self)
169171
self.user_keys = UserKeyManager(self)
170172
self.users = UserManager(self)
173+
self.broadcastmessages = BroadcastMessageManager(self)
171174
self.keys = KeyManager(self)
172175
self.group_accessrequests = GroupAccessRequestManager(self)
173176
self.group_issues = GroupIssueManager(self)

gitlab/objects.py

+12
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,18 @@ class ApplicationSettingsManager(BaseManager):
728728
obj_cls = ApplicationSettings
729729

730730

731+
class BroadcastMessage(GitlabObject):
732+
_url = '/broadcast_messages'
733+
requiredCreateAttrs = ['message']
734+
optionalCreateAttrs = ['starts_at', 'ends_at', 'color', 'font']
735+
requiredUpdateAttrs = []
736+
optionalUpdateAttrs = ['message', 'starts_at', 'ends_at', 'color', 'font']
737+
738+
739+
class BroadcastMessageManager(BaseManager):
740+
obj_cls = BroadcastMessage
741+
742+
731743
class Key(GitlabObject):
732744
_url = '/deploy_keys'
733745
canGet = 'from_list'

tools/python_test.py

+11
Original file line numberDiff line numberDiff line change
@@ -271,3 +271,14 @@
271271
assert(len(ns) != 0)
272272
ns = gl.namespaces.list(search='root')[0]
273273
assert(ns.kind == 'user')
274+
275+
# broadcast messages
276+
msg = gl.broadcastmessages.create({'message': 'this is the message'})
277+
msg.color = '#444444'
278+
msg.save()
279+
msg = gl.broadcastmessages.list()[0]
280+
assert(msg.color == '#444444')
281+
msg = gl.broadcastmessages.get(1)
282+
assert(msg.color == '#444444')
283+
msg.delete()
284+
assert(len(gl.broadcastmessages.list()) == 0)

0 commit comments

Comments
 (0)