# HG changeset patch # User neko259 # Date 2013-09-14 18:15:31 # Node ID d5b3b0c262e307dee0bf78cd4ae82b962a47b79a # Parent 9f3a047d7735c73a4bf4c085f53931e5416bb790 Fixed 'last update' time of the thread in bumplimit. Added database cache for thread view and threads list. diff --git a/boards/migrations/0008_auto__add_field_post_bump_time.py b/boards/migrations/0008_auto__add_field_post_bump_time.py new file mode 100644 --- /dev/null +++ b/boards/migrations/0008_auto__add_field_post_bump_time.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding field 'Post.bump_time' + db.add_column(u'boards_post', 'bump_time', + self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime(2013, 9, 14, 0, 0)), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Post.bump_time' + db.delete_column(u'boards_post', 'bump_time') + + + models = { + u'boards.ban': { + 'Meta': {'object_name': 'Ban'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'ip': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}) + }, + u'boards.post': { + 'Meta': {'object_name': 'Post'}, + '_text_rendered': ('django.db.models.fields.TextField', [], {}), + 'bump_time': ('django.db.models.fields.DateTimeField', [], {}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'image': ('boards.thumbs.ImageWithThumbsField', [], {'max_length': '100', 'blank': 'True'}), + 'image_height': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'image_width': ('django.db.models.fields.IntegerField', [], {'default': '0'}), + 'last_edit_time': ('django.db.models.fields.DateTimeField', [], {}), + 'parent': ('django.db.models.fields.BigIntegerField', [], {'default': '-1'}), + 'poster_ip': ('django.db.models.fields.GenericIPAddressField', [], {'max_length': '39'}), + 'poster_user_agent': ('django.db.models.fields.TextField', [], {}), + 'pub_time': ('django.db.models.fields.DateTimeField', [], {}), + 'replies': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'re+'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['boards.Post']"}), + 'tags': ('django.db.models.fields.related.ManyToManyField', [], {'to': u"orm['boards.Tag']", 'symmetrical': 'False'}), + 'text': ('markupfield.fields.MarkupField', [], {'rendered_field': 'True'}), + 'text_markup_type': ('django.db.models.fields.CharField', [], {'default': "'markdown'", 'max_length': '30'}), + 'thread': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['boards.Post']", 'null': 'True'}), + 'title': ('django.db.models.fields.CharField', [], {'max_length': '50'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'default': 'None', 'to': u"orm['boards.User']", 'null': 'True'}) + }, + u'boards.setting': { + 'Meta': {'object_name': 'Setting'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': u"orm['boards.User']"}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + u'boards.tag': { + 'Meta': {'object_name': 'Tag'}, + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'threads': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'tag+'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['boards.Post']"}) + }, + u'boards.user': { + 'Meta': {'object_name': 'User'}, + 'fav_tags': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': u"orm['boards.Tag']", 'null': 'True', 'blank': 'True'}), + 'fav_threads': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'symmetrical': 'False', 'to': u"orm['boards.Post']"}), + u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'last_access_time': ('django.db.models.fields.DateTimeField', [], {}), + 'rank': ('django.db.models.fields.IntegerField', [], {}), + 'registration_time': ('django.db.models.fields.DateTimeField', [], {}), + 'user_id': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + } + } + + complete_apps = ['boards'] \ No newline at end of file diff --git a/boards/models.py b/boards/models.py --- a/boards/models.py +++ b/boards/models.py @@ -44,6 +44,7 @@ class PostManager(models.Manager): poster_ip=ip, poster_user_agent=UNKNOWN_UA, last_edit_time=timezone.now(), + bump_time=timezone.now(), user=user) if tags: @@ -54,6 +55,8 @@ class PostManager(models.Manager): if thread: thread.replies.add(post) thread.bump() + thread.last_edit_time = timezone.now() + thread.save() else: self._delete_old_threads() @@ -69,7 +72,7 @@ class PostManager(models.Manager): map(self.delete_post, posts) def get_threads(self, tag=None, page=ALL_PAGES, - order_by='-last_edit_time'): + order_by='-bump_time'): if tag: threads = tag.threads @@ -218,6 +221,7 @@ class Post(models.Model): thread = models.ForeignKey('Post', null=True, default=None) tags = models.ManyToManyField(Tag) last_edit_time = models.DateTimeField() + bump_time = models.DateTimeField() user = models.ForeignKey('User', null=True, default=None) replies = models.ManyToManyField('Post', symmetrical=False, null=True, @@ -254,8 +258,7 @@ class Post(models.Model): """Bump (move to up) thread""" if self.can_bump(): - self.last_edit_time = timezone.now() - self.save() + self.bump_time = timezone.now() def get_last_replies(self): if settings.LAST_REPLIES_COUNT > 0: diff --git a/boards/templates/boards/posting_general.html b/boards/templates/boards/posting_general.html --- a/boards/templates/boards/posting_general.html +++ b/boards/templates/boards/posting_general.html @@ -2,6 +2,7 @@ {% load i18n %} {% load markup %} +{% load cache %} {% block head %} {% if tag %} @@ -29,6 +30,7 @@ {% if threads %} {% for thread in threads %} + {% cache 600 thread_cache thread.thread.last_edit_time %}
{% if thread.bumpable %}
@@ -118,6 +120,7 @@ {% endfor %}
{% endif %} + {% endcache %}
{% endfor %} {% else %} diff --git a/boards/templates/boards/thread.html b/boards/templates/boards/thread.html --- a/boards/templates/boards/thread.html +++ b/boards/templates/boards/thread.html @@ -2,6 +2,7 @@ {% load i18n %} {% load markup %} +{% load cache %} {% block head %} Neboard - {{ posts.0.get_title }} @@ -11,6 +12,7 @@ {% if posts %} + {% cache 600 thread_view posts.0.last_edit_time %}
{% for post in posts %} {% if bumpable %} @@ -66,6 +68,7 @@
{% endfor %} + {% endcache %} {% endif %}