Compare commits

..

1 Commits

Author SHA1 Message Date
Marc Sibson dbc417207f add post update 2014-06-23 22:25:19 -07:00
3 changed files with 14 additions and 34 deletions
+10 -19
View File
@@ -44,16 +44,13 @@ class DiscourseClient(object):
def toggle_gravatar(self, username, state=True, **kwargs):
url = '/users/{0}/preferences/avatar/toggle'.format(username)
if bool(state):
kwargs['use_uploaded_avatar'] = 'true'
else:
kwargs['use_uploaded_avatar'] = 'false'
return self._put(url, **kwargs)
def pick_avatar(self, username, gravatar=True, generated=False, **kwargs):
url = '/users/{0}/preferences/avatar/pick'.format(username)
return self._put(url, **kwargs)
def update_email(self, username, email, **kwargs):
return self._put('/users/{0}/preferences/email'.format(username), email=email, **kwargs)
@@ -80,12 +77,6 @@ class DiscourseClient(object):
"""
return self._delete('/admin/users/{0}.json'.format(userid), **kwargs)
def users(self, filter=None, **kwargs):
if filter is None:
filter = 'active'
return self._get('/admin/users/list/{0}.json'.format(filter), **kwargs)
def private_messages(self, username=None, **kwargs):
if username is None:
username = self.api_username
@@ -100,8 +91,8 @@ class DiscourseClient(object):
def new_topics(self, **kwargs):
return self._get('/new.json', **kwargs)
def topic(self, slug, topic_id, **kwargs):
return self._get('/t/{0}/{1}.json'.format(slug, topic_id), **kwargs)
def topic(self, topic_id, **kwargs):
return self._get('/t/{0}.json'.format(topic_id), **kwargs)
def post(self, topic_id, post_id, **kwargs):
return self._get('/t/{0}/{1}.json'.format(topic_id, post_id), **kwargs)
@@ -140,7 +131,7 @@ class DiscourseClient(object):
def update_post(self, post_id, content, edit_reason='', **kwargs):
kwargs['post[raw]'] = content
kwargs['post[edit_reason]'] = edit_reason
kwargs['post[edit_reason'] = edit_reason
return self._put('/posts/{0}'.format(post_id), **kwargs)
def topics_by(self, username, **kwargs):
@@ -221,12 +212,12 @@ class DiscourseClient(object):
log.debug('response %s: %s', response.status_code, repr(response.text))
if not response.ok:
try:
msg = u','.join(response.json()['errors'])
except (ValueError, TypeError, KeyError):
if response.reason:
msg = response.reason
else:
if response.reason:
msg = response.reason
else:
try:
msg = u','.join(response.json()['errors'])
except (ValueError, TypeError, KeyError):
msg = u'{0}: {1}'.format(response.status_code, response.text)
if 400 <= response.status_code < 500:
+2 -8
View File
@@ -30,7 +30,7 @@ class DiscourseCmd(cmd.Cmd):
try:
return method(*args, **kwargs)
except DiscourseError as e:
print (e, e.response.text)
print e, e.response.text
return e.response
return wrapper
@@ -57,14 +57,8 @@ def main():
op.add_option('--api-user', default='system')
op.add_option('-v', '--verbose', action='store_true')
api_key = os.environ['DISCOURSE_API_KEY']
options, args = op.parse_args()
if not options.host.startswith('http'):
op.error('host must include protocol, eg http://')
api_key = os.environ.get('DISCOURSE_API_KEY')
if not api_key:
op.error('please set DISCOURSE_API_KEY')
client = DiscourseClient(options.host, options.api_user, api_key)
if options.verbose:
+2 -7
View File
@@ -82,8 +82,8 @@ class TestTopics(ClientBaseTestCase):
def test_topic(self, request):
prepare_response(request)
self.client.topic('some-test-slug', 22)
self.assertRequestCalled(request, 'GET', '/t/some-test-slug/22.json')
self.client.topic(22)
self.assertRequestCalled(request, 'GET', '/t/22.json')
def test_topics_by(self, request):
prepare_response(request)
@@ -111,8 +111,3 @@ class MiscellaneousTests(ClientBaseTestCase):
r = self.client.categories()
self.assertRequestCalled(request, 'GET', '/categories.json')
self.assertEqual(r, request().json()['category_list']['categories'])
def test_users(self, request):
prepare_response(request)
r = self.client.users()
self.assertRequestCalled(request, 'GET', '/admin/users/list/active.json')