示例#1
0
 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
示例#2
0
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/>'
示例#3
0
 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
示例#4
0
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,
        },
    }
示例#5
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
示例#6
0
 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()}
示例#7
0
    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)
示例#8
0
 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)
示例#9
0
def test_html_convertor(data, value):
    assert html_converter.html_to_bb(data) == value
示例#10
0
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'
示例#11
0
def test_special_symbols(smiles):
    original = '&Iuml;'
    converted = html_converter.html_to_bb(original)
    assert bbcodes.bbcode(converted) == original