def chooser_upload(request): if request.POST: document = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=document) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(document) document_json = json.dumps({ 'id': document.id, 'title': document.title }) return render_modal_workflow( request, None, 'wagtaildocs/chooser/document_chosen.js', {'document_json': document_json}) else: form = DocumentForm() documents = Document.objects.order_by('title') return render_modal_workflow(request, 'wagtaildocs/chooser/chooser.html', 'wagtaildocs/chooser/chooser.js', { 'documents': documents, 'uploadform': form })
def add(request): ImageModel = get_image_model() ImageForm = get_image_form(ImageModel) if request.POST: image = ImageModel(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): # Set image file size image.file_size = image.file.size form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' added.").format(image.title), buttons=[ messages.button(reverse('wagtailimages:edit', args=(image.id,)), _('Edit')) ]) return redirect('wagtailimages:index') else: messages.error(request, _("The image could not be created due to errors.")) else: form = ImageForm() return render(request, "wagtailimages/images/add.html", { 'form': form, })
def edit(request, document_id): doc = get_object_or_404(Document, id=document_id) if not doc.is_editable_by_user(request.user): raise PermissionDenied if request.POST: original_file = doc.file form = DocumentForm(request.POST, request.FILES, instance=doc) if form.is_valid(): if "file" in form.changed_data: # if providing a new document file, delete the old one. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) doc = form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' updated").format(doc.title)) return redirect("wagtaildocs_index") else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm(instance=doc) return render(request, "wagtaildocs/documents/edit.html", {"document": doc, "form": form})
def chooser_upload(request): Document = get_document_model() DocumentForm = get_document_form(Document) if request.method == 'POST': document = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=document, user=request.user) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(document) return render_modal_workflow( request, None, 'wagtaildocs/chooser/document_chosen.js', {'document_json': get_document_json(document)}) else: form = DocumentForm(user=request.user) documents = Document.objects.order_by('title') return render_modal_workflow(request, 'wagtaildocs/chooser/chooser.html', 'wagtaildocs/chooser/chooser.js', { 'documents': documents, 'uploadform': form })
def form_valid(self, form): """ Processes successful form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ self.object = form.save() for backend in get_search_backends(): backend.add(self.object) if self.object.link_type == Link.LINK_TYPE_EMAIL: javascript = 'wagtaillinks/chooser/email-chosen.js' elif self.object.link_type == Link.LINK_TYPE_EXTERNAL: javascript = 'wagtaillinks/chooser/external-chosen.js' instance_json = json.dumps({ 'id': self.object.id, 'linktype': 'link', 'title': unicode(self.object.title), 'url': self.object.url, }) return render_modal_workflow( self.request, None, javascript, {'instance_json': instance_json} )
def form_valid(self, form): """ Processes successful form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ self.object = form.save() for backend in get_search_backends(): backend.add(self.object) if self.object.link_type == Link.LINK_TYPE_EMAIL: javascript = 'wagtaillinks/chooser/email-chosen.js' elif self.object.link_type == Link.LINK_TYPE_EXTERNAL: javascript = 'wagtaillinks/chooser/external-chosen.js' instance_json = json.dumps({ 'id': self.object.id, 'linktype': 'link', 'title': unicode(self.object.title), 'url': self.object.url, }) return render_modal_workflow(self.request, None, javascript, {'instance_json': instance_json})
def add(request): ImageModel = get_image_model() ImageForm = get_image_form(ImageModel) if request.POST: image = ImageModel(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' added.").format(image.title), buttons=[ messages.button( reverse('wagtailimages_edit_image', args=(image.id, )), _('Edit')) ]) return redirect('wagtailimages_index') else: messages.error(request, _("The image could not be created due to errors.")) else: form = ImageForm() return render(request, "wagtailimages/images/add.html", { 'form': form, 'max_filesize': MAX_UPLOAD_SIZE, })
def add(request): Document = get_document_model() DocumentForm = get_document_form(Document) if request.POST: doc = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=doc, user=request.user) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' added.").format(doc.title), buttons=[ messages.button(reverse('wagtaildocs:edit', args=(doc.id,)), _('Edit')) ]) return redirect('wagtaildocs:index') else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm(user=request.user) return render(request, "wagtaildocs/documents/add.html", { 'form': form, })
def edit(request, doc_id, callback=None): Document = get_document_model() DocumentMultiForm = get_document_multi_form(Document) doc = get_object_or_404(Document, id=doc_id) if not request.is_ajax(): return HttpResponseBadRequest("Cannot POST to this view without AJAX") if not permission_policy.user_has_permission_for_instance(request.user, 'change', doc): raise PermissionDenied form = DocumentMultiForm(request.POST, request.FILES, instance=doc, prefix='doc-' + doc_id) if form.is_valid(): form.save() # Reindex the doc to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) return JsonResponse({ 'success': True, 'doc_id': int(doc_id), }) else: return JsonResponse({ 'success': False, 'doc_id': int(doc_id), 'form': render_to_string('wagtaildocs/multiple/edit_form.html', { 'doc': doc, 'form': form, }, request=request), })
def form_valid(self, form): """ Processes a valid form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ #noinspection PyAttributeOutsideInit self.object = form.save() meta = getattr(self.object, '_meta') # Index the object. for backend in get_search_backends(): backend.add(object) #noinspection PyUnresolvedReferences messages.success(self.request, _(u'{0} "{1}" saved.').format(meta.verbose_name, str(self.object)), buttons=[ messages.button( reverse('{0}:edit'.format(self.url_namespace), args=(self.object.id, )), _(u'Edit')) ]) return redirect(self.get_success_url())
def add(request): VideoForm = get_video_form(Video) if request.POST: video = Video(uploaded_by_user=request.user) form = VideoForm(request.POST, request.FILES, instance=video, user=request.user) if form.is_valid(): # Save video = form.save(commit=False) video.file_size = video.file.size video.save() # Success! Send back an edit form for backend in get_search_backends(): backend.add(video) messages.success(request, _("Video '{0}' added.").format(video.title), buttons=[ messages.button(reverse('wagtailvideos:edit', args=(video.id,)), _('Edit')) ]) return redirect('wagtailvideos:index') else: messages.error(request, _("The video could not be created due to errors.")) else: form = VideoForm(user=request.user) return render(request, "wagtailvideos/videos/add.html", { 'form': form, })
def add(request): EmbedVideoModel = get_embed_video_model() EmbedVideoForm = get_embed_video_form(EmbedVideoModel) if request.POST: embed_video = EmbedVideoModel(uploaded_by_user=request.user) form = EmbedVideoForm(request.POST, request.FILES, instance=embed_video) if form.is_valid(): form.save() # Reindex the embed video to make sure all tags are indexed for backend in get_search_backends(): backend.add(embed_video) messages.success(request, _("Embed video '{0}' added.").format(embed_video.title), buttons=[ messages.button(reverse('wagtail_embed_videos_edit_embed_video', args=(embed_video.id,)), _('Edit')) ]) return redirect('wagtail_embed_videos_index') else: messages.error(request, _("The embed video could not be created due to errors.")) else: form = EmbedVideoForm() return render(request, "wagtail_embed_videos/embed_videos/add.html", { 'form': form, })
def add(request): ImageForm = get_image_form() ImageModel = get_image_model() if request.POST: image = ImageModel(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' added.").format(image.title)) return redirect('wagtailimages_index') else: messages.error(request, _("The image could not be created due to errors.")) else: form = ImageForm() return render(request, "wagtailimages/images/add.html", { 'form': form, })
def add(request): ImageForm = get_image_form() ImageModel = get_image_model() if request.POST: image = ImageModel(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' added.").format(image.title)) return redirect('wagtailimages_index') else: messages.error(request, _("The image could not be created due to errors.")) else: form = ImageForm() return render(request, "wagtailimages/images/add.html", { 'form': form, 'max_filesize': MAX_UPLOAD_SIZE, })
def chooser_upload(request): Document = get_document_model() DocumentForm = get_document_form(Document) if request.POST: document = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=document) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(document) return render_modal_workflow( request, None, "wagtaildocs/chooser/document_chosen.js", {"document_json": get_document_json(document)} ) else: form = DocumentForm() documents = Document.objects.order_by("title") return render_modal_workflow( request, "wagtaildocs/chooser/chooser.html", "wagtaildocs/chooser/chooser.js", {"documents": documents, "uploadform": form}, )
def add(request): Document = get_document_model() DocumentForm = get_document_form(Document) if request.POST: doc = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=doc) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' added.").format(doc.title), buttons=[ messages.button( reverse('wagtaildocs:edit', args=(doc.id, )), _('Edit')) ]) return redirect('wagtaildocs:index') else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm() return render(request, "wagtaildocs/documents/add.html", { 'form': form, })
def chooser_upload(request): if request.POST: document = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=document) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(document) return render_modal_workflow( request, None, 'wagtaildocs/chooser/document_chosen.js', {'document_json': get_document_json(document)} ) else: form = DocumentForm() documents = Document.objects.order_by('title') return render_modal_workflow( request, 'wagtaildocs/chooser/chooser.html', 'wagtaildocs/chooser/chooser.js', {'documents': documents, 'uploadform': form} )
def form_valid(self, form): """ Processes successful form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ # Set the object from form data. self.object = form.save() # Reindex the instance to make sure all tags are indexed. for backend in get_search_backends(): backend.add(self.object) # Add success message. messages.success( self.request, _(u"{0} '{1}' saved.").format( unicode(self.model._meta.verbose_name), unicode(self.object) ) ) # Redirect to success URL. return redirect(self.success_url)
def edit(request, document_id): doc = get_object_or_404(Document, id=document_id) if not doc.is_editable_by_user(request.user): raise PermissionDenied if request.POST: original_file = doc.file form = DocumentForm(request.POST, request.FILES, instance=doc) if form.is_valid(): if 'file' in form.changed_data: # if providing a new document file, delete the old one. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) doc = form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' updated").format(doc.title), buttons=[ messages.button(reverse('wagtaildocs_edit_document', args=(doc.id,)), _('Edit')) ]) return redirect('wagtaildocs_index') else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm(instance=doc) return render(request, "wagtaildocs/documents/edit.html", { 'document': doc, 'form': form })
def add(request, media_type): Media = get_media_model() MediaForm = get_media_form(Media) if request.POST: media = Media(uploaded_by_user=request.user, type=media_type) form = MediaForm(request.POST, request.FILES, instance=media, user=request.user) if form.is_valid(): form.save() # Reindex the media entry to make sure all tags are indexed for backend in get_search_backends(): backend.add(media) messages.success(request, _("Media file '{0}' added.").format(media.title), buttons=[ messages.button(reverse('wagtailmedia:edit', args=(media.id,)), _('Edit')) ]) return redirect('wagtailmedia:index') else: messages.error(request, _("The media file could not be saved due to errors.")) else: media = Media(uploaded_by_user=request.user, type=media_type) form = MediaForm(user=request.user, instance=media) return render(request, "wagtailmedia/media/add.html", { 'form': form, 'media_type': media_type, })
def edit(request, image_id): Image = get_image_model() ImageForm = get_image_form(Image) image = get_object_or_404(Image, id=image_id) if not image.is_editable_by_user(request.user): raise PermissionDenied if request.POST: original_file = image.file form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): if 'file' in form.changed_data: # if providing a new image file, delete the old one and all renditions. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) image.renditions.all().delete() # Set new image file size image.file_size = image.file.size form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' updated.").format(image.title), buttons=[ messages.button(reverse('wagtailimages:edit', args=(image.id,)), _('Edit again')) ]) return redirect('wagtailimages:index') else: messages.error(request, _("The image could not be saved due to errors.")) else: form = ImageForm(instance=image) # Check if we should enable the frontend url generator try: reverse('wagtailimages_serve', args=('foo', '1', 'bar')) url_generator_enabled = True except NoReverseMatch: url_generator_enabled = False if image.is_stored_locally(): # Give error if image file doesn't exist if not os.path.isfile(image.file.path): messages.error(request, _( "The source image file could not be found. Please change the source or delete the image." ).format(image.title), buttons=[ messages.button(reverse('wagtailimages:delete', args=(image.id,)), _('Delete')) ]) return render(request, "wagtailimages/images/edit.html", { 'image': image, 'form': form, 'url_generator_enabled': url_generator_enabled, 'filesize': image.get_file_size(), })
def edit(request, embed_video_id): EmbedVideo = get_embed_video_model() EmbedVideoForm = get_embed_video_form(EmbedVideo) embed_video = get_object_or_404(EmbedVideo, id=embed_video_id) if not embed_video.is_editable_by_user(request.user): raise PermissionDenied if request.POST: form = EmbedVideoForm(request.POST, request.FILES, instance=embed_video) if form.is_valid(): form.save() # Reindex the embed_video to make sure all tags are indexed for backend in get_search_backends(): backend.add(embed_video) messages.success(request, _("Embed video '{0}' updated.").format(embed_video.title), buttons=[ messages.button(reverse('wagtail_embed_videos_edit_embed_video', args=(embed_video.id,)), _('Edit again')) ]) return redirect('wagtail_embed_videos_index') else: messages.error(request, _("The embed video could not be saved due to errors.")) else: form = EmbedVideoForm(instance=embed_video) return render(request, "wagtail_embed_videos/embed_videos/edit.html", { 'embed_video': embed_video, 'form': form, })
def add(request): EmbedVideoModel = get_embed_video_model() EmbedVideoForm = get_embed_video_form(EmbedVideoModel) if request.POST: embed_video = EmbedVideoModel(uploaded_by_user=request.user) form = EmbedVideoForm(request.POST, request.FILES, instance=embed_video) if form.is_valid(): form.save() # Reindex the embed video to make sure all tags are indexed for backend in get_search_backends(): backend.add(embed_video) messages.success( request, _("Video '{0}' added.").format(embed_video.title), buttons=[ messages.button( reverse('wagtail_embed_videos_edit_embed_video', args=(embed_video.id, )), _('Edit')) ]) return redirect('wagtail_embed_videos_index') else: messages.error(request, _("The video could not be created due to errors.")) else: form = EmbedVideoForm() return render(request, "wagtail_embed_videos/embed_videos/add.html", { 'form': form, })
def form_valid(self, form): """ Processes a valid form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ #noinspection PyAttributeOutsideInit self.object = form.save() meta = getattr(self.object, '_meta') # Index the object. for backend in get_search_backends(): backend.add(object) #noinspection PyUnresolvedReferences messages.success( self.request, _(u'{0} "{1}" saved.').format( meta.verbose_name, str(self.object) ), buttons=[messages.button( reverse( '{0}:edit'.format(self.url_namespace), args=(self.object.id,) ), _(u'Edit') )] ) return redirect(self.get_success_url())
def edit(request, image_id, callback=None): Image = get_image_model() ImageForm = get_image_edit_form() image = get_object_or_404(Image, id=image_id) if not request.is_ajax(): return HttpResponseBadRequest("Cannot POST to this view without AJAX") if not image.is_editable_by_user(request.user): raise PermissionDenied form = ImageForm(request.POST, request.FILES, instance=image, prefix='image-'+image_id) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) return json_response({ 'success': True, 'image_id': int(image_id), }) else: return json_response({ 'success': False, 'image_id': int(image_id), 'form': render_to_string('wagtailimages/multiple/edit_form.html', { 'image': image, 'form': form, }, context_instance=RequestContext(request)), })
def edit(request, document_id): Document = get_document_model() DocumentForm = get_document_form(Document) doc = get_object_or_404(Document, id=document_id) if not permission_policy.user_has_permission_for_instance(request.user, 'change', doc): return permission_denied(request) if request.POST: original_file = doc.file form = DocumentForm(request.POST, request.FILES, instance=doc, user=request.user) if form.is_valid(): if 'file' in form.changed_data: # if providing a new document file, delete the old one. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) doc = form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' updated").format(doc.title), buttons=[ messages.button(reverse('wagtaildocs:edit', args=(doc.id,)), _('Edit')) ]) return redirect('wagtaildocs:index') else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm(instance=doc, user=request.user) filesize = None # Get file size when there is a file associated with the Document object if doc.file: try: filesize = doc.file.size except OSError: # File doesn't exist pass if not filesize: messages.error( request, _("The file could not be found. Please change the source or delete the document"), buttons=[messages.button(reverse('wagtaildocs:delete', args=(doc.id,)), _('Delete'))] ) return render(request, "wagtaildocs/documents/edit.html", { 'document': doc, 'filesize': filesize, 'form': form, 'user_can_delete': permission_policy.user_has_permission_for_instance( request.user, 'delete', doc ), })
def edit(request, media_id): Media = get_media_model() MediaForm = get_media_form(Media) media = get_object_or_404(Media, id=media_id) if not permission_policy.user_has_permission_for_instance(request.user, 'change', media): return permission_denied(request) if request.POST: original_file = media.file form = MediaForm(request.POST, request.FILES, instance=media, user=request.user) if form.is_valid(): if 'file' in form.changed_data: # if providing a new media file, delete the old one. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) media = form.save() # Reindex the media entry to make sure all tags are indexed for backend in get_search_backends(): backend.add(media) messages.success(request, _("Media file '{0}' updated").format(media.title), buttons=[ messages.button(reverse('wagtailmedia:edit', args=(media.id,)), _('Edit')) ]) return redirect('wagtailmedia:index') else: messages.error(request, _("The media could not be saved due to errors.")) else: form = MediaForm(instance=media, user=request.user) filesize = None # Get file size when there is a file associated with the Media object if media.file: try: filesize = media.file.size except OSError: # File doesn't exist pass if not filesize: messages.error( request, _("The file could not be found. Please change the source or delete the media file"), buttons=[messages.button(reverse('wagtailmedia:delete', args=(media.id,)), _('Delete'))] ) return render(request, "wagtailmedia/media/edit.html", { 'media': media, 'filesize': filesize, 'form': form, 'user_can_delete': permission_policy.user_has_permission_for_instance( request.user, 'delete', media ), })
def edit(request, document_id): Document = get_document_model() DocumentForm = get_document_form(Document) doc = get_object_or_404(Document, id=document_id) if not permission_policy.user_has_permission_for_instance(request.user, 'change', doc): return permission_denied(request) if request.method == 'POST': original_file = doc.file form = DocumentForm(request.POST, request.FILES, instance=doc, user=request.user) if form.is_valid(): if 'file' in form.changed_data: # if providing a new document file, delete the old one. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) doc = form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' updated").format(doc.title), buttons=[ messages.button(reverse('wagtaildocs:edit', args=(doc.id,)), _('Edit')) ]) return redirect('wagtaildocs:index') else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm(instance=doc, user=request.user) filesize = None # Get file size when there is a file associated with the Document object if doc.file: try: filesize = doc.file.size except OSError: # File doesn't exist pass if not filesize: messages.error( request, _("The file could not be found. Please change the source or delete the document"), buttons=[messages.button(reverse('wagtaildocs:delete', args=(doc.id,)), _('Delete'))] ) return render(request, "wagtaildocs/documents/edit.html", { 'document': doc, 'filesize': filesize, 'form': form, 'user_can_delete': permission_policy.user_has_permission_for_instance( request.user, 'delete', doc ), })
def edit(request, image_id): Image = get_image_model() ImageForm = get_image_form(Image) image = get_object_or_404(Image, id=image_id) if not image.is_editable_by_user(request.user): raise PermissionDenied if request.POST: original_file = image.file form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): if 'file' in form.changed_data: # if providing a new image file, delete the old one and all renditions. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) image.renditions.all().delete() form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' updated.").format(image.title), buttons=[ messages.button(reverse('wagtailimages_edit_image', args=(image.id,)), _('Edit again')) ]) return redirect('wagtailimages_index') else: messages.error(request, _("The image could not be saved due to errors.")) else: form = ImageForm(instance=image) # Check if we should enable the frontend url generator try: reverse('wagtailimages_serve', args=('foo', '1', 'bar')) url_generator_enabled = True except NoReverseMatch: url_generator_enabled = False # Get file size try: filesize = image.file.size except OSError: # File doesn't exist filesize = None messages.error(request, _("The source image file could not be found. Please change the source or delete the image.").format(image.title), buttons=[ messages.button(reverse('wagtailimages_delete_image', args=(image.id,)), _('Delete')) ]) return render(request, "wagtailimages/images/edit.html", { 'image': image, 'form': form, 'url_generator_enabled': url_generator_enabled, 'filesize': filesize, })
def post_save_signal_handler(instance, **kwargs): indexed_instance = get_indexed_instance(instance) if indexed_instance: cur_language = translation.get_language() for backend in get_search_backends(with_auto_update=True): backend_language = getattr(backend, 'language_code', None) if backend_language is not None: translation.activate(backend_language) backend.add(indexed_instance) translation.activate(cur_language)
def post_save_signal_handler(instance, **kwargs): update_fields = kwargs.get('update_fields') social_fields = frozenset(('cached_facebook_count', 'cached_last_updated')) if update_fields == social_fields: return # Don't update the search index if we are just updating facebook page counts indexed_instance = get_indexed_instance(instance) if indexed_instance: for backend in get_search_backends(with_auto_update=True): backend.add(indexed_instance)
def edit(request, video_id): VideoForm = get_video_form(Video) video = get_object_or_404(Video, id=video_id) if request.POST: original_file = video.file form = VideoForm(request.POST, request.FILES, instance=video) if form.is_valid(): if 'file' in form.changed_data: # if providing a new video file, delete the old one and all renditions. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) # Set new video file size video.file_size = video.file.size video = form.save() video.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(video) messages.success(request, _("Video '{0}' updated.").format(video.title), buttons=[ messages.button(reverse('wagtailvideos:edit', args=(video.id,)), _('Edit again')) ]) return redirect('wagtailvideos:index') else: messages.error(request, _("The video could not be saved due to errors.")) else: form = VideoForm(instance=video) if not video._meta.get_field('file').storage.exists(video.file.name): # Give error if image file doesn't exist messages.error(request, _( "The source video file could not be found. Please change the source or delete the video." ).format(video.title), buttons=[ messages.button(reverse('wagtailvideos:delete', args=(video.id,)), _('Delete')) ]) return render(request, "wagtailvideos/videos/edit.html", { 'video': video, 'form': form, 'filesize': video.get_file_size(), 'can_transcode': ffmpeg.installed(), 'transcodes': video.transcodes.all(), 'transcode_form': VideoTranscodeAdminForm(video=video), 'user_can_delete': permission_policy.user_has_permission_for_instance(request.user, 'delete', video) })
def poster_image_upload(request, embed_id): Image = get_image_model() ImageForm = get_image_form() searchform = SearchForm() if request.POST: image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) if request.GET.get('select_format'): form = ImageInsertionForm(initial={'alt_text': image.default_alt_text}) return render_modal_workflow( request, 'wagtailimages/chooser/select_format.html', 'wagtailimages/chooser/select_format.js', {'image': image, 'form': form} ) else: # not specifying a format; return the image details now embed = Embed.objects.get(id=embed_id) embed_image = EmbedVideoPosterImage(embed=embed, image=image) embed_image.save() image_json = get_image_json(image) return render_modal_workflow( request, None, 'wagtailimages/chooser/poster_image_chosen.js', {'image_json': image_json, 'posterimage_id': embed_image.id} ) else: form = ImageForm() images = Image.objects.order_by('title') return render_modal_workflow( request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js', { 'images': images, 'uploadform': form, 'searchform': searchform, 'max_filesize': MAX_UPLOAD_SIZE, 'embed_id': embed_id } )
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form() searchform = SearchForm() if request.POST: image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) if request.GET.get('select_format'): form = ImageInsertionForm( initial={'alt_text': image.default_alt_text}) return render_modal_workflow( request, 'wagtailimages/chooser/select_format.html', 'wagtailimages/chooser/select_format.js', { 'image': image, 'form': form }) else: # not specifying a format; return the image details now return render_modal_workflow( request, None, 'wagtailimages/chooser/image_chosen.js', {'image_json': get_image_json(image)}) else: form = ImageForm() images = Image.objects.order_by('title') return render_modal_workflow( request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js', { 'images': images, 'uploadform': form, 'searchform': searchform, 'max_filesize': MAX_UPLOAD_SIZE })
def add(request): if request.POST: doc = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=doc) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' added.").format(doc.title)) return redirect("wagtaildocs_index") else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm() return render(request, "wagtaildocs/documents/add.html", {"form": form})
def edit(request, doc_id, callback=None): Document = get_document_model() DocumentMultiForm = get_document_multi_form(Document) doc = get_object_or_404(Document, id=doc_id) if not request.is_ajax(): return HttpResponseBadRequest("Cannot POST to this view without AJAX") if not permission_policy.user_has_permission_for_instance( request.user, 'change', doc): raise PermissionDenied form = DocumentMultiForm(request.POST, request.FILES, instance=doc, prefix='doc-' + doc_id, user=request.user) if form.is_valid(): form.save() # Reindex the doc to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) return JsonResponse({ 'success': True, 'doc_id': int(doc_id), }) else: return JsonResponse({ 'success': False, 'doc_id': int(doc_id), 'form': render_to_string('wagtaildocs/multiple/edit_form.html', { 'doc': doc, 'form': form, }, request=request), })
def form_valid(self, form): """ Processes successful form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ self.object = form.save() for backend in get_search_backends(): backend.add(self.object) instance_json = json.dumps({ 'id': self.object.id, 'title': unicode(self.object) }) return render_modal_workflow(self.request, None, self.chosen_javascript, {'instance_json': instance_json})
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form(Image) searchform = SearchForm() if request.method == "POST": image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image, user=request.user) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) if request.GET.get("select_format"): form = ImageInsertionForm(initial={"alt_text": image.default_alt_text}) return render_modal_workflow( request, "wagtailimages/chooser/select_format.html", "wagtailimages/chooser/select_format.js", {"image": image, "form": form}, ) else: # not specifying a format; return the image details now return render_modal_workflow( request, None, "wagtailimages/chooser/image_chosen.js", {"image_json": get_image_json(image)} ) else: form = ImageForm(user=request.user) images = Image.objects.order_by("title") return render_modal_workflow( request, "wagtailimages/chooser/chooser.html", "wagtailimages/chooser/chooser.js", {"images": images, "uploadform": form, "searchform": searchform}, )
def form_valid(self, form): """ Processes a valid form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ #noinspection PyAttributeOutsideInit self.object = form.save() # Index the link. for backend in get_search_backends(): backend.add(self.object) #noinspection PyUnresolvedReferences return render_modal_workflow( self.request, None, '{0}/chosen.js'.format(self.template_dir), {'obj': self.get_json(self.object)} )
def edit(request, embed_video_id): EmbedVideo = get_embed_video_model() EmbedVideoForm = get_embed_video_form(EmbedVideo) embed_video = get_object_or_404(EmbedVideo, id=embed_video_id) if not embed_video.is_editable_by_user(request.user): raise PermissionDenied if request.POST: form = EmbedVideoForm(request.POST, request.FILES, instance=embed_video) if form.is_valid(): form.save() # Reindex the embed_video to make sure all tags are indexed for backend in get_search_backends(): backend.add(embed_video) messages.success( request, _("Video '{0}' updated.").format(embed_video.title), buttons=[ messages.button( reverse('wagtail_embed_videos_edit_embed_video', args=(embed_video.id, )), _('Edit again')) ]) return redirect('wagtail_embed_videos_index') else: messages.error(request, _("The video could not be saved due to errors.")) else: form = EmbedVideoForm(instance=embed_video) return render(request, "wagtail_embed_videos/embed_videos/edit.html", { 'embed_video': embed_video, 'form': form, })
def edit(request, report_id, callback=None): Report = get_report_model() ReportForm = get_report_form(Report) report = get_object_or_404(Report, id=report_id) if not request.is_ajax(): return HttpResponseBadRequest("Cannot POST to this view without AJAX") if not permission_policy.user_has_permission_for_instance( request.user, 'change', report): raise PermissionDenied form = ReportForm(request.POST, instance=report, user=request.user) if form.is_valid(): form.save() # Reindex the report to make sure all tags are indexed for backend in get_search_backends(): backend.add(report) return JsonResponse({ 'success': True, 'report_id': int(report_id), }) else: return JsonResponse({ 'success': False, 'report_id': int(report_id), 'form': render_to_string('wagtailreports/multiple/edit_form.html', { 'report': report, 'form': form, }, request=request), })
def form_valid(self, form): """ Processes successful form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ # Set the object from form data. self.object = form.save() # Reindex the instance to make sure all tags are indexed. for backend in get_search_backends(): backend.add(self.object) # Add success message. messages.success( self.request, _(u"{0} '{1}' saved.").format( unicode(self.model._meta.verbose_name), unicode(self.object))) # Redirect to success URL. return redirect(self.success_url)
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form(Image) searchform = SearchForm() if request.POST: image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) if request.GET.get('select_format'): form = ImageInsertionForm(initial={'alt_text': image.default_alt_text}) return render_modal_workflow( request, 'wagtailimages/chooser/select_format.html', 'wagtailimages/chooser/select_format.js', {'image': image, 'form': form} ) else: # not specifying a format; return the image details now return render_modal_workflow( request, None, 'wagtailimages/chooser/image_chosen.js', {'image_json': get_image_json(image)} ) else: form = ImageForm() images = Image.objects.order_by('title') return render_modal_workflow( request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js', {'images': images, 'uploadform': form, 'searchform': searchform} )
def add(request): if request.POST: doc = Document(uploaded_by_user=request.user) form = DocumentForm(request.POST, request.FILES, instance=doc) if form.is_valid(): form.save() # Reindex the document to make sure all tags are indexed for backend in get_search_backends(): backend.add(doc) messages.success(request, _("Document '{0}' added.").format(doc.title)) return redirect('wagtaildocs_index') else: messages.error(request, _("The document could not be saved due to errors.")) else: form = DocumentForm() return render(request, "wagtaildocs/documents/add.html", { 'form': form, })
def form_valid(self, form): """ Processes successful form submittal. :param form: the form instance. :rtype: django.http.HttpResponse. """ self.object = form.save() for backend in get_search_backends(): backend.add(self.object) instance_json = json.dumps({ 'id': self.object.id, 'title': unicode(self.object) }) return render_modal_workflow( self.request, None, self.chosen_javascript, {'instance_json': instance_json} )
def edit(request, video_id, callback=None): VideoForm = get_video_edit_form(Video) video = get_object_or_404(Video, id=video_id) if not request.is_ajax(): return HttpResponseBadRequest("Cannot POST to this view without AJAX") form = VideoForm(request.POST, request.FILES, instance=video, prefix='video-' + video_id) if form.is_valid(): form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(video) return JsonResponse({ 'success': True, 'video_id': int(video_id), }) else: return JsonResponse({ 'success': False, 'video_id': int(video_id), 'form': render_to_string('wagtailvideos/multiple/edit_form.html', { 'video': video, 'form': form, }, request=request), })
def test_get_search_backends_multiple(self): backends = list(get_search_backends()) self.assertEqual(len(backends), 2)
def test_get_search_backends_without_auto_update_disabled(self): backends = list(get_search_backends()) self.assertEqual(len(backends), 1)
def test_get_search_backends_with_auto_update(self): backends = list(get_search_backends(with_auto_update=True)) # Auto update is the default self.assertEqual(len(backends), 1)
def test_get_search_backends_with_no_default_defined(self): backends = list(get_search_backends()) self.assertEqual(len(backends), 1) self.assertIsInstance(backends[0], DatabaseSearchBackend)
def test_get_search_backends(self): backends = list(get_search_backends()) self.assertEqual(len(backends), 1) self.assertIsInstance(backends[0], DBSearch)
def post_save_signal_handler(instance, **kwargs): indexed_instance = get_indexed_instance(instance) if indexed_instance: for backend in get_search_backends(with_auto_update=True): backend.add(indexed_instance)
def post_delete_signal_handler(instance, **kwargs): indexed_instance = get_indexed_instance(instance) if indexed_instance: for backend in get_search_backends(): backend.delete(indexed_instance)
def edit(request, image_id): """copied function from the lib added cropped_images for the edit template changed the source of the get_image_form method """ Image = get_image_model() ImageForm = get_image_form(Image) image = get_object_or_404(Image, id=image_id) cropped_images = CroppedImage.objects.filter(full_image=image) if not permission_policy.user_has_permission_for_instance(request.user, 'change', image): return permission_denied(request) if request.POST: original_file = image.file form = ImageForm(request.POST, request.FILES, instance=image, user=request.user) if form.is_valid(): if 'file' in form.changed_data: # if providing a new image file, delete the old one and all renditions. # NB Doing this via original_file.delete() clears the file field, # which definitely isn't what we want... original_file.storage.delete(original_file.name) image.renditions.all().delete() # Set new image file size image.file_size = image.file.size form.save() # Reindex the image to make sure all tags are indexed for backend in get_search_backends(): backend.add(image) messages.success(request, _("Image '{0}' updated.").format(image.title), buttons=[ messages.button(reverse('wagtailimages:edit', args=(image.id,)), _('Edit again')) ]) if request.POST.get("clipping"): return redirect("/admin/clipping/"+image_id) return redirect('wagtailimages:index') else: messages.error(request, _("The image could not be saved due to errors.")) else: form = ImageForm(instance=image, user=request.user) # Check if we should enable the frontend url generator try: reverse('wagtailimages_serve', args=('foo', '1', 'bar')) url_generator_enabled = True except NoReverseMatch: url_generator_enabled = False if image.is_stored_locally(): # Give error if image file doesn't exist if not os.path.isfile(image.file.path): messages.error(request, _( "The source image file could not be found. Please change the source or delete the " "image." ).format(image.title), buttons=[ messages.button(reverse('wagtailimages:delete', args=(image.id,)), _('Delete')) ]) return render(request, "wagtailimages/images/edit.html", { 'image': image, 'cropped_images': cropped_images, 'form': form, 'url_generator_enabled': url_generator_enabled, 'filesize': image.get_file_size(), 'user_can_delete': permission_policy.user_has_permission_for_instance( request.user, 'delete', image ), })