fix #5: smiles break urlize
This commit is contained in:
parent
78d6a2cce2
commit
18abcb087a
3 changed files with 25 additions and 20 deletions
|
@ -11,8 +11,6 @@ import re
|
|||
from urllib import quote, unquote, quote_plus
|
||||
from urlparse import urlparse, urlunparse
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
pygments_available = True
|
||||
try:
|
||||
from pygments import highlight
|
||||
|
@ -676,23 +674,6 @@ class PostMarkup(object):
|
|||
u'>':u'>',
|
||||
u'&':u'&',
|
||||
u'\n':u'<br/>',
|
||||
u':)':settings.FORUM_EMOTION_SMILE,
|
||||
u'=)':settings.FORUM_EMOTION_SMILE,
|
||||
u':|':settings.FORUM_EMOTION_NEUTRAL,
|
||||
u'=|':settings.FORUM_EMOTION_NEUTRAL,
|
||||
u':(':settings.FORUM_EMOTION_SAD,
|
||||
u'=(':settings.FORUM_EMOTION_SAD,
|
||||
u':D':settings.FORUM_EMOTION_BIG_SMILE,
|
||||
u'=D':settings.FORUM_EMOTION_BIG_SMILE,
|
||||
u':o':settings.FORUM_EMOTION_YIKES,
|
||||
u':O':settings.FORUM_EMOTION_YIKES,
|
||||
u';)':settings.FORUM_EMOTION_WINK,
|
||||
u':/':settings.FORUM_EMOTION_HMM,
|
||||
u':P':settings.FORUM_EMOTION_TONGUE,
|
||||
u':lol:':settings.FORUM_EMOTION_LOL,
|
||||
u':mad:':settings.FORUM_EMOTION_MAD,
|
||||
u':rolleyes:':settings.FORUM_EMOTION_ROLL,
|
||||
u':cool:':settings.FORUM_EMOTION_COOL,
|
||||
})
|
||||
|
||||
standard_replace_no_break = MultiReplace({ u'<':u'<',
|
||||
|
|
|
@ -14,7 +14,7 @@ from markdown import Markdown
|
|||
from apps.forum.markups import mypostmarkup
|
||||
from apps.forum.fields import AutoOneToOneField, ExtendedImageField
|
||||
from apps.forum.subscription import notify_subscribers
|
||||
from apps.forum.util import urlize
|
||||
from apps.forum.util import urlize, smiles
|
||||
|
||||
LANGUAGE_CHOICES = (
|
||||
('en', 'English'),
|
||||
|
@ -204,6 +204,7 @@ class Post(models.Model):
|
|||
raise Exception('Invalid markup property: %s' % self.markup)
|
||||
self.body_text = strip_tags(self.body_html)
|
||||
self.body_html = urlize(self.body_html)
|
||||
self.body_html = smiles(self.body_html)
|
||||
|
||||
new = self.id is None
|
||||
|
||||
|
@ -373,6 +374,7 @@ class PrivateMessage(models.Model):
|
|||
raise Exception('Invalid markup property: %s' % self.markup)
|
||||
self.body_text = strip_tags(self.body_html)
|
||||
self.body_html = urlize(self.body_html)
|
||||
self.body_html = smiles(self.body_html)
|
||||
|
||||
new = self.id is None
|
||||
super(PrivateMessage, self).save(*args, **kwargs)
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
from datetime import datetime
|
||||
import os.path
|
||||
import random
|
||||
import re
|
||||
from HTMLParser import HTMLParser
|
||||
|
||||
from django.shortcuts import render_to_response
|
||||
|
@ -11,6 +12,7 @@ from django.utils.translation import force_unicode
|
|||
from django.utils.simplejson import JSONEncoder
|
||||
from django import forms
|
||||
from django.template.defaultfilters import urlize as django_urlize
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
def render_to(template_path):
|
||||
|
@ -182,3 +184,23 @@ def urlize(data):
|
|||
parser.close()
|
||||
return urlized_html
|
||||
|
||||
def smiles(data):
|
||||
data = re.compile(r':\)').sub(settings.FORUM_EMOTION_SMILE, data)
|
||||
data = re.compile(r'=\)').sub(settings.FORUM_EMOTION_SMILE, data)
|
||||
data = re.compile(r':\|').sub(settings.FORUM_EMOTION_NEUTRAL, data)
|
||||
data = re.compile(r'=\|').sub(settings.FORUM_EMOTION_NEUTRAL, data)
|
||||
data = re.compile(r':\(').sub(settings.FORUM_EMOTION_SAD, data)
|
||||
data = re.compile(r'=\(').sub(settings.FORUM_EMOTION_SAD, data)
|
||||
data = re.compile(r':D').sub(settings.FORUM_EMOTION_BIG_SMILE, data)
|
||||
data = re.compile(r'=D').sub(settings.FORUM_EMOTION_BIG_SMILE, data)
|
||||
data = re.compile(r':o').sub(settings.FORUM_EMOTION_YIKES, data)
|
||||
data = re.compile(r':O').sub(settings.FORUM_EMOTION_YIKES, data)
|
||||
data = re.compile(r';\)').sub(settings.FORUM_EMOTION_WINK, data)
|
||||
data = re.compile(r'(?<!http):/').sub(settings.FORUM_EMOTION_HMM, data)
|
||||
data = re.compile(r':P').sub(settings.FORUM_EMOTION_TONGUE, data)
|
||||
data = re.compile(r':lol:').sub(settings.FORUM_EMOTION_LOL, data)
|
||||
data = re.compile(r':mad:').sub(settings.FORUM_EMOTION_MAD, data)
|
||||
data = re.compile(r':rolleyes:').sub(settings.FORUM_EMOTION_ROLL, data)
|
||||
data = re.compile(r':cool:').sub(settings.FORUM_EMOTION_COOL, data)
|
||||
return data
|
||||
|
||||
|
|
Reference in a new issue