summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs/api-objects.rst1
-rw-r--r--docs/gl_objects/messages.py23
-rw-r--r--docs/gl_objects/messages.rst46
-rw-r--r--gitlab/__init__.py3
-rw-r--r--gitlab/objects.py12
-rw-r--r--tools/python_test.py11
6 files changed, 96 insertions, 0 deletions
diff --git a/docs/api-objects.rst b/docs/api-objects.rst
index eabefc8..0328414 100644
--- a/docs/api-objects.rst
+++ b/docs/api-objects.rst
@@ -16,6 +16,7 @@ API objects manipulation
gl_objects/issues
gl_objects/labels
gl_objects/licenses
+ gl_objects/messages
gl_objects/mrs
gl_objects/namespaces
gl_objects/milestones
diff --git a/docs/gl_objects/messages.py b/docs/gl_objects/messages.py
new file mode 100644
index 0000000..74714e5
--- /dev/null
+++ b/docs/gl_objects/messages.py
@@ -0,0 +1,23 @@
+# list
+msgs = gl.broadcastmessages.list()
+# end list
+
+# get
+msg = gl.broadcastmessages.get(msg_id)
+# end get
+
+# create
+msg = gl.broadcastmessages.create({'message': 'Important information'})
+# end create
+
+# update
+msg.font = '#444444'
+msg.color = '#999999'
+msg.save()
+# end update
+
+# delete
+gl.broadcastmessages.delete(msg_id)
+# or
+msg.delete()
+# end delete
diff --git a/docs/gl_objects/messages.rst b/docs/gl_objects/messages.rst
new file mode 100644
index 0000000..9f183ba
--- /dev/null
+++ b/docs/gl_objects/messages.rst
@@ -0,0 +1,46 @@
+##################
+Broadcast messages
+##################
+
+You can use broadcast messages to display information on all pages of the
+gitlab web UI. You must have administration permissions to manipulate broadcast
+messages.
+
+* Object class: :class:`gitlab.objects.BroadcastMessage`
+* Manager object: :attr:`gitlab.Gitlab.broadcastmessages`
+
+Examples
+--------
+
+List the messages:
+
+.. literalinclude:: messages.py
+ :start-after: # list
+ :end-before: # end list
+
+Get a single message:
+
+.. literalinclude:: messages.py
+ :start-after: # get
+ :end-before: # end get
+
+Create a message:
+
+.. literalinclude:: messages.py
+ :start-after: # create
+ :end-before: # end create
+
+The date format for ``starts_at`` and ``ends_at`` parameters is
+``YYYY-MM-ddThh:mm:ssZ``.
+
+Update a message:
+
+.. literalinclude:: messages.py
+ :start-after: # update
+ :end-before: # end update
+
+Delete a message:
+
+.. literalinclude:: messages.py
+ :start-after: # delete
+ :end-before: # end delete
diff --git a/gitlab/__init__.py b/gitlab/__init__.py
index c74a26c..a022cb4 100644
--- a/gitlab/__init__.py
+++ b/gitlab/__init__.py
@@ -69,6 +69,8 @@ class Gitlab(object):
user_emails (UserEmailManager): Manager for GitLab users' emails.
user_keys (UserKeyManager): Manager for GitLab users' SSH keys.
users (UserManager): Manager for GitLab users
+ broadcastmessages (BroadcastMessageManager): Manager for broadcast
+ messages
keys (DeployKeyManager): Manager for deploy keys
group_accessrequests (GroupAccessRequestManager): Manager for GitLab
groups access requests
@@ -168,6 +170,7 @@ class Gitlab(object):
self.user_emails = UserEmailManager(self)
self.user_keys = UserKeyManager(self)
self.users = UserManager(self)
+ self.broadcastmessages = BroadcastMessageManager(self)
self.keys = KeyManager(self)
self.group_accessrequests = GroupAccessRequestManager(self)
self.group_issues = GroupIssueManager(self)
diff --git a/gitlab/objects.py b/gitlab/objects.py
index ad57d2f..0897c68 100644
--- a/gitlab/objects.py
+++ b/gitlab/objects.py
@@ -728,6 +728,18 @@ class ApplicationSettingsManager(BaseManager):
obj_cls = ApplicationSettings
+class BroadcastMessage(GitlabObject):
+ _url = '/broadcast_messages'
+ requiredCreateAttrs = ['message']
+ optionalCreateAttrs = ['starts_at', 'ends_at', 'color', 'font']
+ requiredUpdateAttrs = []
+ optionalUpdateAttrs = ['message', 'starts_at', 'ends_at', 'color', 'font']
+
+
+class BroadcastMessageManager(BaseManager):
+ obj_cls = BroadcastMessage
+
+
class Key(GitlabObject):
_url = '/deploy_keys'
canGet = 'from_list'
diff --git a/tools/python_test.py b/tools/python_test.py
index 888d553..27ec4bd 100644
--- a/tools/python_test.py
+++ b/tools/python_test.py
@@ -271,3 +271,14 @@ ns = gl.namespaces.list()
assert(len(ns) != 0)
ns = gl.namespaces.list(search='root')[0]
assert(ns.kind == 'user')
+
+# broadcast messages
+msg = gl.broadcastmessages.create({'message': 'this is the message'})
+msg.color = '#444444'
+msg.save()
+msg = gl.broadcastmessages.list()[0]
+assert(msg.color == '#444444')
+msg = gl.broadcastmessages.get(1)
+assert(msg.color == '#444444')
+msg.delete()
+assert(len(gl.broadcastmessages.list()) == 0)