summaryrefslogtreecommitdiffstats
path: root/askbot/models
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2013-03-04 15:32:20 -0300
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2013-03-04 15:32:20 -0300
commit13062a447a038fbe5c7cd8ea20887d96c1c37681 (patch)
tree5cc4bb40f212b70c8a0110756c77dc1b9dee37d9 /askbot/models
parentcec681f1b4551e3d8588cf2d22e4eae3a8c08b66 (diff)
downloadaskbot-13062a447a038fbe5c7cd8ea20887d96c1c37681.tar.gz
askbot-13062a447a038fbe5c7cd8ea20887d96c1c37681.tar.bz2
askbot-13062a447a038fbe5c7cd8ea20887d96c1c37681.zip
improved comment posting works for tinymce editor
Diffstat (limited to 'askbot/models')
-rw-r--r--askbot/models/post.py12
-rw-r--r--askbot/models/repute.py30
2 files changed, 12 insertions, 30 deletions
diff --git a/askbot/models/post.py b/askbot/models/post.py
index 66004ce4..625d262b 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -1,7 +1,6 @@
from collections import defaultdict
import datetime
import operator
-import cgi
import logging
from django.utils.html import strip_tags
@@ -35,7 +34,7 @@ from askbot.models.tag import tags_match_some_wildcard
from askbot.conf import settings as askbot_settings
from askbot import exceptions
from askbot.utils import markup
-from askbot.utils.html import sanitize_html
+from askbot.utils.html import sanitize_html, strip_tags
from askbot.models.base import BaseQuerySetManager, DraftContent
#todo: maybe merge askbot.utils.markup and forum.utils.html
@@ -425,25 +424,24 @@ class Post(models.Model):
if self.post_type in ('question', 'answer', 'tag_wiki', 'reject_reason'):
_urlize = False
_use_markdown = (askbot_settings.EDITOR_TYPE == 'markdown')
- _escape_html = False #markdow does the escaping
elif self.is_comment():
_urlize = True
_use_markdown = (askbot_settings.EDITOR_TYPE == 'markdown')
- _escape_html = True
else:
raise NotImplementedError
text = self.text
- if _escape_html:
- text = cgi.escape(text)
-
if _urlize:
text = html.urlize(text)
if _use_markdown:
text = sanitize_html(markup.get_parser().convert(text))
+ if askbot_settings.EDITOR_TYPE == 'tinymce':
+ #todo: see what can be done with the "object" tag
+ text = strip_tags(text, ['script', 'style', 'link'])
+
#todo, add markdown parser call conditional on
#self.use_markdown flag
post_html = text
diff --git a/askbot/models/repute.py b/askbot/models/repute.py
index e48773e6..5e9c295f 100644
--- a/askbot/models/repute.py
+++ b/askbot/models/repute.py
@@ -91,7 +91,9 @@ class BadgeData(models.Model):
"""Awarded for notable actions performed on the site by Users."""
slug = models.SlugField(max_length=50, unique=True)
awarded_count = models.PositiveIntegerField(default=0)
- awarded_to = models.ManyToManyField(User, through='Award', related_name='badges')
+ awarded_to = models.ManyToManyField(
+ User, through='Award', related_name='badges'
+ )
def _get_meta_data(self):
"""retrieves badge metadata stored
@@ -99,16 +101,13 @@ class BadgeData(models.Model):
from askbot.models import badges
return badges.get_badge(self.slug)
- @property
- def name(self):
+ def get_name(self):
return self._get_meta_data().name
- @property
- def description(self):
+ def get_description(self):
return self._get_meta_data().description
- @property
- def css_class(self):
+ def get_css_class(self):
return self._get_meta_data().css_class
def get_type_display(self):
@@ -125,19 +124,6 @@ class BadgeData(models.Model):
def get_absolute_url(self):
return '%s%s/' % (reverse('badge', args=[self.id]), self.slug)
-class AwardManager(models.Manager):
- def get_recent_awards(self):
- awards = super(AwardManager, self).extra(
- select={'badge_id': 'badge.id', 'badge_name':'badge.name',
- 'badge_description': 'badge.description', 'badge_type': 'badge.type',
- 'user_id': 'auth_user.id', 'user_name': 'auth_user.username'
- },
- tables=['award', 'badge', 'auth_user'],
- order_by=['-awarded_at'],
- where=['auth_user.id=award.user_id AND badge_id=badge.id'],
- ).values('badge_id', 'badge_name', 'badge_description', 'badge_type', 'user_id', 'user_name')
- return awards
-
class Award(models.Model):
"""The awarding of a Badge to a User."""
user = models.ForeignKey(User, related_name='award_user')
@@ -148,10 +134,8 @@ class Award(models.Model):
awarded_at = models.DateTimeField(default=datetime.datetime.now)
notified = models.BooleanField(default=False)
- objects = AwardManager()
-
def __unicode__(self):
- return u'[%s] is awarded a badge [%s] at %s' % (self.user.username, self.badge.name, self.awarded_at)
+ return u'[%s] is awarded a badge [%s] at %s' % (self.user.username, self.badge.get_name(), self.awarded_at)
class Meta:
app_label = 'askbot'