diff --git a/boards/mdx_neboard.py b/boards/mdx_neboard.py --- a/boards/mdx_neboard.py +++ b/boards/mdx_neboard.py @@ -158,15 +158,16 @@ def bbcode_extended(markup): parser.add_formatter('post', render_reflink, strip=True) parser.add_formatter('quote', render_quote, strip=True) parser.add_simple_formatter('comment', - u'//%(value)s') + '//%(value)s') parser.add_simple_formatter('spoiler', - u'%(value)s') + '%(value)s') # TODO Use here parser.add_simple_formatter('s', - u'%(value)s') + '%(value)s') # TODO Why not use built-in tag? parser.add_simple_formatter('code', - u'
%(value)s
', render_embedded=False) + '
%(value)s
', + render_embedded=False) text = preparse_text(markup) return parser.format(text) diff --git a/boards/migrations/0001_initial.py b/boards/migrations/0001_initial.py --- a/boards/migrations/0001_initial.py +++ b/boards/migrations/0001_initial.py @@ -2,7 +2,6 @@ from __future__ import unicode_literals from django.db import models, migrations -import markupfield.fields import boards.models.image import boards.models.base import boards.thumbs @@ -32,7 +31,7 @@ class Migration(migrations.Migration): ('id', models.AutoField(serialize=False, auto_created=True, primary_key=True, verbose_name='ID')), ('title', models.CharField(max_length=200)), ('pub_time', models.DateTimeField()), - ('text', markupfield.fields.MarkupField()), + ('text', models.TextField(null=True, blank=True)), ('text_markup_type', models.CharField(choices=[('', '--'), ('bbcode', 'bbcode')], max_length=30, default='bbcode')), ('poster_ip', models.GenericIPAddressField()), ('_text_rendered', models.TextField(editable=False)), diff --git a/boards/models/post.py b/boards/models/post.py --- a/boards/models/post.py +++ b/boards/models/post.py @@ -1,24 +1,25 @@ from datetime import datetime, timedelta, date from datetime import time as dtime -from adjacent import Client import logging import re +from adjacent import Client from django.core.cache import cache from django.core.urlresolvers import reverse from django.db import models, transaction -from django.shortcuts import get_object_or_404 +from django.db.models import TextField from django.template import RequestContext from django.template.loader import render_to_string from django.utils import timezone -from markupfield.fields import MarkupField + from boards import settings - +from boards.mdx_neboard import bbcode_extended from boards.models import PostImage from boards.models.base import Viewable from boards.models.thread import Thread from boards.utils import datetime_to_epoch + WS_CHANNEL_THREAD = "thread:" APP_LABEL_BOARDS = 'boards' @@ -34,8 +35,6 @@ IMAGE_THUMB_SIZE = (200, 150) TITLE_MAX_LENGTH = 200 -DEFAULT_MARKUP_TYPE = 'bbcode' - # TODO This should be removed NO_IP = '0.0.0.0' @@ -127,7 +126,7 @@ class PostManager(models.Manager): Connects replies to a post to show them as a reflink map """ - for reply_number in re.finditer(REGEX_REPLY, post.text.raw): + for reply_number in re.finditer(REGEX_REPLY, post.get_raw_text()): post_id = reply_number.group(1) ref_post = self.filter(id=post_id) if ref_post.count() > 0: @@ -191,8 +190,8 @@ class Post(models.Model, Viewable): title = models.CharField(max_length=TITLE_MAX_LENGTH) pub_time = models.DateTimeField() - text = MarkupField(default_markup_type=DEFAULT_MARKUP_TYPE, - escape_html=False) + text = TextField(blank=True, null=True) + _text_rendered = TextField(blank=True, null=True, editable=False) images = models.ManyToManyField(PostImage, null=True, blank=True, related_name='ip+', db_index=True) @@ -220,7 +219,7 @@ class Post(models.Model, Viewable): title = self.title if not title: - title = self.text.rendered + title = self.get_text() return title @@ -429,8 +428,20 @@ class Post(models.Model, Viewable): logger.info('Sent post #{} to channel {}'.format(self.id, channel_name)) if recursive: - for reply_number in re.finditer(REGEX_REPLY, self.text.raw): + for reply_number in re.finditer(REGEX_REPLY, self.get_raw_text()): post_id = reply_number.group(1) ref_post = Post.objects.filter(id=post_id)[0] ref_post.send_to_websocket(request, recursive=False) + + def save(self, force_insert=False, force_update=False, using=None, + update_fields=None): + self._text_rendered = bbcode_extended(self.get_raw_text()) + + super().save(force_insert, force_update, using, update_fields) + + def get_text(self): + return self._text_rendered + + def get_raw_text(self): + return self.text diff --git a/boards/templates/boards/post.html b/boards/templates/boards/post.html --- a/boards/templates/boards/post.html +++ b/boards/templates/boards/post.html @@ -62,9 +62,9 @@
{% autoescape off %} {% if truncated %} - {{ post.text.rendered|truncatewords_html:50 }} + {{ post.get_text|truncatewords_html:50 }} {% else %} - {{ post.text.rendered }} + {{ post.get_text }} {% endif %} {% endautoescape %} {% if post.is_referenced %} diff --git a/neboard/settings.py b/neboard/settings.py --- a/neboard/settings.py +++ b/neboard/settings.py @@ -199,10 +199,6 @@ HAYSTACK_CONNECTIONS = { }, } -MARKUP_FIELD_TYPES = ( - ('bbcode', bbcode_extended), -) - THEMES = [ ('md', 'Mystic Dark'), ('md_centered', 'Mystic Dark (centered)'), diff --git a/readme.markdown b/readme.markdown --- a/readme.markdown +++ b/readme.markdown @@ -7,23 +7,6 @@ Main repository: https://bitbucket.org/n Site: http://neboard.me/ -# DEPENDENCIES # - -## REQUIRED ## - -* pillow -* django >= 1.6 -* django_cleanup -* django-markupfield -* markdown -* python-markdown -* django-simple-captcha -* line-profiler - -## OPTIONAL ## - -* django-debug-toolbar - # INSTALLATION # 1. Install all dependencies over pip or system-wide diff --git a/requirements.txt b/requirements.txt --- a/requirements.txt +++ b/requirements.txt @@ -3,6 +3,5 @@ haystack pillow django>=1.7 django_cleanup -django-markupfield bbcode django_compressor \ No newline at end of file