Commit 83f66df4 authored by Serge S. Koval's avatar Serge S. Koval

'Add another' button added.

parent cadf5bc9
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
- Custom CSS/JS in admin interface - Custom CSS/JS in admin interface
- SQLA Model Admin - SQLA Model Admin
- Built-in filtering support - Built-in filtering support
- Built-in search support
- Support for related models
- Many2Many support - Many2Many support
- Verify if it is working properly - Verify if it is working properly
- WYSIWYG editor support? - WYSIWYG editor support?
......
from flask import request, url_for, redirect from flask import request, url_for, redirect, flash
from .base import BaseView, expose from .base import BaseView, expose
...@@ -37,7 +37,7 @@ class BaseModelView(BaseView): ...@@ -37,7 +37,7 @@ class BaseModelView(BaseView):
edit_template = 'admin/model/edit.html' edit_template = 'admin/model/edit.html'
"""Default edit template""" """Default edit template"""
create_template = 'admin/model/edit.html' create_template = 'admin/model/create.html'
"""Default create template""" """Default create template"""
# Customizations # Customizations
...@@ -419,6 +419,9 @@ class BaseModelView(BaseView): ...@@ -419,6 +419,9 @@ class BaseModelView(BaseView):
if not search: if not search:
search = None search = None
if not page:
page = None
return url_for(view, return url_for(view,
page=page, page=page,
sort=sort, sort=sort,
...@@ -501,7 +504,7 @@ class BaseModelView(BaseView): ...@@ -501,7 +504,7 @@ class BaseModelView(BaseView):
""" """
Create model view Create model view
""" """
return_url = request.args.get('return') return_url = request.args.get('url')
if not self.can_create: if not self.can_create:
return redirect(return_url or url_for('.index_view')) return redirect(return_url or url_for('.index_view'))
...@@ -510,16 +513,22 @@ class BaseModelView(BaseView): ...@@ -510,16 +513,22 @@ class BaseModelView(BaseView):
if form.validate_on_submit(): if form.validate_on_submit():
if self.create_model(form): if self.create_model(form):
return redirect(return_url or url_for('.index_view')) if '_add_another' in request.form:
flash('Model was successfully created.')
return redirect(url_for('.create_view', url=return_url))
else:
return redirect(return_url or url_for('.index_view'))
return self.render(self.create_template, form=form) return self.render(self.create_template,
form=form,
return_url=return_url)
@expose('/edit/<int:id>/', methods=('GET', 'POST')) @expose('/edit/<int:id>/', methods=('GET', 'POST'))
def edit_view(self, id): def edit_view(self, id):
""" """
Edit model view Edit model view
""" """
return_url = request.args.get('return') return_url = request.args.get('url')
if not self.can_edit: if not self.can_edit:
return redirect(return_url or url_for('.index_view')) return redirect(return_url or url_for('.index_view'))
...@@ -544,7 +553,7 @@ class BaseModelView(BaseView): ...@@ -544,7 +553,7 @@ class BaseModelView(BaseView):
""" """
Delete model view. Only POST method is allowed. Delete model view. Only POST method is allowed.
""" """
return_url = request.args.get('return') return_url = request.args.get('url')
# TODO: Use post # TODO: Use post
if not self.can_delete: if not self.can_delete:
......
...@@ -73,7 +73,7 @@ ...@@ -73,7 +73,7 @@
{% endif %} {% endif %}
{%- endmacro %} {%- endmacro %}
{% macro render_form(form, cancel_url) -%} {% macro render_form(form, cancel_url, extra=None) -%}
<form action="" method="POST" class="form-horizontal"{% if form.has_file_field %} enctype="multipart/form-data"{% endif %}> <form action="" method="POST" class="form-horizontal"{% if form.has_file_field %} enctype="multipart/form-data"{% endif %}>
<fieldset> <fieldset>
{{ form.hidden_tag() }} {{ form.hidden_tag() }}
...@@ -103,6 +103,9 @@ ...@@ -103,6 +103,9 @@
<div class="control-group"> <div class="control-group">
<div class="controls"> <div class="controls">
<input type="submit" class="btn btn-primary btn-large" /> <input type="submit" class="btn btn-primary btn-large" />
{% if extra %}
{{ extra }}
{% endif %}
{% if cancel_url %} {% if cancel_url %}
<a href="{{ cancel_url }}" class="btn btn-large">Cancel</a> <a href="{{ cancel_url }}" class="btn btn-large">Cancel</a>
{% endif %} {% endif %}
......
{% extends 'admin/master.html' %}
{% import 'admin/lib.html' as lib %}
{% block head %}
<link href="{{ url_for('admin.static', filename='chosen/chosen.css') }}" rel="stylesheet">
<link href="{{ url_for('admin.static', filename='css/datepicker.css') }}" rel="stylesheet">
{% endblock %}
{% block body %}
{% macro extra() %}
<input name="_add_another" type="submit" class="btn btn-primary btn-large" value="Save and Add" />
{% endmacro %}
{{ lib.render_form(form, return_url, extra()) }}
{% endblock %}
{% block tail %}
<script src="{{ url_for('admin.static', filename='js/bootstrap-datepicker.js') }}"></script>
<script src="{{ url_for('admin.static', filename='js/form.js') }}"></script>
{% endblock %}
...@@ -52,12 +52,12 @@ ...@@ -52,12 +52,12 @@
<tr> <tr>
<td> <td>
{%- if admin_view.can_edit -%} {%- if admin_view.can_edit -%}
<a class="icon" href="{{ url_for('.edit_view', id=row.id, return=return_url) }}"> <a class="icon" href="{{ url_for('.edit_view', id=row.id, url=return_url) }}">
<i class="icon-pencil"></i> <i class="icon-pencil"></i>
</a> </a>
{%- endif -%} {%- endif -%}
{%- if admin_view.can_delete -%} {%- if admin_view.can_delete -%}
<form class="icon" method="POST" action="{{ url_for('.delete_view', id=row.id, return=return_url) }}"> <form class="icon" method="POST" action="{{ url_for('.delete_view', id=row.id, url=return_url) }}">
<button onclick="return confirm('You sure you want to delete this item?')"> <button onclick="return confirm('You sure you want to delete this item?')">
<i class="icon-remove"></i> <i class="icon-remove"></i>
</button> </button>
...@@ -72,6 +72,6 @@ ...@@ -72,6 +72,6 @@
</table> </table>
{{ lib.pager(page, num_pages, pager_url) }} {{ lib.pager(page, num_pages, pager_url) }}
{% if admin_view.can_create %} {% if admin_view.can_create %}
<a class="btn btn-primary btn-large" href="{{ url_for('.create_view', return=return_url) }}">Create New</a> <a class="btn btn-primary btn-large" href="{{ url_for('.create_view', url=return_url) }}">Create New</a>
{% endif %} {% endif %}
{% endblock %} {% endblock %}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment