def email_link(request): link_text = request.GET.get('link_text', '') link_url = request.GET.get('link_url', '') if request.method == 'POST': form = EmailLinkChooserForm(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'url': 'mailto:' + form.cleaned_data['email_address'], 'link_text': form.cleaned_data['link_text'].strip() or form.cleaned_data['email_address'] } ) else: form = EmailLinkChooserForm(initial={'email_address': link_url, 'link_text': link_text}) return render_modal_workflow( request, 'wagtailadmin/chooser/email_link.html', 'wagtailadmin/chooser/email_link.js', shared_context(request, { 'form': form, }) )
def imagecaption_chosen(request, image_id): if request.POST: form = CaptionForm(request.POST) if form.is_valid(): try: if request.POST.get('caption'): image = Image.objects.get(id=image_id) if image.imagecaption.count() > 0: imagecaption = image.imagecaption.all()[0] imagecaption.caption = request.POST.get('caption') imagecaption.save() else: image.imagecaption.add(ImageCaption(image=image, caption=request.POST.get('caption'))) return render_modal_workflow(request, None, "wagtailimagecaption/chooser/caption_chosen.js", { 'response': json.dumps({'status': True}), }) except ObjectDoesNotExist: return None else: form = CaptionForm() return render_modal_workflow( request, "wagtailimagecaption/chooser/caption.html", "wagtailimagecaption/chooser/caption.js", { 'image_id': image_id, 'form': form } )
def chooser_select_format(request, image_id): image = get_object_or_404(get_image_model(), id=image_id) if request.POST: form = ImageInsertionForm(request.POST, initial={"alt_text": image.default_alt_text}) if form.is_valid(): format = get_image_format(form.cleaned_data["format"]) preview_image = image.get_rendition(format.filter_spec) image_json = json.dumps( { "id": image.id, "title": image.title, "format": format.name, "alt": form.cleaned_data["alt_text"], "class": format.classnames, "preview": {"url": preview_image.url, "width": preview_image.width, "height": preview_image.height}, "html": format.image_to_editor_html(image, form.cleaned_data["alt_text"]), } ) return render_modal_workflow( request, None, "wagtailimages/chooser/image_chosen.js", {"image_json": image_json} ) else: 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}, )
def email_link(request): initial_data = { 'link_text': request.GET.get('link_text', ''), 'email_address': request.GET.get('link_url', ''), } if request.method == 'POST': form = EmailLinkChooserForm(request.POST, initial=initial_data) if form.is_valid(): result = { 'url': 'mailto:' + form.cleaned_data['email_address'], 'title': form.cleaned_data['link_text'].strip() or form.cleaned_data['email_address'], # If the user has explicitly entered / edited something in the link_text field, # always use that text. If not, we should favour keeping the existing link/selection # text, where applicable. 'prefer_this_title_as_link_text': ('link_text' in form.changed_data), } return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'result_json': json.dumps(result), } ) else: form = EmailLinkChooserForm(initial=initial_data) return render_modal_workflow( request, 'wagtailadmin/chooser/email_link.html', 'wagtailadmin/chooser/email_link.js', shared_context(request, { 'form': form, }) )
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form() if request.POST: image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() 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}, )
def external_link(request): prompt_for_link_text = bool(request.GET.get('prompt_for_link_text')) if prompt_for_link_text: form_class = ExternalLinkChooserWithLinkTextForm else: form_class = ExternalLinkChooserForm if request.POST: form = form_class(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'url': form.cleaned_data['url'], 'link_text': form.cleaned_data['link_text'] if prompt_for_link_text else form.cleaned_data['url'] }) else: form = form_class() return render_modal_workflow( request, 'wagtailadmin/chooser/external_link.html', 'wagtailadmin/chooser/external_link.js', { 'querystring': get_querystring(request), 'allow_email_link': request.GET.get('allow_email_link'), 'form': form, })
def external_link(request): prompt_for_link_text = bool(request.GET.get('prompt_for_link_text')) if prompt_for_link_text: form_class = ExternalLinkChooserWithLinkTextForm else: form_class = ExternalLinkChooserForm if request.POST: form = form_class(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'url': form.cleaned_data['url'], 'link_text': form.cleaned_data['link_text'] if prompt_for_link_text else form.cleaned_data['url'] } ) else: form = form_class() return render_modal_workflow( request, 'wagtailadmin/chooser/external_link.html', 'wagtailadmin/chooser/external_link.js', shared_context(request, { 'form': form, }) )
def chooser_select_format(request, image_id): image = get_object_or_404(get_image_model(), id=image_id) if request.POST: form = ImageInsertionForm(request.POST, initial={'alt_text': image.default_alt_text}) if form.is_valid(): format = get_image_format(form.cleaned_data['format']) preview_image = image.get_rendition(format.filter_spec) image_json = json.dumps({ 'id': image.id, 'title': image.title, 'format': format.name, 'alt': form.cleaned_data['alt_text'], 'class': format.classnames, 'preview': { 'url': preview_image.url, 'width': preview_image.width, 'height': preview_image.height, }, 'html': format.image_to_editor_html(image, form.cleaned_data['alt_text']), }) return render_modal_workflow( request, None, 'wagtailimages/chooser/image_chosen.js', {'image_json': image_json} ) else: 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} )
def chooser_select_format(request, embed_video_id): embed_video = get_object_or_404(get_embed_video_model(), id=embed_video_id) if request.POST: form = EmbedVideoInsertionForm(request.POST, initial={'alt_text': embed_video.default_alt_text}) if form.is_valid(): # format = get_embed_video_format(form.cleaned_data['format']) preview_embed_video = detect_backend(embed_video.url).get_thumbnail_url() embed_video_json = json.dumps({ 'id': embed_video.id, 'title': embed_video.title, 'format': format.name, 'alt': form.cleaned_data['alt_text'], 'class': format.classnames, 'edit_link': reverse('wagtail_embed_videos:edit', args=(embed_video.id,)), 'preview': { 'url': preview_embed_video, }, 'html': format.embed_video_to_editor_html(embed_video, form.cleaned_data['alt_text']), }) return render_modal_workflow( request, None, 'wagtail_embed_videos/chooser/embed_video_chosen.js', {'embed_video_json': embed_video_json} ) else: form = EmbedVideoInsertionForm(initial={'alt_text': embed_video.default_alt_text}) return render_modal_workflow( request, 'wagtail_embed_videos/chooser/select_format.html', 'wagtail_embed_videos/chooser/select_format.js', {'embed_video': embed_video, 'form': form} )
def span_form(request): prompt_for_text = bool(request.GET.get('prompt_for_text')) if prompt_for_text: form_class = SpanForm else: form_class = ShortSpanForm if request.POST: form = form_class(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'home/span_form_chosen.js', { 'css_class': form.cleaned_data['css_class'], 'text': form.cleaned_data['text'] if prompt_for_text else form.cleaned_data['css_class'] }) else: form = form_class() return render_modal_workflow(request, 'home/span_form.html', 'home/span_form.js', { 'form': form, })
def email_link(request): prompt_for_link_text = bool(request.GET.get('prompt_for_link_text')) if prompt_for_link_text: form_class = EmailLinkChooserWithLinkTextForm else: form_class = EmailLinkChooserForm if request.POST: form = form_class(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'url': 'mailto:' + form.cleaned_data['email_address'], 'link_text': form.cleaned_data['link_text'] if (prompt_for_link_text and form.cleaned_data['link_text']) else form.cleaned_data['email_address'] } ) else: form = form_class() return render_modal_workflow( request, 'wagtailadmin/chooser/email_link.html', 'wagtailadmin/chooser/email_link.js', shared_context(request, { 'form': form, }) )
def chooser_upload(request): VideoForm = get_video_form(Video) searchform = SearchForm() if request.POST: video = Video(uploaded_by_user=request.user) form = VideoForm(request.POST, request.FILES, instance=video) if form.is_valid(): video.uploaded_by_user = request.user video.save() # Reindex the video to make sure all tags are indexed search_index.insert_or_update_object(video) return render_modal_workflow( request, None, 'wagtailvideos/chooser/video_chosen.js', {'video_json': get_video_json(video)}) else: form = VideoForm() videos = Video.objects.order_by('title') paginator, videos = paginate(request, videos, per_page=12) return render_modal_workflow(request, 'wagtailvideos/chooser/chooser.html', 'wagtailvideos/chooser/chooser.js', { 'videos': videos, 'uploadform': form, 'searchform': searchform })
def chooser_select_format(request, image_id): image = get_object_or_404(get_image_model(), id=image_id) if request.POST: form = ImageInsertionForm(request.POST, initial={'alt_text': image.default_alt_text}) if form.is_valid(): format = get_image_format(form.cleaned_data['format']) preview_image = image.get_rendition(format.filter_spec) image_json = json.dumps({ 'id': image.id, 'title': image.title, 'format': format.name, 'alt': form.cleaned_data['alt_text'], 'class': format.classnames, 'preview': { 'url': preview_image.url, 'width': preview_image.width, 'height': preview_image.height, }, 'html': format.image_to_editor_html(image, form.cleaned_data['alt_text']), }) return render_modal_workflow( request, None, 'wagtailimages/chooser/image_chosen.js', {'image_json': image_json} ) else: 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} )
def chooser_upload(request): Report = get_report_model() ReportForm = get_report_form(Report) if request.method == 'POST': report = Report(created_by_user=request.user) form = ReportForm(request.POST, request.FILES, instance=report, user=request.user) if form.is_valid(): form.save() # Reindex the report to make sure all tags are indexed search_index.insert_or_update_object(report) return render_modal_workflow( request, None, 'wagtailreports/chooser/report_chosen.js', {'report_json': get_report_json(report)}) else: form = ReportForm(user=request.user) reports = Report.objects.order_by('title') return render_modal_workflow(request, 'wagtailreports/chooser/chooser.html', 'wagtailreports/chooser/chooser.js', { 'reports': reports, 'uploadform': form })
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form() if request.POST: image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() 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} )
def chooser_upload(request): if request.POST: form = EmbedForm(request.POST, request.FILES) if form.is_valid(): try: embed_html = embed_to_editor_html(form.cleaned_data['url']) return render_modal_workflow( request, None, 'wagtailembeds/chooser/embed_chosen.js', {'embed_html': embed_html} ) except Exception as e : #print e #import traceback #traceback.print_exc() errors = form._errors.setdefault('url', ErrorList()) if type(e) == NotImplementedOembedException: errors.append("This URL is not supported by an oembed provider. You may try embedding it using Embedly by setting a propery EMBEDLY_KEY in your settings.") elif type(e) == AccessDeniedEmbedlyException: errors.append("There seems to be a problem with your embedly API key. Please check your settings.") elif type(e) == NotFoundEmbedlyException: errors.append("The URL you are trying to embed cannot be found.") elif type(e) == EmbedlyException: errors.append("There seems to be an error with Embedly while trying to embed this URL. Please try again later.") else: errors.append(str(e) ) return render_modal_workflow(request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { 'form': form, }) else: form = EmbedForm() return render_modal_workflow(request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { 'form': form, })
def choose_snippet(request, id, content_type_app_name, content_type_model_name): """ Choose snippet and display its representation in the Hallo.js richtext field. """ model = get_snippet_model_from_url_params(content_type_app_name, content_type_model_name) if not user_can_edit_snippet_type(request.user, model): raise PermissionDenied try: model.objects.get(id=id) except ObjectDoesNotExist: return render_modal_workflow( request, None, None, {'error': 'Sorry, an error occurred. Contact support or try again later.'} ) embed_html = embed_to_editor_html(id, content_type_app_name, content_type_model_name) return render_modal_workflow( request, None, 'wagtailembedder/editor/snippet_chosen.js', {'embed_html': embed_html} )
def email_link(request): prompt_for_link_text = bool(request.GET.get("prompt_for_link_text")) if prompt_for_link_text: form_class = EmailLinkChooserWithLinkTextForm else: form_class = EmailLinkChooserForm if request.POST: form = form_class(request.POST) if form.is_valid(): return render_modal_workflow( request, None, "wagtailadmin/chooser/external_link_chosen.js", { "url": "mailto:" + form.cleaned_data["email_address"], "link_text": form.cleaned_data["link_text"] if (prompt_for_link_text and form.cleaned_data["link_text"]) else form.cleaned_data["email_address"], }, ) else: form = form_class() return render_modal_workflow( request, "wagtailadmin/chooser/email_link.html", "wagtailadmin/chooser/email_link.js", shared_context(request, {"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 search_index.insert_or_update_object(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 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 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 email_link(request): link_text = request.GET.get('link_text', '') link_url = request.GET.get('link_url', '') if request.method == 'POST': form = EmailLinkChooserForm(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'url': 'mailto:' + form.cleaned_data['email_address'], 'link_text': form.cleaned_data['link_text'].strip() or form.cleaned_data['email_address'] }) else: form = EmailLinkChooserForm(initial={ 'email_address': link_url, 'link_text': link_text }) return render_modal_workflow(request, 'wagtailadmin/chooser/email_link.html', 'wagtailadmin/chooser/email_link.js', shared_context(request, { 'form': form, }))
def chooser_upload(request): if request.POST: form = EmbedForm(request.POST, request.FILES) if form.is_valid(): error = None try: embed_html = embed_to_editor_html(form.cleaned_data['url']) return render_modal_workflow( request, None, 'wagtailembeds/chooser/embed_chosen.js', {'embed_html': embed_html} ) except AccessDeniedEmbedlyException: error = _("There seems to be a problem with your embedly API key. Please check your settings.") except EmbedNotFoundException: error = _("Cannot find an embed for this URL.") except EmbedlyException: error = _("There seems to be an error with Embedly while trying to embed this URL. Please try again later.") if error: errors = form._errors.setdefault('url', ErrorList()) errors.append(error) return render_modal_workflow(request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { 'form': form, }) else: form = EmbedForm() return render_modal_workflow(request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { 'form': form, })
def email_link(request): prompt_for_link_text = bool(request.GET.get('prompt_for_link_text')) if prompt_for_link_text: form_class = EmailLinkChooserWithLinkTextForm else: form_class = EmailLinkChooserForm if request.POST: form = form_class(request.POST) if form.is_valid(): return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'url': 'mailto:' + form.cleaned_data['email_address'], 'link_text': form.cleaned_data['link_text'] if (prompt_for_link_text and form.cleaned_data['link_text']) else form.cleaned_data['email_address'] } ) else: form = form_class() return render_modal_workflow( request, 'wagtailadmin/chooser/email_link.html', 'wagtailadmin/chooser/email_link.js', { 'querystring': get_querystring(request), 'allow_external_link': request.GET.get('allow_external_link'), 'form': form, } )
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form() if request.POST: image = Image(uploaded_by_user=request.user) form = ImageForm(request.POST, request.FILES, instance=image) if form.is_valid(): form.save() 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 })
def chooser_upload(request): if request.POST: form = EmbedForm(request.POST, request.FILES) if form.is_valid(): error = None try: embed_html = embed_to_editor_html(form.cleaned_data['url']) return render_modal_workflow( request, None, 'wagtailembeds/chooser/embed_chosen.js', {'embed_html': embed_html}) except AccessDeniedEmbedlyException: error = "There seems to be a problem with your embedly API key. Please check your settings." except EmbedNotFoundException: error = "Cannot find an embed for this URL." except EmbedlyException: error = "There seems to be an error with Embedly while trying to embed this URL. Please try again later." if error: errors = form._errors.setdefault('url', ErrorList()) errors.append(error) return render_modal_workflow( request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { 'form': form, }) else: form = EmbedForm() return render_modal_workflow(request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { '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 email_link(request): initial_data = { 'link_text': request.GET.get('link_text', ''), 'email_address': request.GET.get('link_url', ''), } if request.method == 'POST': form = EmailLinkChooserForm(request.POST, initial=initial_data) if form.is_valid(): result = { 'url': 'mailto:' + form.cleaned_data['email_address'], 'title': form.cleaned_data['link_text'].strip() or form.cleaned_data['email_address'], # If the user has explicitly entered / edited something in the link_text field, # always use that text. If not, we should favour keeping the existing link/selection # text, where applicable. 'prefer_this_title_as_link_text': ('link_text' in form.changed_data), } return render_modal_workflow( request, None, 'wagtailadmin/chooser/external_link_chosen.js', { 'result_json': json.dumps(result), } ) else: form = EmailLinkChooserForm(initial=initial_data) return render_modal_workflow( request, 'wagtailadmin/chooser/email_link.html', 'wagtailadmin/chooser/email_link.js', shared_context(request, { 'form': form, }) )
def set_privacy(request, page_id): page = get_object_or_404(Page, id=page_id) page_perms = page.permissions_for_user(request.user) if not page_perms.can_set_view_restrictions(): raise PermissionDenied # fetch restriction records in depth order so that ancestors appear first restrictions = page.get_view_restrictions().order_by('page__depth') if restrictions: restriction = restrictions[0] restriction_exists_on_ancestor = (restriction.page != page) else: restriction = None restriction_exists_on_ancestor = False if request.method == 'POST': form = PageViewRestrictionForm(request.POST, instance=restriction) if form.is_valid() and not restriction_exists_on_ancestor: if form.cleaned_data[ 'restriction_type'] == PageViewRestriction.NONE: # remove any existing restriction if restriction: restriction.delete() else: restriction = form.save(commit=False) restriction.page = page form.save() return render_modal_workflow( request, None, 'wagtailadmin/page_privacy/set_privacy_done.js', { 'is_public': (form.cleaned_data['restriction_type'] == 'none') }) else: # request is a GET if not restriction_exists_on_ancestor: if restriction: form = PageViewRestrictionForm(instance=restriction) else: # no current view restrictions on this page form = PageViewRestrictionForm( initial={'restriction_type': 'none'}) if restriction_exists_on_ancestor: # display a message indicating that there is a restriction at ancestor level - # do not provide the form for setting up new restrictions return render_modal_workflow( request, 'wagtailadmin/page_privacy/ancestor_privacy.html', None, { 'page_with_restriction': restriction.page, }) else: # no restriction set at ancestor level - can set restrictions here return render_modal_workflow( request, 'wagtailadmin/page_privacy/set_privacy.html', 'wagtailadmin/page_privacy/set_privacy.js', { 'page': page, 'form': form, })
def chooser_upload(request): Image = get_image_model() ImageForm = get_image_form(Image) 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 search_index.insert_or_update_object(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('-created_at') # allow hooks to modify the queryset for hook in hooks.get_hooks('construct_image_chooser_queryset'): images = hook(images, request) paginator, images = paginate(request, images, per_page=12) context = get_chooser_context(request) context.update({ 'images': images, 'uploadform': form, }) return render_modal_workflow(request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js', context)
def choose(request, content_type_app_name, content_type_model_name): content_type = get_content_type_from_url_params(content_type_app_name, content_type_model_name) model = content_type.model_class() snippet_type_name = get_snippet_type_name(content_type)[0] items = model.objects.all() p = request.GET.get("p", 1) paginator = Paginator(items, 25) try: paginated_items = paginator.page(p) except PageNotAnInteger: paginated_items = paginator.page(1) except EmptyPage: paginated_items = paginator.page(paginator.num_pages) return render_modal_workflow( request, 'wagtailsnippets/chooser/choose.html', 'wagtailsnippets/chooser/choose.js', { 'content_type': content_type, 'snippet_type_name': snippet_type_name, 'items': paginated_items, })
def chooser(request): Document = get_document_model() if permission_policy.user_has_permission(request.user, 'add'): DocumentForm = get_document_form(Document) uploadform = DocumentForm(user=request.user) else: uploadform = None documents = Document.objects.all() # allow hooks to modify the queryset for hook in hooks.get_hooks('construct_document_chooser_queryset'): documents = hook(documents, request) q = None if 'q' in request.GET or 'p' in request.GET or 'collection_id' in request.GET: collection_id = request.GET.get('collection_id') if collection_id: documents = documents.filter(collection=collection_id) searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data['q'] documents = documents.search(q) is_searching = True else: documents = documents.order_by('-created_at') is_searching = False # Pagination paginator, documents = paginate(request, documents, per_page=10) return render( request, "wagtaildocs/chooser/results.html", { 'documents': documents, 'query_string': q, 'is_searching': is_searching, }) else: searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None documents = documents.order_by('-created_at') paginator, documents = paginate(request, documents, per_page=10) return render_modal_workflow( request, 'wagtaildocs/chooser/chooser.html', 'wagtaildocs/chooser/chooser.js', { 'documents': documents, 'uploadform': uploadform, 'searchform': searchform, 'collections': collections, 'is_searching': False, })
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 browse(request, parent_page_id=None): # Find parent page if parent_page_id: parent_page = get_object_or_404(Page, id=parent_page_id) else: parent_page = Page.get_first_root_node() # Get children of parent page pages = parent_page.get_children() # Filter them by page type # A missing or empty page_type parameter indicates 'all page types' (i.e. descendants of wagtailcore.page) page_type_string = request.GET.get('page_type') or 'wagtailcore.page' if page_type_string != 'wagtailcore.page': try: desired_classes = page_models_from_string(page_type_string) except (ValueError, LookupError): raise Http404 # restrict the page listing to just those pages that: # - are of the given content type (taking into account class inheritance) # - or can be navigated into (i.e. have children) choosable_pages = filter_page_type(pages, desired_classes) descendable_pages = pages.filter(numchild__gt=0) pages = choosable_pages | descendable_pages else: desired_classes = (Page, ) can_choose_root = request.GET.get('can_choose_root', False) # Parent page can be chosen if it is a instance of desired_classes parent_page.can_choose = issubclass(parent_page.specific_class or Page, desired_classes) and (can_choose_root or not parent_page.is_root()) # Pagination # We apply pagination first so we don't need to walk the entire list # in the block below paginator, pages = paginate(request, pages, per_page=25) # Annotate each page with can_choose/can_decend flags for page in pages: if desired_classes == (Page, ): page.can_choose = True else: page.can_choose = issubclass(page.specific_class or Page, desired_classes) page.can_descend = page.get_children_count() # Render return render_modal_workflow( request, 'wagtailadmin/chooser/browse.html', 'wagtailadmin/chooser/browse.js', shared_context(request, { 'parent_page': parent_page, 'pages': pages, 'search_form': SearchForm(), 'page_type_string': page_type_string, 'page_type_names': [desired_class.get_verbose_name() for desired_class in desired_classes], 'page_types_restricted': (page_type_string != 'wagtailcore.page') }) )
def chooser(request, get_results=False): # Get most popular queries queries = models.Query.get_most_popular() # If searching, filter results by query string query_string = None if "q" in request.GET: searchform = SearchForm(request.GET) if searchform.is_valid(): query_string = searchform.cleaned_data["q"] queries = queries.filter(query_string__icontains=normalise_query_string(query_string)) else: searchform = SearchForm() paginator, queries = paginate(request, queries, per_page=10) # Render if get_results: return render(request, "wagtailsearch/queries/chooser/results.html", {"queries": queries}) else: return render_modal_workflow( request, "wagtailsearch/queries/chooser/chooser.html", "wagtailsearch/queries/chooser/chooser.js", {"queries": queries, "searchform": searchform}, )
def embed_video_chosen(request, embed_video_id): embed_video = get_object_or_404(get_embed_video_model(), id=embed_video_id) return render_modal_workflow( request, None, 'wagtail_embed_videos/chooser/embed_video_chosen.js', {'embed_video_json': get_embed_video_json(embed_video)} )
def add_audio(request): sc = settings.SOUNDCLOUD_SETTINGS access_token = None if not cache.get("sc_access_token"): response = requests.post(sc["API_URL"] + "/oauth2/token/", data={ "client_id": sc["CLIENT_ID"], "client_secret": sc["CLIENT_SECRET"], "username": sc["USERNAME"], "password": sc["PASSWORD"], "grant_type": "password" }) if response.ok: access_token = response.json()["access_token"] cache.set("sc_access_token", access_token, response.json()["expires_in"]) else: access_token = cache.get("sc_access_token") obj_id = request.GET.get("id") return render_modal_workflow( request, "album/add_audio.html", None, { "add_object_url": reverse("audio_add"), "name": "Audio", "obj_id": obj_id, "access_token": access_token, "client_id": sc["CLIENT_ID"] })
def document_chosen(request, document_id): document = get_object_or_404(get_document_model(), id=document_id) return render_modal_workflow( request, None, 'wagtaildocs/chooser/document_chosen.js', {'document_json': get_document_json(document)} )
def chooser(request, get_results=False): # Get most popular queries queries = models.Query.get_most_popular() # If searching, filter results by query string query_string = None if 'q' in request.GET: searchform = SearchForm(request.GET) if searchform.is_valid(): query_string = searchform.cleaned_data['q'] queries = queries.filter(query_string__icontains=normalise_query_string(query_string)) else: searchform = SearchForm() paginator, queries = paginate(request, queries, per_page=10) # Render if get_results: return render(request, "wagtailsearch/queries/chooser/results.html", { 'queries': queries, }) else: return render_modal_workflow( request, 'wagtailsearch/queries/chooser/chooser.html', 'wagtailsearch/queries/chooser/chooser.js', { 'queries': queries, 'searchform': searchform, } )
def chooser(request): Document = get_document_model() if permission_policy.user_has_permission(request.user, "add"): DocumentForm = get_document_form(Document) uploadform = DocumentForm() else: uploadform = None documents = [] q = None is_searching = False if "q" in request.GET or "p" in request.GET or "collection_id" in request.GET: documents = Document.objects.all() collection_id = request.GET.get("collection_id") if collection_id: documents = documents.filter(collection=collection_id) searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data["q"] documents = documents.search(q) is_searching = True else: documents = documents.order_by("-created_at") is_searching = False # Pagination paginator, documents = paginate(request, documents, per_page=10) return render( request, "wagtaildocs/chooser/results.html", {"documents": documents, "query_string": q, "is_searching": is_searching}, ) else: searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None documents = Document.objects.order_by("-created_at") paginator, documents = paginate(request, documents, per_page=10) return render_modal_workflow( request, "wagtaildocs/chooser/chooser.html", "wagtaildocs/chooser/chooser.js", { "documents": documents, "uploadform": uploadform, "searchform": searchform, "collections": collections, "is_searching": False, }, )
def image_chosen(request, image_id): image = get_object_or_404(get_image_model(), id=image_id) return render_modal_workflow( request, None, 'wagtailimages/chooser/image_chosen.js', {'image_json': get_image_json(image)} )
def image_chosen(request, image_id): image = get_object_or_404(get_image_model(), id=image_id) return render_modal_workflow( request, None, 'wagtailimages/chooser/image_chosen.js', {'image_json': get_image_json(image)} )
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_audio(request): sc = settings.SOUNDCLOUD_SETTINGS access_token = None if not cache.get("sc_access_token"): response = requests.post(sc["API_URL"] + "/oauth2/token/", data={ "client_id": sc["CLIENT_ID"], "client_secret": sc["CLIENT_SECRET"], "username": sc["USERNAME"], "password": sc["PASSWORD"], "grant_type": "password" } ) if response.ok: access_token = response.json()["access_token"] cache.set("sc_access_token", access_token, response.json()["expires_in"]) else: access_token = cache.get("sc_access_token") obj_id = request.GET.get("id") return render_modal_workflow( request, "album/add_audio.html", None, { "add_object_url": reverse("audio_add"), "name": "Audio", "obj_id": obj_id, "access_token": access_token, "client_id": sc["CLIENT_ID"] })
def choose(request, content_type_app_name, content_type_model_name): content_type = get_content_type_from_url_params(content_type_app_name, content_type_model_name) model = content_type.model_class() snippet_type_name = get_snippet_type_name(content_type)[0] items = model.objects.all() p = request.GET.get("p", 1) paginator = Paginator(items, 25) try: paginated_items = paginator.page(p) except PageNotAnInteger: paginated_items = paginator.page(1) except EmptyPage: paginated_items = paginator.page(paginator.num_pages) return render_modal_workflow( request, 'wagtailsnippets/chooser/choose.html', 'wagtailsnippets/chooser/choose.js', { 'content_type': content_type, 'snippet_type_name': snippet_type_name, 'items': paginated_items, } )
def get(self, request, *args, **kwargs): self.is_searching = False self.object_list = self.get_queryset() if 'q' in self.request.GET or 'p' in self.request.GET: searchform = self.form_class(self.request.GET) if searchform.is_valid(): self.is_searching = True self.object_list = self.object_list.filter( **{ '{}__icontains'.format(self.title_field): searchform.cleaned_data.get('q') }) paginator, self.object_list = paginate(request, self.object_list, per_page=10) context = self.get_context_data( searchform=searchform, query_string=searchform.cleaned_data.get('q')) return render(request, self.results_template_name, context) else: searchform = self.form_class() paginator, self.object_list = paginate(request, self.object_list, per_page=10) context = self.get_context_data(searchform=searchform) return render_modal_workflow(request, self.template_name, self.js_handler_template_name, context)
def chooser(request): if request.user.has_perm('wagtaildocs.add_document'): uploadform = DocumentForm() else: uploadform = None documents = [] q = None is_searching = False if 'q' in request.GET or 'p' in request.GET: searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data['q'] documents = Document.objects.search(q) is_searching = True else: documents = Document.objects.order_by('-created_at') is_searching = False # Pagination p = request.GET.get("p", 1) paginator = Paginator(documents, 10) try: documents = paginator.page(p) except PageNotAnInteger: documents = paginator.page(1) except EmptyPage: documents = paginator.page(paginator.num_pages) return render( request, "wagtaildocs/chooser/results.html", { 'documents': documents, 'query_string': q, 'is_searching': is_searching, }) else: searchform = SearchForm() documents = Document.objects.order_by('-created_at') p = request.GET.get("p", 1) paginator = Paginator(documents, 10) try: documents = paginator.page(p) except PageNotAnInteger: documents = paginator.page(1) except EmptyPage: documents = paginator.page(paginator.num_pages) return render_modal_workflow( request, 'wagtaildocs/chooser/chooser.html', 'wagtaildocs/chooser/chooser.js', { 'documents': documents, 'uploadform': uploadform, 'searchform': searchform, 'is_searching': False, })
def get(self, request, *args, **kwargs): """ Returns GET response. :param request: the request instance. :rtype: django.http.HttpResponse. """ #noinspection PyAttributeOutsideInit self.object_list = self.get_queryset() context = self.get_context_data(force_search=True) if self.form_class: context.update({'form': self.get_form()}) if 'q' in request.GET or 'p' in request.GET: return render( request, '{0}/results.html'.format(self.template_dir), context ) else: return render_modal_workflow( request, '{0}/chooser.html'.format(self.template_dir), '{0}/chooser.js'.format(self.template_dir), context )
def chooser(request): form = EmbedForm() return render_modal_workflow(request, 'wagtailembeds/chooser/chooser.html', 'wagtailembeds/chooser/chooser.js', { 'form': form, })
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 browse(request, parent_page_id=None): page_type = request.GET.get('page_type') or 'wagtailcore.page' content_type_app_name, content_type_model_name = page_type.split('.') is_searching = False try: content_type = ContentType.objects.get_by_natural_key(content_type_app_name, content_type_model_name) except ContentType.DoesNotExist: raise Http404 desired_class = content_type.model_class() if 'q' in request.GET: search_form = SearchForm(request.GET) if search_form.is_valid() and search_form.cleaned_data['q']: pages = desired_class.objects.exclude( depth=1 # never include root ).filter(title__icontains=search_form.cleaned_data['q'])[:10] is_searching = True if not is_searching: if parent_page_id: parent_page = get_object_or_404(Page, id=parent_page_id) else: parent_page = Page.get_first_root_node() parent_page.can_choose = issubclass(parent_page.specific_class, desired_class) search_form = SearchForm() pages = parent_page.get_children() # restrict the page listing to just those pages that: # - are of the given content type (taking into account class inheritance) # - or can be navigated into (i.e. have children) shown_pages = [] for page in pages: page.can_choose = issubclass(page.specific_class, desired_class) page.can_descend = page.get_children_count() if page.can_choose or page.can_descend: shown_pages.append(page) if is_searching: return render(request, 'wagtailadmin/chooser/_search_results.html', { 'querystring': get_querystring(request), 'searchform': search_form, 'pages': pages, 'is_searching': is_searching }) return render_modal_workflow(request, 'wagtailadmin/chooser/browse.html', 'wagtailadmin/chooser/browse.js', { 'allow_external_link': request.GET.get('allow_external_link'), 'allow_email_link': request.GET.get('allow_email_link'), 'querystring': get_querystring(request), 'parent_page': parent_page, 'pages': shown_pages, 'search_form': search_form, 'is_searching': False })
def chooser(request): Image = get_image_model() if permission_policy.user_has_permission(request.user, 'add'): ImageForm = get_image_form(Image) uploadform = ImageForm(user=request.user) else: uploadform = None images = Image.objects.order_by('-created_at') # allow hooks to modify the queryset for hook in hooks.get_hooks('construct_image_chooser_queryset'): images = hook(images, request) if ('q' in request.GET or 'p' in request.GET or 'tag' in request.GET or 'collection_id' in request.GET): # this request is triggered from search, pagination or 'popular tags'; # we will just render the results.html fragment collection_id = request.GET.get('collection_id') if collection_id: images = images.filter(collection=collection_id) searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data['q'] images = images.search(q) is_searching = True else: is_searching = False q = None tag_name = request.GET.get('tag') if tag_name: images = images.filter(tags__name=tag_name) # Pagination paginator, images = paginate(request, images, per_page=12) return render( request, "wagtailimages/chooser/results.html", { 'images': images, 'is_searching': is_searching, 'query_string': q, 'will_select_format': request.GET.get('select_format') }) else: paginator, images = paginate(request, images, per_page=12) context = get_chooser_context(request) context.update({ 'images': images, 'uploadform': uploadform, }) return render_modal_workflow(request, 'wagtailimages/chooser/chooser.html', 'wagtailimages/chooser/chooser.js', context)
def document_chosen(request, document_id): document = get_object_or_404(Document, id=document_id) 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} )
def chooser(request): if request.user.has_perm('wagtaildocs.add_document'): uploadform = DocumentForm() else: uploadform = None documents = [] q = None is_searching = False if 'q' in request.GET or 'p' in request.GET: searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data['q'] documents = Document.objects.search(q) is_searching = True else: documents = Document.objects.order_by('-created_at') is_searching = False # Pagination p = request.GET.get("p", 1) paginator = Paginator(documents, 10) try: documents = paginator.page(p) except PageNotAnInteger: documents = paginator.page(1) except EmptyPage: documents = paginator.page(paginator.num_pages) return render(request, "wagtaildocs/chooser/results.html", { 'documents': documents, 'query_string': q, 'is_searching': is_searching, }) else: searchform = SearchForm() documents = Document.objects.order_by('-created_at') p = request.GET.get("p", 1) paginator = Paginator(documents, 10) try: documents = paginator.page(p) except PageNotAnInteger: documents = paginator.page(1) except EmptyPage: documents = paginator.page(paginator.num_pages) return render_modal_workflow(request, 'wagtaildocs/chooser/chooser.html', 'wagtaildocs/chooser/chooser.js', { 'documents': documents, 'uploadform': uploadform, 'searchform': searchform, 'is_searching': False, })