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

'Add another' button added.

parent cadf5bc9
......@@ -15,8 +15,6 @@
- Custom CSS/JS in admin interface
- SQLA Model Admin
- Built-in filtering support
- Built-in search support
- Support for related models
- Many2Many support
- Verify if it is working properly
- WYSIWYG editor support?
......
from flask import request, url_for, redirect
from flask import request, url_for, redirect, flash
from .base import BaseView, expose
......@@ -37,7 +37,7 @@ class BaseModelView(BaseView):
edit_template = 'admin/model/edit.html'
"""Default edit template"""
create_template = 'admin/model/edit.html'
create_template = 'admin/model/create.html'
"""Default create template"""
# Customizations
......@@ -419,6 +419,9 @@ class BaseModelView(BaseView):
if not search:
search = None
if not page:
page = None
return url_for(view,
page=page,
sort=sort,
......@@ -501,7 +504,7 @@ class BaseModelView(BaseView):
"""
Create model view
"""
return_url = request.args.get('return')
return_url = request.args.get('url')
if not self.can_create:
return redirect(return_url or url_for('.index_view'))
......@@ -510,16 +513,22 @@ class BaseModelView(BaseView):
if form.validate_on_submit():
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'))
def edit_view(self, id):
"""
Edit model view
"""
return_url = request.args.get('return')
return_url = request.args.get('url')
if not self.can_edit:
return redirect(return_url or url_for('.index_view'))
......@@ -544,7 +553,7 @@ class BaseModelView(BaseView):
"""
Delete model view. Only POST method is allowed.
"""
return_url = request.args.get('return')
return_url = request.args.get('url')
# TODO: Use post
if not self.can_delete:
......
......@@ -73,7 +73,7 @@
{% endif %}
{%- 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 %}>
<fieldset>
{{ form.hidden_tag() }}
......@@ -103,6 +103,9 @@
<div class="control-group">
<div class="controls">
<input type="submit" class="btn btn-primary btn-large" />
{% if extra %}
{{ extra }}
{% endif %}
{% if cancel_url %}
<a href="{{ cancel_url }}" class="btn btn-large">Cancel</a>
{% 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 @@
<tr>
<td>
{%- 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>
</a>
{%- endif -%}
{%- 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?')">
<i class="icon-remove"></i>
</button>
......@@ -72,6 +72,6 @@
</table>
{{ lib.pager(page, num_pages, pager_url) }}
{% 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 %}
{% 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