Collection: move stoken to the model.

This commit is contained in:
Tom Hacohen 2020-04-16 16:33:16 +03:00
parent edaa7b0f05
commit c5af5fd4e6
2 changed files with 10 additions and 9 deletions

View File

@ -44,6 +44,15 @@ class Collection(models.Model):
def content(self): def content(self):
return self.main_item.content return self.main_item.content
@cached_property
def stoken(self):
last_revision = CollectionItemRevision.objects.filter(item__collection=self).last()
if last_revision is None:
# FIXME: what is the etag for None? Though if we use the revision for collection it should be shared anyway.
return None
return last_revision.uid
class CollectionItem(models.Model): class CollectionItem(models.Model):
uid = models.CharField(db_index=True, blank=False, null=True, uid = models.CharField(db_index=True, blank=False, null=True,

View File

@ -149,7 +149,7 @@ class CollectionItemSerializer(serializers.ModelSerializer):
class CollectionSerializer(serializers.ModelSerializer): class CollectionSerializer(serializers.ModelSerializer):
encryptionKey = CollectionEncryptionKeyField() encryptionKey = CollectionEncryptionKeyField()
accessLevel = serializers.SerializerMethodField('get_access_level_from_context') accessLevel = serializers.SerializerMethodField('get_access_level_from_context')
stoken = serializers.SerializerMethodField('get_stoken') stoken = serializers.CharField(read_only=True)
content = CollectionItemRevisionSerializer(many=False) content = CollectionItemRevisionSerializer(many=False)
class Meta: class Meta:
@ -162,14 +162,6 @@ class CollectionSerializer(serializers.ModelSerializer):
return obj.members.get(user=request.user).accessLevel return obj.members.get(user=request.user).accessLevel
return None return None
def get_stoken(self, obj):
last_revision = models.CollectionItemRevision.objects.filter(item__collection=obj).last()
if last_revision is None:
# FIXME: what is the etag for None? Though if we use the revision for collection it should be shared anyway.
return None
return last_revision.uid
def create(self, validated_data): def create(self, validated_data):
"""Function that's called when this serializer creates an item""" """Function that's called when this serializer creates an item"""
revision_data = validated_data.pop('content') revision_data = validated_data.pop('content')