def chooser(request): Media = get_media_model() media_files = [] q = None is_searching = False if 'q' in request.GET or 'p' in request.GET or 'collection_id' in request.GET: media_files = Media.objects.all() collection_id = request.GET.get('collection_id') if collection_id: media_files = media_files.filter(collection=collection_id) searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data['q'] media_files = media_files.search(q) is_searching = True else: media_files = media_files.order_by('-created_at') is_searching = False # Pagination paginator, media_files = paginate(request, media_files, per_page=10) return render( request, "wagtailmedia/chooser/results.html", { 'media_files': media_files, 'query_string': q, 'is_searching': is_searching, 'pagination_template': pagination_template, }) else: searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None media_files = Media.objects.order_by('-created_at') paginator, media_files = paginate(request, media_files, per_page=10) return render_modal_workflow( request, 'wagtailmedia/chooser/chooser.html', None, { 'media_files': media_files, 'searchform': searchform, 'collections': collections, 'is_searching': False, }, json_data={ 'step': 'chooser', 'error_label': "Server Error", 'error_message': "Report this error to your webmaster with the following information:", 'tag_autocomplete_url': reverse('wagtailadmin_tag_autocomplete'), })
def chooser_upload(request, media_type): Media = get_media_model() MediaForm = get_media_form(Media) if request.method == 'POST': media = Media(uploaded_by_user=request.user, type=media_type) form = MediaForm(request.POST, request.FILES, instance=media, user=request.user, prefix='media-chooser-upload') 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) return render_modal_workflow(request, None, None, None, json_data={ 'step': 'media_chosen', 'result': get_media_json(media) }) media_files = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete']) # allow hooks to modify the queryset for hook in hooks.get_hooks('construct_media_chooser_queryset'): media_files = hook(media_files, request) searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None media_files = media_files.order_by('-created_at') paginator, media_files = paginate(request, media_files, per_page=10) context = { 'media_files': media_files, 'searchform': searchform, 'collections': collections, 'uploadform': form, 'is_searching': False, 'pagination_template': pagination_template, 'media_type': media_type, } return render_modal_workflow(request, 'wagtailmedia/chooser/chooser.html', None, context, json_data={'step': 'chooser'})
def usage(request, media_id): Media = get_media_model() media = get_object_or_404(Media, id=media_id) paginator, used_by = paginate(request, media.get_usage()) return render(request, "wagtailmedia/media/usage.html", { 'media': media, 'used_by': used_by })
def index(request): Media = get_media_model() # Get media files (filtered by user permission) media = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete']) # Ordering if 'ordering' in request.GET and request.GET['ordering'] in [ 'title', '-created_at' ]: ordering = request.GET['ordering'] else: ordering = '-created_at' media = media.order_by(ordering) # Filter by collection current_collection = None collection_id = request.GET.get('collection_id') if collection_id: try: current_collection = Collection.objects.get(id=collection_id) media = media.filter(collection=current_collection) except (ValueError, Collection.DoesNotExist): pass # Search query_string = None if 'q' in request.GET: form = SearchForm(request.GET, placeholder=_("Search media files")) if form.is_valid(): query_string = form.cleaned_data['q'] media = media.search(query_string) else: form = SearchForm(placeholder=_("Search media")) # Pagination paginator, media = paginate(request, media) collections = permission_policy.collections_user_has_any_permission_for( request.user, ['add', 'change']) if len(collections) < 2: collections = None # Create response if request.is_ajax(): return render( request, 'wagtailmedia/media/results.html', { 'ordering': ordering, 'media_files': media, 'query_string': query_string, 'is_searching': bool(query_string), }) else: return render( request, 'wagtailmedia/media/index.html', { 'ordering': ordering, 'media_files': media, 'query_string': query_string, 'is_searching': bool(query_string), 'search_form': form, 'popular_tags': popular_tags_for_model(Media), 'user_can_add': permission_policy.user_has_permission(request.user, 'add'), 'collections': collections, 'current_collection': current_collection, })
def index(request): Media = get_media_model() # Get media files (filtered by user permission) media = permission_policy.instances_user_has_any_permission_for( request.user, ["change", "delete"]) # Ordering if "ordering" in request.GET and request.GET["ordering"] in [ "title", "-created_at", ]: ordering = request.GET["ordering"] else: ordering = "-created_at" media = media.order_by(ordering) # Search query_string = None if "q" in request.GET: form = SearchForm(request.GET, placeholder=_("Search media files")) if form.is_valid(): query_string = form.cleaned_data["q"] media = media.search(query_string) else: form = SearchForm(placeholder=_("Search media")) # Filter by collection current_collection = None collection_id = request.GET.get("collection_id") if collection_id: try: current_collection = Collection.objects.get(id=collection_id) media = media.filter(collection=current_collection) except (ValueError, Collection.DoesNotExist): pass # Filter by tag current_tag = request.GET.get("tag") if current_tag: try: media = media.filter(tags__name=current_tag) except (AttributeError): current_tag = None # Pagination paginator, media = paginate(request, media) collections = permission_policy.collections_user_has_any_permission_for( request.user, ["add", "change"]) if len(collections) < 2: collections = None # Create response if request.headers.get("x-requested-with") == "XMLHttpRequest": return render( request, "wagtailmedia/media/results.html", { "ordering": ordering, "media_files": media, "query_string": query_string, "is_searching": bool(query_string), }, ) else: return render( request, "wagtailmedia/media/index.html", { "ordering": ordering, "media_files": media, "query_string": query_string, "is_searching": bool(query_string), "search_form": form, "popular_tags": popular_tags_for_model(Media), "current_tag": current_tag, "user_can_add": permission_policy.user_has_permission(request.user, "add"), "collections": collections, "current_collection": current_collection, }, )
def chooser(request): media_files = permission_policy.instances_user_has_any_permission_for( request.user, ['change', 'delete']) # allow hooks to modify the queryset for hook in hooks.get_hooks('construct_media_chooser_queryset'): media_files = hook(media_files, request) if permission_policy.user_has_permission(request.user, 'add'): Media = get_media_model() MediaForm = get_media_form(Media) uploadform = MediaForm(user=request.user, prefix='media-chooser-upload') else: uploadform = None q = None is_searching = False 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: media_files = media_files.filter(collection=collection_id) searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data['q'] media_files = media_files.search(q) is_searching = True else: media_files = media_files.order_by('-created_at') is_searching = False # Pagination paginator, media_files = paginate(request, media_files, per_page=10) return render( request, "wagtailmedia/chooser/results.html", { 'media_files': media_files, 'query_string': q, 'is_searching': is_searching, 'pagination_template': pagination_template, }) else: searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None media_files = media_files.order_by('-created_at') paginator, media_files = paginate(request, media_files, per_page=10) return render_modal_workflow( request, 'wagtailmedia/chooser/chooser.html', None, { 'media_files': media_files, 'searchform': searchform, 'collections': collections, 'uploadform': uploadform, 'is_searching': False, 'pagination_template': pagination_template, }, json_data={ 'step': 'chooser', 'error_label': "Server Error", 'error_message': "Report this error to your webmaster with the following information:", 'tag_autocomplete_url': reverse('wagtailadmin_tag_autocomplete'), })
def chooser(request, media_type=None): Media = get_media_model() media_files = permission_policy.instances_user_has_any_permission_for( request.user, ["change", "delete"]) # allow hooks to modify the queryset for hook in hooks.get_hooks("construct_media_chooser_queryset"): media_files = hook(media_files, request) if permission_policy.user_has_permission(request.user, "add"): MediaForm = get_media_form(Media) media_audio = Media(uploaded_by_user=request.user, type="audio") media_video = Media(uploaded_by_user=request.user, type="video") uploadforms = { "audio": MediaForm(user=request.user, prefix="media-chooser-upload", instance=media_audio), "video": MediaForm(user=request.user, prefix="media-chooser-upload", instance=media_video), } if media_type: uploadforms = {media_type: uploadforms[media_type]} else: uploadforms = {} if media_type: media_files = media_files.filter(type=media_type) if ("q" in request.GET or "p" in request.GET or "tag" in request.GET or "collection_id" in request.GET): collection_id = request.GET.get("collection_id") if collection_id: media_files = media_files.filter(collection=collection_id) searchform = SearchForm(request.GET) if searchform.is_valid(): q = searchform.cleaned_data["q"] media_files = media_files.search(q) is_searching = True else: media_files = media_files.order_by("-created_at") is_searching = False q = None tag_name = request.GET.get("tag") if tag_name: media_files = media_files.filter(tags__name=tag_name) # Pagination paginator, media_files = paginate(request, media_files, per_page=10) return render( request, "wagtailmedia/chooser/results.html", { "media_files": media_files, "query_string": q, "is_searching": is_searching, "pagination_template": pagination_template, "media_type": media_type, }, ) else: searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None media_files = media_files.order_by("-created_at") paginator, media_files = paginate(request, media_files, per_page=10) return render_modal_workflow( request, "wagtailmedia/chooser/chooser.html", None, { "media_files": media_files, "searchform": searchform, "collections": collections, "uploadforms": uploadforms, "is_searching": False, "pagination_template": pagination_template, "popular_tags": popular_tags_for_model(Media), "media_type": media_type, }, json_data={ "step": "chooser", "error_label": "Server Error", "error_message": "Report this error to your webmaster with the following information:", "tag_autocomplete_url": reverse("wagtailadmin_tag_autocomplete"), }, )
def chooser_upload(request, media_type): upload_forms = {} if (permission_policy.user_has_permission(request.user, "add") and request.method == "POST"): Media = get_media_model() MediaForm = get_media_form(Media) media = Media(uploaded_by_user=request.user, type=media_type) uploading_form = MediaForm( request.POST, request.FILES, instance=media, user=request.user, prefix="media-chooser-upload", ) if uploading_form.is_valid(): uploading_form.save() # Reindex the media entry to make sure all tags are indexed for backend in get_search_backends(): backend.add(media) return render_modal_workflow( request, None, None, None, json_data={ "step": "media_chosen", "result": get_media_json(media) }, ) if media_type == "audio": video = Media(uploaded_by_user=request.user, type="video") video_form = MediaForm(instance=video, user=request.user, prefix="media-chooser-upload") upload_forms = {"audio": uploading_form, "video": video_form} else: audio = Media(uploaded_by_user=request.user, type="audio") audio_form = MediaForm(instance=audio, user=request.user, prefix="media-chooser-upload") upload_forms = {"audio": audio_form, "video": uploading_form} media_files = permission_policy.instances_user_has_any_permission_for( request.user, ["change", "delete"]) # allow hooks to modify the queryset for hook in hooks.get_hooks("construct_media_chooser_queryset"): media_files = hook(media_files, request) searchform = SearchForm() collections = Collection.objects.all() if len(collections) < 2: collections = None media_files = media_files.order_by("-created_at") paginator, media_files = paginate(request, media_files, per_page=10) context = { "media_files": media_files, "searchform": searchform, "collections": collections, "uploadforms": upload_forms, "is_searching": False, "pagination_template": pagination_template, "media_type": media_type, } return render_modal_workflow( request, "wagtailmedia/chooser/chooser.html", None, context, json_data={"step": "chooser"}, )