def put(self, request, **kwargs): data = json.loads(request.body) data['title'] = html_converter.html_to_bb(data['title']) data['body'] = html_converter.html_to_bb(data['body']) preview = data.pop('preview', False) transaction.set_autocommit(False) self.get_parent_thread(for_update=not preview, **kwargs) if not self.obj.write_right(self.user): raise exceptions.PermissionDenied() self.obj = self.create_thread(data) signals.before_create.send(self.thread_model, instance=self.obj, data=data, view=self, preview=preview) if not preview: self.obj.save() signals.after_create.send(self.thread_model, instance=self.obj, data=data, preview=preview, view=self) transaction.commit() # TODO notify clients response = self.obj_to_json() signals.to_json.send(self.thread_model, instance=self.obj, response=response, view=self) return response
def test_smiles(smiles): original = '<p><img alt=":angel:" src="/media/wysibb/smiles/angel.gif"'\ ' style="height:26px; width:27px" title=":angel:" /></p>' converted = html_converter.html_to_bb(original) result = bbcodes.bbcode(converted) assert result == '<img class="sm" src="/media/wysibb/smiles/angel.gif"' \ ' title="angel" /><br/>'
def on_comment_update(cls, comment, data, view, **_kwargs): voting_data = data['media'].get('voting') if not voting_data: return orig_data = comment.media.get('voting') if not orig_data: voting = create_voting(voting_data) comment.media['voting'] = voting if comment.is_thread(): view.obj.media['voting'] = voting return orig_data['name'] = html_converter.html_to_bb(voting_data['name']) orig_data['body'] = html_converter.html_to_bb(voting_data['body']) orig_data['show_results'] = bool(voting_data['show_results']) orig_data['preview_results'] = voting_data['preview_results'] if comment.is_thread(): view.obj.media['voting'] = orig_data
def create_voting(data): return { 'name': bbcodes.bbcode(html_converter.html_to_bb(data['name'])), 'body': bbcodes.bbcode(html_converter.html_to_bb(data['body'])), 'closed': False, 'show_results': bool(data['show_results']), 'preview_results': bool(data['preview_results']), 'choices': { 'items': [{ 'id': i, 'name': html.escape(item['name']), 'count': 0, 'percent': 0, } for i, item in enumerate(data['choices']['items'])], 'votes': 0, }, }
def post(self, request, **kwargs): data = json.loads(request.body) data['title'] = html_converter.html_to_bb(data['title']) data['body'] = html_converter.html_to_bb(data['body']) preview = data.pop('preview', False) self.get_parent_thread(for_update=True, **kwargs) if not self.obj.edit_right(self.user): raise exceptions.PermissionDenied() self.update_thread(data) signals.on_update.send(self.thread_model, instance=self.obj, data=data, preview=preview, view=self) if not preview: self.obj.save() response = self.obj_to_json() signals.to_json.send(self.thread_model, instance=self.obj, response=response, view=self) return response
def put(self, request, **_kwargs): transaction.set_autocommit(False) if not self.user.is_superuser: raise exceptions.PermissionDenied() data = json.loads(request.body) data['title'] = html_converter.html_to_bb(data['title']) data['body'] = html_converter.html_to_bb(data['body']) if not data['room']: raise exceptions.PermissionDenied() thread = self.create_thread(data) signals.before_create.send(self.thread_model, instance=thread, data=data, view=self, preview=False) thread.save() signals.after_create.send(self.thread_model, instance=thread, data=data, preview=False, view=self) transaction.commit() # TODO notify clients return {'id': thread.pk, 'url': thread.get_absolute_url()}
def post(self, request, **kwargs): data = json.loads(request.body) data['body'] = html_converter.html_to_bb(data['body']) preview = data.pop('preview', False) transaction.set_autocommit(False) self.get_comment(for_update=True, **kwargs) if self.comment.is_thread(): raise exceptions.PermissionDenied() if not self.comment_edit_right(self.comment): raise exceptions.PermissionDenied() self.update_comment(self.comment, data, preview, self) if preview: transaction.rollback() else: self.comment.save() transaction.commit() return self.comment_to_json(self.comment)
def post(self, request, **kwargs): transaction.set_autocommit(False) self.get_parent_thread(for_update=True, **kwargs) if not self.obj.write_right(self.user): raise exceptions.PermissionDenied() data = json.loads(request.body) data['body'] = html_converter.html_to_bb(data['body']) preview = data.pop('preview', False) if data['body']: comment = self.create_comment_process(data, preview, self) if preview: return self.comment_to_json(comment) # commit transaction to be sure that clients wouldn't be notified # before comment will be accessible in DB self.obj.save() transaction.commit() page = order_to_page(comment.order) publisher.notify_thread_about_new_comment(self, self.obj, comment, page) else: page = self.pages_count(self.obj) return self.get_context_data(page=page, **kwargs)
def test_html_convertor(data, value): assert html_converter.html_to_bb(data) == value
def test_paragraph_line_breaks(): original = '<p>1</p>\n\n<p>2</p>\n\n<p>3</p>\n' assert html_converter.html_to_bb(original) == '1\n2\n3\n'
def test_special_symbols(smiles): original = 'Ï' converted = html_converter.html_to_bb(original) assert bbcodes.bbcode(converted) == original