summaryrefslogtreecommitdiffstats
path: root/askbot/models
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2013-01-10 09:21:00 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2013-01-10 09:21:00 -0600
commit31b4af444274fb0bfbf633f12a55e1208ef5ae01 (patch)
treec9c9964bcbec7a012cca4c9e66c9057dd2391248 /askbot/models
parent24ef17c6a95c3f52bc2d39061e6ca1fe98b30d25 (diff)
parent3087781bbba06373797e3010f5ae78abcc9b380a (diff)
downloadaskbot-31b4af444274fb0bfbf633f12a55e1208ef5ae01.tar.gz
askbot-31b4af444274fb0bfbf633f12a55e1208ef5ae01.tar.bz2
askbot-31b4af444274fb0bfbf633f12a55e1208ef5ae01.zip
Merge branch 'master' into tag_subscription
Diffstat (limited to 'askbot/models')
-rw-r--r--askbot/models/message.py4
-rw-r--r--askbot/models/post.py3
-rw-r--r--askbot/models/question.py31
-rw-r--r--askbot/models/reply_by_email.py13
-rw-r--r--askbot/models/tag.py7
-rw-r--r--askbot/models/user.py19
-rw-r--r--askbot/models/widgets.py6
7 files changed, 49 insertions, 34 deletions
diff --git a/askbot/models/message.py b/askbot/models/message.py
index 9686e8f5..a2da9c51 100644
--- a/askbot/models/message.py
+++ b/askbot/models/message.py
@@ -1,7 +1,7 @@
'''Copied from Django 1.3.1 source code, it will use this model to'''
from django.db import models
from django.contrib.auth.models import User
-from django.utils.translation import ugettext as _
+from django.utils.translation import ugettext_lazy
class Message(models.Model):
"""
@@ -13,7 +13,7 @@ class Message(models.Model):
message.
"""
user = models.ForeignKey(User, related_name='_message_set')
- message = models.TextField(_('message'))
+ message = models.TextField(ugettext_lazy('message'))
class Meta:
'''Added for backwards compatibility with databases
diff --git a/askbot/models/post.py b/askbot/models/post.py
index deb7726b..956f875e 100644
--- a/askbot/models/post.py
+++ b/askbot/models/post.py
@@ -13,7 +13,6 @@ from django.core import urlresolvers
from django.db import models
from django.utils import html as html_utils
from django.utils.translation import ugettext as _
-from django.utils.translation import ungettext
from django.utils.http import urlquote as django_urlquote
from django.core import exceptions as django_exceptions
from django.core import cache
@@ -243,7 +242,7 @@ class PostManager(BaseQuerySetManager):
author = author,
revised_at = added_at,
text = text,
- comment = const.POST_STATUS['default_version'],
+ comment = unicode(const.POST_STATUS['default_version']),
by_email = by_email
)
diff --git a/askbot/models/question.py b/askbot/models/question.py
index d0048f2a..e0521f69 100644
--- a/askbot/models/question.py
+++ b/askbot/models/question.py
@@ -13,6 +13,7 @@ from django.utils.hashcompat import md5_constructor
from django.utils.translation import ugettext as _
from django.utils.translation import ungettext
from django.utils.translation import string_concat
+from django.utils.translation import get_language
import askbot
from askbot.conf import settings as askbot_settings
@@ -54,9 +55,14 @@ class ThreadQuerySet(models.query.QuerySet):
self, search_query
).order_by('-relevance')
elif 'mysql' in db_engine_name and mysql.supports_full_text_search():
- return self.filter(title__search=search_query)
+ filter_parameters = {'title__search': search_query}
else:
- return self.filter(title__icontains=search_query)
+ filter_parameters = {'title__icontains': search_query}
+
+ if getattr(django_settings, 'ASKBOT_MULTILINGUAL', False):
+ filter_parameters['language_code'] = get_language()
+
+ return self.filter(**filter_parameters)
class ThreadManager(BaseQuerySetManager):
@@ -95,7 +101,7 @@ class ThreadManager(BaseQuerySetManager):
tag_list = tag_list[:5]
last_topic = _('" and more')
- return '"' + '", "'.join(tag_list) + last_topic
+ return '"' + '", "'.join(tag_list) + unicode(last_topic)
def create(self, *args, **kwargs):
raise NotImplementedError
@@ -124,7 +130,8 @@ class ThreadManager(BaseQuerySetManager):
title=title,
tagnames=tagnames,
last_activity_at=added_at,
- last_activity_by=author
+ last_activity_by=author,
+ language_code=get_language()
)
#todo: code below looks like ``Post.objects.create_new()``
@@ -231,11 +238,16 @@ class ThreadManager(BaseQuerySetManager):
"""
from askbot.conf import settings as askbot_settings # Avoid circular import
+ primary_filter = {
+ 'posts__post_type': 'question',
+ 'posts__deleted': False
+ }
+
+ if getattr(django_settings, 'ASKBOT_MULTILINGUAL', False):
+ primary_filter['language_code'] = get_language()
+
# TODO: add a possibility to see deleted questions
- qs = self.filter(
- posts__post_type='question',
- posts__deleted=False,
- ) # (***) brings `askbot_post` into the SQL query, see the ordering section below
+ qs = self.filter(**primary_filter)
if askbot_settings.ENABLE_CONTENT_MODERATION:
qs = qs.filter(approved = True)
@@ -522,6 +534,7 @@ class Thread(models.Model):
answer_count = models.PositiveIntegerField(default=0)
last_activity_at = models.DateTimeField(default=datetime.datetime.now)
last_activity_by = models.ForeignKey(User, related_name='unused_last_active_in_threads')
+ language_code = models.CharField(max_length=16, default=django_settings.LANGUAGE_CODE)
followed_by = models.ManyToManyField(User, related_name='followed_threads')
favorited_by = models.ManyToManyField(User, through='FavoriteQuestion', related_name='unused_favorite_threads')
@@ -715,7 +728,7 @@ class Thread(models.Model):
else:
attr = None
if attr is not None:
- return u'%s %s' % (self.title, attr)
+ return u'%s %s' % (self.title, unicode(attr))
else:
return self.title
diff --git a/askbot/models/reply_by_email.py b/askbot/models/reply_by_email.py
index 0db7244c..983edc8f 100644
--- a/askbot/models/reply_by_email.py
+++ b/askbot/models/reply_by_email.py
@@ -5,6 +5,7 @@ import logging
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
+from django.utils.translation import ugettext_lazy
from askbot.models.post import Post
from askbot.models.base import BaseQuerySetManager
from askbot.conf import settings as askbot_settings
@@ -34,12 +35,12 @@ class ReplyAddressManager(BaseQuerySetManager):
REPLY_ACTION_CHOICES = (
- ('post_answer', _('Post an answer')),
- ('post_comment', _('Post a comment')),
- ('replace_content', _('Edit post')),
- ('append_content', _('Append to post')),
- ('auto_answer_or_comment', _('Answer or comment, depending on the size of post')),
- ('validate_email', _('Validate email and record signature')),
+ ('post_answer', ugettext_lazy('Post an answer')),
+ ('post_comment', ugettext_lazy('Post a comment')),
+ ('replace_content', ugettext_lazy('Edit post')),
+ ('append_content', ugettext_lazy('Append to post')),
+ ('auto_answer_or_comment', ugettext_lazy('Answer or comment, depending on the size of post')),
+ ('validate_email', ugettext_lazy('Validate email and record signature')),
)
class ReplyAddress(models.Model):
"""Stores a reply address for the post
diff --git a/askbot/models/tag.py b/askbot/models/tag.py
index e4c4540a..7b51e6db 100644
--- a/askbot/models/tag.py
+++ b/askbot/models/tag.py
@@ -2,6 +2,7 @@ import re
from django.db import models
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
+from django.utils.translation import ugettext_lazy
from django.conf import settings
from askbot.models.base import BaseQuerySetManager
from askbot import const
@@ -307,9 +308,9 @@ class Tag(models.Model):
class MarkedTag(models.Model):
TAG_MARK_REASONS = (
- ('good', _('interesting')),
- ('bad', _('ignored')),
- ('subscribed', _('subscribed')),
+ ('good', ugettext_lazy('interesting')),
+ ('bad', ugettext_lazy('ignored')),
+ ('subscribed', ugettext_lazy('subscribed')),
)
tag = models.ForeignKey('Tag', related_name='user_selections')
user = models.ForeignKey(User, related_name='tag_selections')
diff --git a/askbot/models/user.py b/askbot/models/user.py
index c27c8759..5fb5b991 100644
--- a/askbot/models/user.py
+++ b/askbot/models/user.py
@@ -10,6 +10,7 @@ from django.contrib.auth.models import Group as AuthGroup
from django.core import exceptions
from django.forms import EmailField, URLField
from django.utils.translation import ugettext as _
+from django.utils.translation import ugettext_lazy
from django.utils.html import strip_tags
from askbot import const
from askbot.conf import settings as askbot_settings
@@ -280,17 +281,17 @@ class EmailFeedSetting(models.Model):
'm_and_c': 'i'
}
FEED_TYPE_CHOICES = (
- ('q_all',_('Entire forum')),
- ('q_ask',_('Questions that I asked')),
- ('q_ans',_('Questions that I answered')),
- ('q_sel',_('Individually selected questions')),
- ('m_and_c',_('Mentions and comment responses')),
+ ('q_all', ugettext_lazy('Entire forum')),
+ ('q_ask', ugettext_lazy('Questions that I asked')),
+ ('q_ans', ugettext_lazy('Questions that I answered')),
+ ('q_sel', ugettext_lazy('Individually selected questions')),
+ ('m_and_c', ugettext_lazy('Mentions and comment responses')),
)
UPDATE_FREQUENCY = (
- ('i',_('Instantly')),
- ('d',_('Daily')),
- ('w',_('Weekly')),
- ('n',_('No email')),
+ ('i', ugettext_lazy('Instantly')),
+ ('d', ugettext_lazy('Daily')),
+ ('w', ugettext_lazy('Weekly')),
+ ('n', ugettext_lazy('No email')),
)
diff --git a/askbot/models/widgets.py b/askbot/models/widgets.py
index 27fc3d84..bdec5eb2 100644
--- a/askbot/models/widgets.py
+++ b/askbot/models/widgets.py
@@ -1,5 +1,5 @@
from django.db import models
-from django.utils.translation import ugettext as _
+from django.utils.translation import ugettext_lazy
from askbot.models import Tag, Group
from askbot.const import DEFAULT_QUESTION_WIDGET_STYLE, SEARCH_ORDER_BY
@@ -24,14 +24,14 @@ class AskWidget(models.Model):
class QuestionWidget(models.Model):
title = models.CharField(max_length=100)
question_number = models.PositiveIntegerField(default=7)
- tagnames = models.CharField(_('tags'), max_length=50)
+ tagnames = models.CharField(ugettext_lazy('tags'), max_length=50)
group = models.ForeignKey(Group, null=True, blank=True)
search_query = models.CharField(
max_length=50, null=True, blank=True, default=''
)
order_by = models.CharField(max_length=18,
choices=SEARCH_ORDER_BY, default='-added_at')
- style = models.TextField(_('css for the widget'),
+ style = models.TextField(ugettext_lazy('css for the widget'),
default=DEFAULT_QUESTION_WIDGET_STYLE, blank=True)
class Meta: