summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-10-11 12:50:42 -0600
committerAdolfo Fitoria <adolfo.fitoria@gmail.com>2012-10-11 12:50:42 -0600
commit8e00ecc5842cae670503b972df2248acc89713c4 (patch)
tree3d89e16774e3c789d78d019cf8307218c0261eee
parente82ea2fa8a84a157a157a919fc1660024435baab (diff)
downloadaskbot-8e00ecc5842cae670503b972df2248acc89713c4.tar.gz
askbot-8e00ecc5842cae670503b972df2248acc89713c4.tar.bz2
askbot-8e00ecc5842cae670503b972df2248acc89713c4.zip
added Message model workaround for django >= 1.4.1
-rw-r--r--askbot/models/__init__.py44
-rw-r--r--askbot/models/message.py25
2 files changed, 45 insertions, 24 deletions
diff --git a/askbot/models/__init__.py b/askbot/models/__init__.py
index fa9c08fe..fce1a09a 100644
--- a/askbot/models/__init__.py
+++ b/askbot/models/__init__.py
@@ -67,6 +67,9 @@ from askbot import mail
from django import get_version as django_version
+if django_version() > '1.3.1':
+ from askbot.models.message import Message
+
def get_model(model_name):
"""a shortcut for getting model for an askbot app"""
return models.get_model('askbot', model_name)
@@ -118,40 +121,33 @@ def get_users_by_text_query(search_query, users_query_set = None):
# models.Q(about__search = search_query)
# )
-class CacheMessage(object):
- '''An object to replace the django.contrib.auth.models.Message model
- that stores the messages in the cache'''
+class RelatedObjectSimulator(object):
+ '''Objects that simulates the "messages_set" related field
+ somehow django does not creates it automatically in django1.4.1'''
- def __init__(self, user):
+ def __init__(self, user, model_class):
self.user = user
- self.cache_key = 'user-message-%d' % self.user.id
+ self.model_class = model_class
- @property
- def messages(self):
- return cache.cache.get(self.cache_key) or []
-
- def _set_message(self, message):
- messages = self.messages
- messages.append(message)
- cache.cache.set(self.cache_key, messages)
+ def create(self, **kwargs):
+ return self.model_class.objects.create(user=self.user, **kwargs)
- def create(self, message=''):
- if message:
- self._set_message(message)
+ def filter(self, *args, **kwargs):
+ return self.model_class.objects.filter(*args, **kwargs)
- def get_and_delete_messages(self):
- return_value = self.messages
- cache.cache.delete(self.cache_key)
- return return_value
+#django 1.4.1 only
@property
def user_message_set(self):
- if not hasattr(self, '_message_set_cache'):
- self._message_set_cache = CacheMessage(self)
- return self._message_set_cache
+ return RelatedObjectSimulator(self, Message)
+#django 1.4.1 only
def user_get_and_delete_messages(self):
- return self.message_set.get_and_delete_messages()
+ messages = []
+ for message in Message.objects.filter(user=self):
+ messages.append(message)
+ message.delete()
+ return messages
if django_version() > '1.3.1':
User.add_to_class('message_set', user_message_set)
diff --git a/askbot/models/message.py b/askbot/models/message.py
new file mode 100644
index 00000000..5086f515
--- /dev/null
+++ b/askbot/models/message.py
@@ -0,0 +1,25 @@
+'''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 _
+
+class Message(models.Model):
+ """
+ The message system is a lightweight way to queue messages for given
+ users. A message is associated with a User instance (so it is only
+ applicable for registered users). There's no concept of expiration or
+ timestamps. Messages are created by the Django admin after successful
+ actions. For example, "The poll Foo was created successfully." is a
+ message.
+ """
+ user = models.ForeignKey(User, related_name='_message_set')
+ message = models.TextField(_('message'))
+
+ class Meta:
+ '''Added for backwards compatibility with databases
+ migrated from django 1.3'''
+ app_label = 'auth'
+ db_table = 'auth_message'
+
+ def __unicode__(self):
+ return self.message