Example #1
0
def chunk_save(chunk_uid: str, collection: models.Collection,
               content_file: ContentFile):
    chunk_obj = models.CollectionItemChunk(uid=chunk_uid,
                                           collection=collection)
    chunk_obj.chunkFile.save("IGNORED", content_file)
    chunk_obj.save()
    return chunk_obj
Example #2
0
def process_revisions_for_item(item: models.CollectionItem,
                               revision_data: CollectionItemRevisionInOut):
    chunks_objs = []

    revision = models.CollectionItemRevision(**revision_data.dict(
        exclude={"chunks"}),
                                             item=item)
    revision.validate_unique()  # Verify there aren't any validation issues

    for chunk in revision_data.chunks:
        uid = chunk[0]
        chunk_obj = models.CollectionItemChunk.objects.filter(uid=uid).first()
        content = chunk[1] if len(chunk) > 1 else None
        # If the chunk already exists we assume it's fine. Otherwise, we upload it.
        if chunk_obj is None:
            if content is not None:
                chunk_obj = models.CollectionItemChunk(
                    uid=uid, collection=item.collection)
                chunk_obj.chunkFile.save("IGNORED", ContentFile(content))
                chunk_obj.save()
            else:
                raise ValidationError(
                    "chunk_no_content",
                    "Tried to create a new chunk without content")

        chunks_objs.append(chunk_obj)

    stoken = models.Stoken.objects.create()
    revision.stoken = stoken
    revision.save()

    for chunk2 in chunks_objs:
        models.RevisionChunkRelation.objects.create(chunk=chunk2,
                                                    revision=revision)
    return revision