def form_valid(self, form): instance = self.get_object() try: target_pages = instance.pages.exclude( pk=form.cleaned_data['page'].pk) with transaction.atomic(): for page in target_pages: layer_saved_transformations.get_transformations_for( obj=page).delete() layer_saved_transformations.copy_transformations( source=form.cleaned_data['page'], targets=target_pages) except Exception as exception: if settings.DEBUG: raise else: messages.error( message=_('Error cloning the page transformations for ' 'document: %(document)s; %(error)s.') % { 'document': instance, 'error': exception }, request=self.request) else: messages.success(message=_('Transformations cloned successfully.'), request=self.request) return super(DocumentTransformationsCloneView, self).form_valid(form=form)
def upload_document(self, file_object, document_type, description=None, label=None, language=None, querystring=None, user=None): """ Upload an individual document """ try: with transaction.atomic(): document = Document(description=description or '', document_type=document_type, label=label or file_object.name, language=language or setting_language.value) document.save(_user=user) except Exception as exception: logger.critical( 'Unexpected exception while trying to create new document ' '"%s" from source "%s"; %s', label or file_object.name, self, exception) raise else: try: document_version = document.new_version( file_object=file_object, _user=user, ) if user: document.add_as_recent_document_for_user(user=user) layer_saved_transformations.copy_transformations( source=self, targets=document_version.pages.all()) except Exception as exception: logger.critical( 'Unexpected exception while trying to create version for ' 'new document "%s" from source "%s"; %s', label or file_object.name, self, exception, exc_info=True) document.delete(to_trash=False) raise else: WizardStep.post_upload_process(document=document, querystring=querystring) return document
def handler_copy_transformations_to_version(sender, instance, **kwargs): # TODO: Fix this, source should be previous version # TODO: Fix this, shouldn't this be at the documents app layer_saved_transformations.copy_transformations( source=instance.document, targets=instance.pages.all())