fix #5: smiles break urlize

This commit is contained in:
алафин@алафин-ПК 2009-01-17 14:42:12 +02:00
parent 78d6a2cce2
commit 18abcb087a
3 changed files with 25 additions and 20 deletions

View file

@ -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'&lt;',

View file

@ -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)

View file

@ -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