Allow batch setting multi subreddits via the PUT api call.

This commit is contained in:
Max Goodman
2013-05-03 02:56:13 -07:00
parent d923cdfca0
commit 6516e74c40
2 changed files with 23 additions and 1 deletions

View File

@@ -110,7 +110,26 @@ class MultiApiController(RedditController, OAuth2ResourceController):
if data['visibility'] not in ('private', 'public'):
raise RedditError('INVALID_OPTION', code=400, fields="data")
multi.visibility = data['visibility']
multi._commit()
if 'subreddits' in data:
multi.clear_srs()
srs = Subreddit._by_name(data['subreddits'].keys())
sr_props = {}
for sr_name, sr_data in data['subreddits'].iteritems():
try:
sr = srs[sr_name]
except KeyError:
raise RedditError('SUBREDDIT_NOEXIST', code=400)
else:
sr_props[sr] = sr_data
try:
multi.add_srs(sr_props)
except TooManySubredditsException as e:
multi._revert()
raise RedditError('MULTI_TOO_MANY_SUBREDDITS', code=409)
multi._commit()
return self.GET_multi(path=info['path'])

View File

@@ -1464,6 +1464,9 @@ class LabeledMulti(tdb_cassandra.Thing, MultiReddit):
for key in keys:
self.__delitem__(key)
def clear_srs(self):
self.del_srs(self.sr_ids)
def delete(self):
# Do we want to actually delete objects?
self._destroy()