Initial commit
This commit is contained in:
94
env/lib/python3.10/site-packages/wagtail/admin/views/page_privacy.py
vendored
Normal file
94
env/lib/python3.10/site-packages/wagtail/admin/views/page_privacy.py
vendored
Normal file
@@ -0,0 +1,94 @@
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.shortcuts import get_object_or_404
|
||||
|
||||
from wagtail.admin.forms.pages import PageViewRestrictionForm
|
||||
from wagtail.admin.modal_workflow import render_modal_workflow
|
||||
from wagtail.models import Page, PageViewRestriction
|
||||
|
||||
|
||||
def set_privacy(request, page_id):
|
||||
page = get_object_or_404(Page, id=page_id).specific_deferred
|
||||
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.id != page.id
|
||||
else:
|
||||
restriction = None
|
||||
restriction_exists_on_ancestor = False
|
||||
|
||||
if request.method == "POST":
|
||||
form = PageViewRestrictionForm(
|
||||
request.POST,
|
||||
instance=restriction,
|
||||
private_page_options=page.private_page_options,
|
||||
)
|
||||
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(user=request.user)
|
||||
else:
|
||||
restriction = form.save(commit=False)
|
||||
restriction.page = page
|
||||
restriction.save(user=request.user)
|
||||
# Save the groups many-to-many field
|
||||
form.save_m2m()
|
||||
|
||||
return render_modal_workflow(
|
||||
request,
|
||||
None,
|
||||
None,
|
||||
None,
|
||||
json_data={
|
||||
"step": "set_privacy_done",
|
||||
"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, private_page_options=page.private_page_options
|
||||
)
|
||||
else:
|
||||
# no current view restrictions on this page
|
||||
form = PageViewRestrictionForm(
|
||||
initial={"restriction_type": "none"},
|
||||
private_page_options=page.private_page_options,
|
||||
)
|
||||
|
||||
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,
|
||||
},
|
||||
)
|
||||
elif len(page.private_page_options) == 0:
|
||||
return render_modal_workflow(
|
||||
request,
|
||||
"wagtailadmin/page_privacy/no_privacy.html",
|
||||
None,
|
||||
)
|
||||
else:
|
||||
# no restriction set at ancestor level - can set restrictions here
|
||||
return render_modal_workflow(
|
||||
request,
|
||||
"wagtailadmin/page_privacy/set_privacy.html",
|
||||
None,
|
||||
{
|
||||
"page": page,
|
||||
"form": form,
|
||||
},
|
||||
json_data={"step": "set_privacy"},
|
||||
)
|
||||
Reference in New Issue
Block a user