def test_editable_pages_for_superuser(self): user = get_user_model().objects.get(email="*****@*****.**") homepage = Page.objects.get(url_path="/home/") christmas_page = EventPage.objects.get( url_path="/home/events/christmas/") unpublished_event_page = EventPage.objects.get( url_path="/home/events/tentative-unpublished-event/") someone_elses_event_page = EventPage.objects.get( url_path="/home/events/someone-elses-event/") user_perms = UserPagePermissionsProxy(user) editable_pages = user_perms.editable_pages() can_edit_pages = user_perms.can_edit_pages() publishable_pages = user_perms.publishable_pages() can_publish_pages = user_perms.can_publish_pages() self.assertTrue(editable_pages.filter(id=homepage.id).exists()) self.assertTrue(editable_pages.filter(id=christmas_page.id).exists()) self.assertTrue( editable_pages.filter(id=unpublished_event_page.id).exists()) self.assertTrue( editable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertTrue(can_edit_pages) self.assertTrue(publishable_pages.filter(id=homepage.id).exists()) self.assertTrue( publishable_pages.filter(id=christmas_page.id).exists()) self.assertTrue( publishable_pages.filter(id=unpublished_event_page.id).exists()) self.assertTrue( publishable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertTrue(can_publish_pages)
def test_editable_pages_for_non_editing_user(self): user = get_user_model().objects.get(username='******') homepage = Page.objects.get(url_path='/home/') christmas_page = EventPage.objects.get( url_path='/home/events/christmas/') unpublished_event_page = EventPage.objects.get( url_path='/home/events/tentative-unpublished-event/') someone_elses_event_page = EventPage.objects.get( url_path='/home/events/someone-elses-event/') user_perms = UserPagePermissionsProxy(user) editable_pages = user_perms.editable_pages() can_edit_pages = user_perms.can_edit_pages() publishable_pages = user_perms.publishable_pages() can_publish_pages = user_perms.can_publish_pages() self.assertFalse(editable_pages.filter(id=homepage.id).exists()) self.assertFalse(editable_pages.filter(id=christmas_page.id).exists()) self.assertFalse( editable_pages.filter(id=unpublished_event_page.id).exists()) self.assertFalse( editable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertFalse(can_edit_pages) self.assertFalse(publishable_pages.filter(id=homepage.id).exists()) self.assertFalse( publishable_pages.filter(id=christmas_page.id).exists()) self.assertFalse( publishable_pages.filter(id=unpublished_event_page.id).exists()) self.assertFalse( publishable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertFalse(can_publish_pages)
def test_editable_pages_for_non_editing_user(self): user = get_user_model().objects.get(username='******') homepage = Page.objects.get(url_path='/home/') christmas_page = EventPage.objects.get(url_path='/home/events/christmas/') unpublished_event_page = EventPage.objects.get(url_path='/home/events/tentative-unpublished-event/') someone_elses_event_page = EventPage.objects.get(url_path='/home/events/someone-elses-event/') user_perms = UserPagePermissionsProxy(user) editable_pages = user_perms.editable_pages() can_edit_pages = user_perms.can_edit_pages() publishable_pages = user_perms.publishable_pages() can_publish_pages = user_perms.can_publish_pages() self.assertFalse(editable_pages.filter(id=homepage.id).exists()) self.assertFalse(editable_pages.filter(id=christmas_page.id).exists()) self.assertFalse(editable_pages.filter(id=unpublished_event_page.id).exists()) self.assertFalse(editable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertFalse(can_edit_pages) self.assertFalse(publishable_pages.filter(id=homepage.id).exists()) self.assertFalse(publishable_pages.filter(id=christmas_page.id).exists()) self.assertFalse(publishable_pages.filter(id=unpublished_event_page.id).exists()) self.assertFalse(publishable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertFalse(can_publish_pages)
def test_editable_pages_for_user_with_edit_permission(self): event_moderator = get_user_model().objects.get( email='*****@*****.**') homepage = Page.objects.get(url_path='/home/') christmas_page = EventPage.objects.get( url_path='/home/events/christmas/') unpublished_event_page = EventPage.objects.get( url_path='/home/events/tentative-unpublished-event/') someone_elses_event_page = EventPage.objects.get( url_path='/home/events/someone-elses-event/') user_perms = UserPagePermissionsProxy(event_moderator) editable_pages = user_perms.editable_pages() can_edit_pages = user_perms.can_edit_pages() publishable_pages = user_perms.publishable_pages() can_publish_pages = user_perms.can_publish_pages() self.assertFalse(editable_pages.filter(id=homepage.id).exists()) self.assertTrue(editable_pages.filter(id=christmas_page.id).exists()) self.assertTrue( editable_pages.filter(id=unpublished_event_page.id).exists()) self.assertTrue( editable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertTrue(can_edit_pages) self.assertFalse(publishable_pages.filter(id=homepage.id).exists()) self.assertTrue( publishable_pages.filter(id=christmas_page.id).exists()) self.assertTrue( publishable_pages.filter(id=unpublished_event_page.id).exists()) self.assertTrue( publishable_pages.filter(id=someone_elses_event_page.id).exists()) self.assertTrue(can_publish_pages)
def register_account_notification_preferences(request): user_perms = UserPagePermissionsProxy(request.user) if user_perms.can_edit_pages() or user_perms.can_publish_pages(): return { 'url': reverse('wagtailadmin_account_notification_preferences'), 'label': _('Notification preferences'), 'help_text': _('Choose which email notifications to receive.'), }
def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) user_perms = UserPagePermissionsProxy(self.instance.user) if not user_perms.can_publish_pages(): del self.fields['submitted_notifications'] if not user_perms.can_edit_pages(): del self.fields['approved_notifications'] del self.fields['rejected_notifications']
def is_active(self): # Hide the panel if the user can't edit or publish pages user_perms = UserPagePermissionsProxy(self.request.user) if not user_perms.can_edit_pages() and not user_perms.can_publish_pages(): return False # Hide the panel if there are no notification preferences return self.get_form().fields
def account(request): user_perms = UserPagePermissionsProxy(request.user) show_notification_preferences = user_perms.can_edit_pages() or user_perms.can_publish_pages() return render(request, 'wagtailadmin/account/account.html', { 'show_change_password': password_management_enabled() and request.user.has_usable_password(), 'show_notification_preferences': show_notification_preferences, 'show_preferred_language_preferences': len(get_available_admin_languages()) > 1 })
def new_page_from_modal(request): user_perms = UserPagePermissionsProxy(request.user) if not user_perms.can_edit_pages(): raise PermissionDenied if request.method == 'POST': # Get the page data body = json.loads(request.body) print(body['type']) data = {} data['title'] = body['title'] data['owner'] = request.user # Create the page if body['type'] == 'service': page = ServicePage(**data) elif body['type'] == 'process': page = ProcessPage(**data) elif body['type'] == 'information': page = InformationPage(**data) elif body['type'] == 'topic': page = TopicPage(**data) elif body['type'] == 'topiccollection': if body['theme'] is not None: data['theme'] = Theme.objects.get(id=body['theme']) page = TopicCollectionPage(**data) elif body['type'] == 'department': page = DepartmentPage(**data) elif body['type'] == 'documents': page = OfficialDocumentPage(**data) elif body['type'] == 'guide': page = GuidePage(**data) elif body['type'] == 'form': page = FormContainer(**data) elif body['type'] == 'location': page = LocationPage(**data) # Add it as a child of home home = Page.objects.get(id=3) home.add_child(instance=page) # Save our draft page.save_revision() page.unpublish() # Not sure why it seems to go live by default # Respond with the id of the new page response = HttpResponse(json.dumps({'id': page.id}), content_type="application/json") return response
def account(request): user_perms = UserPagePermissionsProxy(request.user) show_notification_preferences = user_perms.can_edit_pages( ) or user_perms.can_publish_pages() return render( request, 'wagtailadmin/account/account.html', { 'show_change_password': password_management_enabled() and request.user.has_usable_password(), 'show_notification_preferences': show_notification_preferences, 'show_preferred_language_preferences': len(get_available_admin_languages()) > 1 })