##// END OF EJS Templates
Added version to post content
neko259 -
r1569:a4ed3791 default
parent child Browse files
Show More
@@ -0,0 +1,20 b''
1 # -*- coding: utf-8 -*-
2 # Generated by Django 1.9.5 on 2016-05-11 09:23
3 from __future__ import unicode_literals
4
5 from django.db import migrations, models
6
7
8 class Migration(migrations.Migration):
9
10 dependencies = [
11 ('boards', '0044_globalid_content'),
12 ]
13
14 operations = [
15 migrations.AddField(
16 model_name='post',
17 name='version',
18 field=models.IntegerField(default=1),
19 ),
20 ]
@@ -1,6 +1,7 b''
1 from django.contrib import admin
1 from django.contrib import admin
2 from django.utils.translation import ugettext_lazy as _
2 from django.utils.translation import ugettext_lazy as _
3 from django.core.urlresolvers import reverse
3 from django.core.urlresolvers import reverse
4 from django.db.models import F
4 from boards.models import Post, Tag, Ban, Thread, Banner, PostImage, KeyPair, GlobalId
5 from boards.models import Post, Tag, Ban, Thread, Banner, PostImage, KeyPair, GlobalId
5
6
6
7
@@ -12,7 +13,8 b' class PostAdmin(admin.ModelAdmin):'
12 search_fields = ('id', 'title', 'text', 'poster_ip')
13 search_fields = ('id', 'title', 'text', 'poster_ip')
13 exclude = ('referenced_posts', 'refmap', 'images', 'global_id')
14 exclude = ('referenced_posts', 'refmap', 'images', 'global_id')
14 readonly_fields = ('poster_ip', 'threads', 'thread', 'linked_images',
15 readonly_fields = ('poster_ip', 'threads', 'thread', 'linked_images',
15 'attachments', 'uid', 'url', 'pub_time', 'opening', 'linked_global_id')
16 'attachments', 'uid', 'url', 'pub_time', 'opening', 'linked_global_id',
17 'version')
16
18
17 def ban_poster(self, request, queryset):
19 def ban_poster(self, request, queryset):
18 bans = 0
20 bans = 0
@@ -54,6 +56,11 b' class PostAdmin(admin.ModelAdmin):'
54 args=[global_id.id]), str(global_id))
56 args=[global_id.id]), str(global_id))
55 linked_global_id.allow_tags = True
57 linked_global_id.allow_tags = True
56
58
59 def save_model(self, request, obj, form, change):
60 obj.increment_version()
61 obj.save()
62 obj.clear_cache()
63
57 actions = ['ban_poster', 'ban_with_hiding']
64 actions = ['ban_poster', 'ban_with_hiding']
58
65
59
66
@@ -96,6 +103,14 b' class ThreadAdmin(admin.ModelAdmin):'
96 def save_related(self, request, form, formsets, change):
103 def save_related(self, request, form, formsets, change):
97 super().save_related(request, form, formsets, change)
104 super().save_related(request, form, formsets, change)
98 form.instance.refresh_tags()
105 form.instance.refresh_tags()
106
107 def save_model(self, request, obj, form, change):
108 op = obj.get_opening_post()
109 op.increment_version()
110 op.save(update_fields=['version'])
111 obj.save()
112 op.clear_cache()
113
99 list_display = ('id', 'op', 'title', 'reply_count', 'status', 'ip',
114 list_display = ('id', 'op', 'title', 'reply_count', 'status', 'ip',
100 'display_tags')
115 'display_tags')
101 list_filter = ('bump_time', 'status')
116 list_filter = ('bump_time', 'status')
@@ -11,7 +11,7 b' from boards.utils import datetime_to_epo'
11 from django.core.exceptions import ObjectDoesNotExist
11 from django.core.exceptions import ObjectDoesNotExist
12 from django.core.urlresolvers import reverse
12 from django.core.urlresolvers import reverse
13 from django.db import models
13 from django.db import models
14 from django.db.models import TextField, QuerySet
14 from django.db.models import TextField, QuerySet, F
15 from django.template.defaultfilters import truncatewords, striptags
15 from django.template.defaultfilters import truncatewords, striptags
16 from django.template.loader import render_to_string
16 from django.template.loader import render_to_string
17
17
@@ -104,6 +104,7 b' class Post(models.Model, Viewable):'
104 tripcode = models.CharField(max_length=50, blank=True, default='')
104 tripcode = models.CharField(max_length=50, blank=True, default='')
105 opening = models.BooleanField(db_index=True)
105 opening = models.BooleanField(db_index=True)
106 hidden = models.BooleanField(default=False)
106 hidden = models.BooleanField(default=False)
107 version = models.IntegerField(default=1)
107
108
108 def __str__(self):
109 def __str__(self):
109 return 'P#{}/{}'.format(self.id, self.get_title())
110 return 'P#{}/{}'.format(self.id, self.get_title())
@@ -379,3 +380,14 b' class Post(models.Model, Viewable):'
379
380
380 def set_hidden(self, hidden):
381 def set_hidden(self, hidden):
381 self.hidden = hidden
382 self.hidden = hidden
383
384 def increment_version(self):
385 self.version = F('version') + 1
386
387 def clear_cache(self):
388 global_id = self.global_id
389 if global_id is not None and global_id.is_local()\
390 and global_id.content is not None:
391 global_id.content = None
392 global_id.save()
393 global_id.signature_set.all().delete()
@@ -32,6 +32,7 b" TAG_TAG = 'tag'"
32 TAG_ATTACHMENT_REFS = 'attachment-refs'
32 TAG_ATTACHMENT_REFS = 'attachment-refs'
33 TAG_ATTACHMENT_REF = 'attachment-ref'
33 TAG_ATTACHMENT_REF = 'attachment-ref'
34 TAG_TRIPCODE = 'tripcode'
34 TAG_TRIPCODE = 'tripcode'
35 TAG_VERSION = 'version'
35
36
36 TYPE_GET = 'get'
37 TYPE_GET = 'get'
37
38
@@ -126,6 +127,8 b' class SyncManager:'
126 SyncManager._attachment_to_xml(
127 SyncManager._attachment_to_xml(
127 attachments_tag, attachment_refs, file.file.file,
128 attachments_tag, attachment_refs, file.file.file,
128 file.hash, file.file.url)
129 file.hash, file.file.url)
130 version_tag = et.SubElement(content_tag, TAG_VERSION)
131 version_tag.text = str(post.version)
129
132
130 global_id.content = et.tostring(content_tag, ENCODING_UNICODE)
133 global_id.content = et.tostring(content_tag, ENCODING_UNICODE)
131 global_id.save()
134 global_id.save()
General Comments 0
You need to be logged in to leave comments. Login now