Пример #1
0
    def update(self, document, validated_data):
        """ Update and save document. """
        tags = validated_data.pop('tags', None)
        draft = document.draft

        self.update_document(document, validated_data)

        user = self.context['request'].user
        if user:
            document.updated_by_user = user
            if not document.created_by_user:
                document.created_by_user = user

        # save as a revision
        document.save_with_revision(user)

        # these require that the document is saved
        if tags is not None:
            document.tags.set(*tags)

        # reload it to ensure tags are refreshed and we have an id for new documents
        document = Document.objects.get(pk=document.id)

        # signals
        if draft and not document.draft:
            action.send(user, verb='published', action_object=document,
                        place_code=document.work.place.place_code)
            document_published.send(sender=self.__class__, document=document, request=self.context['request'])
        elif not draft and document.draft:
            action.send(user, verb='unpublished', action_object=document,
                        place_code=document.work.place.place_code)

        return document
Пример #2
0
    def update(self, document, validated_data):
        """ Update and save document. """
        source_file = validated_data.pop('source_file', None)
        tags = validated_data.pop('tags', None)
        draft = document.draft

        self.update_document(document, validated_data)

        user = self.context['request'].user
        if user:
            document.updated_by_user = user
            if not document.created_by_user:
                document.created_by_user = user

        # save as a revision
        document.save_with_revision(user)

        # these require that the document is saved
        if tags is not None:
            document.tags.set(*tags)

        if source_file:
            # add the source file as an attachment
            AttachmentSerializer(context={'document': document}).create({'file': source_file})

        # reload it to ensure tags are refreshed and we have an id for new documents
        document = Document.objects.get(pk=document.id)

        # signals
        if draft and not document.draft:
            document_published.send(sender=self.__class__, document=document, request=self.context['request'])

        return document