def set_flair_csv(self, subreddit, flair_mapping): """ Set flair for a group of users in the given subreddit. flair_mapping should be a list of dictionaries with the following keys: user: the user name flair_text: the flair text for the user (optional) flair_css_class: the flair css class for the user (optional) """ if not flair_mapping: raise errors.ClientException('flair_mapping must be set') item_order = ['user', 'flair_text', 'flair_css_class'] lines = [] for mapping in flair_mapping: if 'user' not in mapping: raise errors.ClientException('flair_mapping must ' 'contain `user` key') lines.append(','.join([mapping.get(x, '') for x in item_order])) response = [] while len(lines): params = { 'r': six.text_type(subreddit), 'flair_csv': '\n'.join(lines[:100]) } response.extend(self.request_json(self.config['flaircsv'], params)) lines = lines[100:] stale_url = self.config['flairlist'] % six.text_type(subreddit) # pylint: disable-msg=E1101,W0212 helpers._request.evict([stale_url]) return response
def test_raise_client_exception(self): def raise_client_exception(*args): raise errors.ClientException(*args) self.assertRaises(errors.ClientException, raise_client_exception) self.assertRaises(errors.ClientException, raise_client_exception, 'test') ce_message = errors.ClientException('Test') ce_no_message = errors.ClientException() self.assertEqual(ce_message.message, str(ce_message)) self.assertEqual(ce_no_message.message, str(ce_no_message))
def short_domain(self): """ Return the short domain of the reddit. Used to generate the shortlink. For reddit.com the short_domain is redd.it and generate shortlinks like http://redd.it/y3r8u """ if self._short_domain: return self._short_domain else: raise errors.ClientException('No short domain specified.')
def raise_client_exception(*args): raise errors.ClientException(*args)