converted uses of django.contrib.messages to wagtail.wagtailadmin.messages to allow better styling and interactivity in notifications

pull/845/head
Dave Cranwell 2014-11-07 16:09:42 +00:00 zatwierdzone przez Karl Hobley
rodzic 513129fb5e
commit 58f9f68fe4
15 zmienionych plików z 144 dodań i 36 usunięć

Wyświetl plik

@ -1,7 +1,7 @@
from django import forms
from django.shortcuts import render
from django.utils.translation import ugettext as _
from django.contrib import messages
from wagtail.wagtailadmin import messages
from django.contrib.auth.decorators import permission_required
from wagtail.wagtailadmin.forms import SearchForm
@ -28,9 +28,18 @@ def index(request):
example_form = ExampleForm()
messages.success(request, _("Success message"))
messages.warning(request, _("Warning message"))
messages.error(request, _("Error message"))
messages.success(request, _("Success message"), buttons = [
messages.button('', _('View live')),
messages.button('', _('Edit'))
])
messages.warning(request, _("Warning message"), buttons = [
messages.button('', _('View live')),
messages.button('', _('Edit'))
])
messages.error(request, _("Error message"), buttons = [
messages.button('', _('View live')),
messages.button('', _('Edit'))
])
fake_pagination = {
'number': 1,

Wyświetl plik

@ -0,0 +1,26 @@
from django.contrib import messages
from django.template.loader import render_to_string
def render(message, buttons):
return render_to_string('wagtailadmin/shared/messages.html', {
'message': message,
'buttons': buttons
})
def debug(request, message, buttons = None):
return messages.debug(request, render(message, buttons))
def info(request, message, buttons = None):
return messages.info(request, render(message, buttons))
def success(request, message, buttons = None):
return messages.success(request, render(message, buttons))
def warning(request, message, buttons = None):
return messages.warning(request, render(message, buttons))
def error(request, message, buttons = None):
return messages.error(request, render(message, buttons))
def button(url, text):
return url, text

Wyświetl plik

@ -218,7 +218,7 @@ input[type=submit], input[type=reset], input[type=button], .button, button{
&.button-secondary{
color:$color-button;
background-color:white;
background-color:transparent;
}
&.icon.text-replace:before{
@ -260,7 +260,7 @@ input[type=submit], input[type=reset], input[type=button], .button, button{
border-color:transparent;
background-color: $color-button-no-hover;
}
}
}
&.bicolor{
border:0;

Wyświetl plik

@ -207,6 +207,10 @@ ul.listing{
color:white;
}
}
.button-secondary{
background-color:white;
}
.moderate-actions form{
float:left;

Wyświetl plik

@ -10,6 +10,10 @@
z-index:5;
background-color:$color-grey-1;
.buttons{
margin-left:1em;
}
ul{
@include unlist();
padding-left:10px;
@ -56,6 +60,18 @@
content:"9";
}
}
.success .button:hover{
background-color:$color-teal-dark;
}
.button-secondary{
border-color:rgba(255,255,255,0.5);
color:rgba(255,255,255,0.8);
&:hover{
border-color:transparent;
color:white;
}
}
}
.messages.new ul{

Wyświetl plik

@ -0,0 +1,9 @@
{{ message }}
{% if buttons %}
<span class="buttons">
{% for button in buttons %}
<a href="{{ button.0 }}" class="button button-small button-secondary">{{ button.1 }}</a>
{% endfor %}
</span>
{% endif %}

Wyświetl plik

@ -3,10 +3,11 @@ import warnings
from django.http import Http404, HttpResponse
from django.shortcuts import render, redirect, get_object_or_404
from django.core.exceptions import ValidationError, PermissionDenied
from django.contrib import messages
#from django.contrib import messages
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.decorators import permission_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.core.urlresolvers import reverse
from django.utils import timezone
from django.utils.translation import ugettext as _
from django.utils.http import is_safe_url
@ -21,6 +22,7 @@ from wagtail.wagtailadmin import tasks, signals
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.models import Page, PageRevision, get_navigation_menu_items
from wagtail.wagtailadmin import messages
@permission_required('wagtailadmin.access_admin')
def explorer_nav(request):
@ -325,9 +327,15 @@ def edit(request, page_id):
# Notifications
if is_publishing:
messages.success(request, _("Page '{0}' published.").format(page.title))
messages.success(request, _("Page '{0}' published.").format(page.title), buttons = [
messages.button(page.url, _('View live')),
messages.button(reverse('wagtailadmin_pages_edit', args=(page_id,)), _('Edit'))
])
elif is_submitting:
messages.success(request, _("Page '{0}' submitted for moderation.").format(page.title))
messages.success(request, _("Page '{0}' submitted for moderation.").format(page.title), buttons = [
messages.button(reverse('wagtailadmin_pages_view_draft', args=(page_id,)), _('View draft')),
messages.button(reverse('wagtailadmin_pages_edit', args=(page_id,)), _('Edit'))
])
tasks.send_notification.delay(page.get_latest_revision().id, 'submitted', request.user.id)
else:
messages.success(request, _("Page '{0}' updated.").format(page.title))

Wyświetl plik

@ -1,5 +1,4 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth.decorators import permission_required
from django.core.exceptions import PermissionDenied
@ -9,11 +8,11 @@ from django.core.urlresolvers import reverse
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailsearch.backends import get_search_backends
from wagtail.wagtailadmin import messages
from wagtail.wagtaildocs.models import Document
from wagtail.wagtaildocs.forms import DocumentForm
@permission_required('wagtaildocs.add_document')
@vary_on_headers('X-Requested-With')
def index(request):
@ -89,7 +88,9 @@ def add(request):
for backend in get_search_backends():
backend.add(doc)
messages.success(request, _("Document '{0}' added.").format(doc.title))
messages.success(request, _("Document '{0}' added.").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."))
@ -123,7 +124,9 @@ def edit(request, document_id):
for backend in get_search_backends():
backend.add(doc)
messages.success(request, _("Document '{0}' updated").format(doc.title))
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."))

Wyświetl plik

@ -1,7 +1,6 @@
import json
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib.auth.decorators import permission_required
from django.core.exceptions import PermissionDenied
@ -12,6 +11,7 @@ from django.http import HttpResponse
from wagtail.wagtailcore.models import Site
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailadmin import messages
from wagtail.wagtailsearch.backends import get_search_backends
from wagtail.wagtailimages.models import get_image_model, Filter
@ -103,7 +103,9 @@ def edit(request, image_id):
for backend in get_search_backends():
backend.add(image)
messages.success(request, _("Image '{0}' updated.").format(image.title))
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."))
@ -228,7 +230,9 @@ def add(request):
for backend in get_search_backends():
backend.add(image)
messages.success(request, _("Image '{0}' added.").format(image.title))
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."))

Wyświetl plik

@ -1,12 +1,13 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.contrib.auth.decorators import permission_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.utils.translation import ugettext as _
from django.views.decorators.vary import vary_on_headers
from django.core.urlresolvers import reverse
from wagtail.wagtailadmin.edit_handlers import ObjectList
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailadmin import messages
from wagtail.wagtailredirects import models
@ -68,7 +69,9 @@ def edit(request, redirect_id):
form = form_class(request.POST, request.FILES, instance=theredirect)
if form.is_valid():
form.save()
messages.success(request, _("Redirect '{0}' updated.").format(theredirect.title))
messages.success(request, _("Redirect '{0}' updated.").format(theredirect.title), buttons = [
messages.button(reverse('wagtailredirects_edit_redirect', args=(theredirect.id,)), _('Edit'))
])
return redirect('wagtailredirects_index')
else:
messages.error(request, _("The redirect could not be saved due to errors."))
@ -109,7 +112,9 @@ def add(request):
theredirect.site = request.site
theredirect.save()
messages.success(request, _("Redirect '{0}' added.").format(theredirect.title))
messages.success(request, _("Redirect '{0}' added.").format(theredirect.title), buttons = [
messages.button(reverse('wagtailredirects_edit_redirect', args=(theredirect.id,)), _('Edit'))
])
return redirect('wagtailredirects_index')
else:
messages.error(request, _("The redirect could not be created due to errors."))

Wyświetl plik

@ -1,13 +1,14 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.decorators import permission_required
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.utils.translation import ugettext as _
from django.views.decorators.vary import vary_on_headers
from wagtail.wagtailsearch import models, forms
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailadmin import messages
@permission_required('wagtailadmin.access_admin')
@ -80,7 +81,9 @@ def add(request):
# Save editors picks
editors_pick_formset = forms.EditorsPickFormSet(request.POST, instance=query)
if save_editorspicks(query, query, editors_pick_formset):
messages.success(request, _("Editor's picks for '{0}' created.").format(query))
messages.success(request, _("Editor's picks for '{0}' created.").format(query), buttons = [
messages.button(reverse('wagtailsearch_editorspicks_edit', args=(query.id,)), _('Edit'))
])
return redirect('wagtailsearch_editorspicks_index')
else:
if len(editors_pick_formset.non_form_errors()):
@ -114,7 +117,9 @@ def edit(request, query_id):
# Save editors picks
if save_editorspicks(query, new_query, editors_pick_formset):
messages.success(request, _("Editor's picks for '{0}' updated.").format(new_query))
messages.success(request, _("Editor's picks for '{0}' updated.").format(new_query), buttons = [
messages.button(reverse('wagtailsearch_editorspicks_edit', args=(query.id,)), _('Edit'))
])
return redirect('wagtailsearch_editorspicks_index')
else:
if len(editors_pick_formset.non_form_errors()):

Wyświetl plik

@ -1,11 +1,11 @@
from django.shortcuts import render, redirect, get_object_or_404
from django.contrib import messages
from django.contrib.auth.decorators import permission_required, user_passes_test
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from wagtail.wagtailcore.models import Site
from wagtail.wagtailsites.forms import SiteForm
from wagtail.wagtailadmin import messages
def user_has_site_model_perm(user):
for verb in ['add', 'change', 'delete']:
@ -28,7 +28,9 @@ def create(request):
form = SiteForm(request.POST)
if form.is_valid():
site = form.save()
messages.success(request, _("Site '{0}' created.").format(site.hostname))
messages.success(request, _("Site '{0}' created.").format(site.hostname), buttons = [
messages.button(reverse('wagtailsites_edit', args=(site.id,)), _('Edit'))
])
return redirect('wagtailsites_index')
else:
messages.error(request, _("The site could not be created due to errors."))
@ -48,7 +50,9 @@ def edit(request, site_id):
form = SiteForm(request.POST, instance=site)
if form.is_valid():
site = form.save()
messages.success(request, _("Site '{0}' updated.").format(site.hostname))
messages.success(request, _("Site '{0}' updated.").format(site.hostname), buttons = [
messages.button(reverse('wagtailsites_edit', args=(site.id,)), _('Edit'))
])
return redirect('wagtailsites_index')
else:
messages.error(request, _("The site could not be saved due to errors."))

Wyświetl plik

@ -3,7 +3,6 @@ from django.shortcuts import get_object_or_404, render, redirect
from django.utils.encoding import force_text
from django.utils.text import capfirst
from django.contrib.contenttypes.models import ContentType
from django.contrib import messages
from django.contrib.auth.decorators import permission_required
from django.core.exceptions import PermissionDenied
from django.utils.translation import ugettext as _
@ -14,7 +13,7 @@ from wagtail.wagtailadmin.edit_handlers import ObjectList, extract_panel_definit
from wagtail.wagtailsnippets.models import get_snippet_content_types
from wagtail.wagtailsnippets.permissions import user_can_edit_snippet_type
from wagtail.wagtailadmin import messages
# == Helper functions ==
@ -129,7 +128,10 @@ def create(request, content_type_app_name, content_type_model_name):
_("{snippet_type} '{instance}' created.").format(
snippet_type=capfirst(get_snippet_type_name(content_type)[0]),
instance=instance
)
),
buttons = [
messages.button(reverse('wagtailsnippets_edit', args=(content_type_app_name,content_type_model_name,instance.id,)), _('Edit'))
]
)
return redirect('wagtailsnippets_list', content_type.app_label, content_type.model)
else:
@ -170,7 +172,10 @@ def edit(request, content_type_app_name, content_type_model_name, id):
_("{snippet_type} '{instance}' updated.").format(
snippet_type=capfirst(snippet_type_name),
instance=instance
)
),
buttons = [
messages.button(reverse('wagtailsnippets_edit', args=(content_type_app_name,content_type_model_name,instance.id,)), _('Edit'))
]
)
return redirect('wagtailsnippets_list', content_type.app_label, content_type.model)
else:

Wyświetl plik

@ -2,11 +2,12 @@ from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth.models import Group
from django.contrib.auth.decorators import permission_required, user_passes_test
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.utils.translation import ugettext as _
from django.views.decorators.vary import vary_on_headers
from django.forms.models import inlineformset_factory
from wagtail.wagtailadmin import messages
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailusers.forms import GroupForm, BaseGroupPagePermissionFormSet
from wagtail.wagtailcore.models import GroupPagePermission
@ -91,7 +92,9 @@ def create(request):
group = form.save()
formset.instance = group
formset.save()
messages.success(request, _("Group '{0}' created.").format(group))
messages.success(request, _("Group '{0}' created.").format(group), buttons = [
messages.button(reverse('wagtailusers_groups_edit', args=(group.id,)), _('Edit'))
])
return redirect('wagtailusers_groups_index')
else:
messages.error(request, _("The group could not be created due to errors."))
@ -120,7 +123,9 @@ def edit(request, group_id):
if form.is_valid() and formset.is_valid():
group = form.save()
formset.save()
messages.success(request, _("Group '{0}' updated.").format(group))
messages.success(request, _("Group '{0}' updated.").format(group), buttons = [
messages.button(reverse('wagtailusers_groups_edit', args=(group.id,)), _('Edit'))
])
return redirect('wagtailusers_groups_index')
else:
messages.error(request, _("The group could not be saved due to errors."))

Wyświetl plik

@ -2,11 +2,12 @@ from django.shortcuts import render, redirect, get_object_or_404
from django.contrib.auth import get_user_model
from django.contrib.auth.decorators import permission_required
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib import messages
from django.core.urlresolvers import reverse
from django.db.models import Q
from django.utils.translation import ugettext as _
from django.views.decorators.vary import vary_on_headers
from wagtail.wagtailadmin import messages
from wagtail.wagtailadmin.forms import SearchForm
from wagtail.wagtailusers.forms import UserCreationForm, UserEditForm
from wagtail.wagtailcore.compat import AUTH_USER_APP_LABEL, AUTH_USER_MODEL_NAME
@ -82,7 +83,9 @@ def create(request):
form = UserCreationForm(request.POST)
if form.is_valid():
user = form.save()
messages.success(request, _("User '{0}' created.").format(user))
messages.success(request, _("User '{0}' created.").format(user), buttons = [
messages.button(reverse('wagtailusers_users_edit', args=(user.id,)), _('Edit'))
])
return redirect('wagtailusers_users_index')
else:
messages.error(request, _("The user could not be created due to errors.") )
@ -101,7 +104,9 @@ def edit(request, user_id):
form = UserEditForm(request.POST, instance=user)
if form.is_valid():
user = form.save()
messages.success(request, _("User '{0}' updated.").format(user))
messages.success(request, _("User '{0}' updated.").format(user), buttons = [
messages.button(reverse('wagtailusers_users_edit', args=(user.id,)), _('Edit'))
])
return redirect('wagtailusers_users_index')
else:
messages.error(request, _("The user could not be saved due to errors."))