##// END OF EJS Templates
Added id-type attribute to attachments to specify a type of hash (currently only md5). Added management command to delete global id caches
neko259 -
r1560:bf42cc40 default
parent child Browse files
Show More
@@ -0,0 +1,20 b''
1 from django.core.management import BaseCommand
2 from django.db import transaction
3
4 from boards.models import GlobalId
5
6 __author__ = 'neko259'
7
8
9 class Command(BaseCommand):
10 help = 'Removes local global ID cache'
11
12 @transaction.atomic
13 def handle(self, *args, **options):
14 count = 0
15 for global_id in GlobalId.objects.all():
16 if global_id.is_local() and global_id.content is not None:
17 global_id.content = None
18 global_id.save()
19 count += 1
20 print('Invalidated {} caches.'.format(count))
@@ -3,8 +3,8 b" STATUS_BUMPLIMIT = 'bumplimit'"
3 3 STATUS_ARCHIVE = 'archived'
4 4
5 5
6 from boards.models.sync_key import KeyPair
6 7 from boards.models.signature import GlobalId, Signature
7 from boards.models.sync_key import KeyPair
8 8 from boards.models.image import PostImage
9 9 from boards.models.attachment import Attachment
10 10 from boards.models.thread import Thread
@@ -43,6 +43,9 b" ATTR_MIMETYPE = 'mimetype'"
43 43 ATTR_KEY = 'key'
44 44 ATTR_REF = 'ref'
45 45 ATTR_URL = 'url'
46 ATTR_ID_TYPE = 'id-type'
47
48 ID_TYPE_MD5 = 'md5'
46 49
47 50 STATUS_SUCCESS = 'success'
48 51
@@ -269,6 +272,7 b' class SyncManager:'
269 272 mimetype = get_file_mimetype(file)
270 273 attachment = et.SubElement(tag_attachments, TAG_ATTACHMENT)
271 274 attachment.set(ATTR_MIMETYPE, mimetype)
275 attachment.set(ATTR_ID_TYPE, ID_TYPE_MD5)
272 276 attachment.text = hash
273 277
274 278 attachment_ref = et.SubElement(tag_refs, TAG_ATTACHMENT_REF)
@@ -1,5 +1,6 b''
1 1 import xml.etree.ElementTree as et
2 2 from django.db import models
3 from boards.models import KeyPair
3 4
4 5
5 6 TAG_MODEL = 'model'
@@ -124,6 +125,11 b' class GlobalId(models.Model):'
124 125 key_type=element.get(ATTR_KEY_TYPE),
125 126 local_id=int(element.get(ATTR_LOCAL_ID))), False
126 127
128 def is_local(self):
129 """Checks fo the ID is local model's"""
130 return KeyPair.objects.filter(
131 key_type=self.key_type, public_key=self.key).exists()
132
127 133
128 134 class Signature(models.Model):
129 135 class Meta:
General Comments 0
You need to be logged in to leave comments. Login now