mirror of
https://github.com/jazzband/django-admin2.git
synced 2026-05-10 16:24:44 +00:00
Merge branch 'feature/save-options' of git://github.com/chrislawlor/django-admin2 into chrislawlor-feature/save-options
This commit is contained in:
commit
ce835ffc79
3 changed files with 43 additions and 9 deletions
|
|
@ -9,7 +9,9 @@
|
||||||
<form method="post">
|
<form method="post">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
{{ form.as_p }}
|
{{ form.as_p }}
|
||||||
<input type="submit"/>
|
<button class="btn btn-small" type="submit" name="_addanother">Save and add another</button>
|
||||||
|
<button class="btn btn-small" type="submit" name="_continue">Save and continue editing</button>
|
||||||
|
<button class="btn btn-small btn-success" type="submit" name="_save">Save</button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
{% endblock content %}
|
{% endblock content %}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,9 @@ from django.views import generic
|
||||||
|
|
||||||
from braces.views import AccessMixin
|
from braces.views import AccessMixin
|
||||||
|
|
||||||
|
from templatetags.admin2_urls import admin2_urlname
|
||||||
|
|
||||||
|
|
||||||
ADMIN2_THEME_DIRECTORY = getattr(settings, "ADMIN2_THEME_DIRECTORY", "admin2/bootstrap")
|
ADMIN2_THEME_DIRECTORY = getattr(settings, "ADMIN2_THEME_DIRECTORY", "admin2/bootstrap")
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -98,10 +101,6 @@ class ModelListView(Admin2Mixin, generic.ListView):
|
||||||
context['model_pluralized'] = self.get_model()._meta.verbose_name_plural
|
context['model_pluralized'] = self.get_model()._meta.verbose_name_plural
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_success_url(self):
|
|
||||||
view_name = 'admin2:{}_{}_detail'.format(self.app_label, self.model_name)
|
|
||||||
return reverse(view_name, kwargs={'pk': self.object.pk})
|
|
||||||
|
|
||||||
|
|
||||||
class ModelDetailView(AdminModel2Mixin, generic.DetailView):
|
class ModelDetailView(AdminModel2Mixin, generic.DetailView):
|
||||||
default_template_name = "model_detail.html"
|
default_template_name = "model_detail.html"
|
||||||
|
|
@ -117,7 +116,6 @@ class ModelEditFormView(AdminModel2Mixin, generic.UpdateView):
|
||||||
|
|
||||||
class ModelAddFormView(AdminModel2Mixin, generic.CreateView):
|
class ModelAddFormView(AdminModel2Mixin, generic.CreateView):
|
||||||
form_class = None
|
form_class = None
|
||||||
success_url = "../"
|
|
||||||
default_template_name = "model_add_form.html"
|
default_template_name = "model_add_form.html"
|
||||||
permission_type = 'add'
|
permission_type = 'add'
|
||||||
|
|
||||||
|
|
@ -127,8 +125,15 @@ class ModelAddFormView(AdminModel2Mixin, generic.CreateView):
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
view_name = 'admin2:{}_{}_detail'.format(self.app_label, self.model_name)
|
if '_continue' in self.request.POST:
|
||||||
return reverse(view_name, kwargs={'pk': self.object.pk})
|
view_name = admin2_urlname(self, 'update')
|
||||||
|
return reverse(view_name, kwargs={'pk': self.object.pk})
|
||||||
|
|
||||||
|
if '_addanother' in self.request.POST:
|
||||||
|
return reverse(admin2_urlname(self, 'create'))
|
||||||
|
|
||||||
|
# default to index view
|
||||||
|
return reverse(admin2_urlname(self, 'index'))
|
||||||
|
|
||||||
|
|
||||||
class ModelDeleteView(AdminModel2Mixin, generic.DeleteView):
|
class ModelDeleteView(AdminModel2Mixin, generic.DeleteView):
|
||||||
|
|
|
||||||
|
|
@ -51,7 +51,34 @@ class PostCreateViewTest(BaseIntegrationTest):
|
||||||
follow=True)
|
follow=True)
|
||||||
self.assertTrue(Post.objects.filter(title="a_post_title").exists())
|
self.assertTrue(Post.objects.filter(title="a_post_title").exists())
|
||||||
post = Post.objects.get(title="a_post_title")
|
post = Post.objects.get(title="a_post_title")
|
||||||
self.assertRedirects(response, reverse("admin2:blog_post_detail",
|
self.assertRedirects(response, reverse("admin2:blog_post_index"))
|
||||||
|
|
||||||
|
def test_save_and_add_another_redirects_to_create(self):
|
||||||
|
"""
|
||||||
|
Tests that choosing 'Save and add another' from the model create
|
||||||
|
page redirects the user to the model create page.
|
||||||
|
"""
|
||||||
|
post_data = {"title": "a_post_title",
|
||||||
|
"body": "a_post_body",
|
||||||
|
"_addanother": ""}
|
||||||
|
self.client.login(username='admin', password='password')
|
||||||
|
response = self.client.post(reverse("admin2:blog_post_create"),
|
||||||
|
post_data)
|
||||||
|
post = Post.objects.get(title='a_post_title')
|
||||||
|
self.assertRedirects(response, reverse("admin2:blog_post_create"))
|
||||||
|
|
||||||
|
def test_save_and_continue_editing_redirects_to_update(self):
|
||||||
|
"""
|
||||||
|
Tests that choosing "Save and continue editing" redirects
|
||||||
|
the user to the model update form.
|
||||||
|
"""
|
||||||
|
post_data = {"title": "Unique",
|
||||||
|
"body": "a_post_body",
|
||||||
|
"_continue": ""}
|
||||||
|
response = self.client.post(reverse("admin2:blog_post_create"),
|
||||||
|
post_data)
|
||||||
|
post = Post.objects.get(title="Unique")
|
||||||
|
self.assertRedirects(response, reverse("admin2:blog_post_update",
|
||||||
args=(post.pk, )))
|
args=(post.pk, )))
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue