prepare 0.12.1

This commit is contained in:
Artur Barseghyan 2017-07-31 04:15:46 +02:00
parent 5af6f5bb91
commit 73b3d46ef3
22 changed files with 531 additions and 39 deletions

1
.gitignore vendored
View file

@ -64,6 +64,7 @@ README_PARTS.rst
/examples/quick_start/db.sqlite3
/examples/quickstart/
/examples/static/
/examples/_static/
/examples/requirements/wagtail.txt
#/examples/wagtaildemo/
/examples/wagtail_example_/

View file

@ -31,6 +31,7 @@ syntax: regexp
^examples/media/fobi_plugins/content_image/
^examples/media/fobi_plugins/file/
^examples/static/
^examples/_static/
^examples/simple/settings/local_settings\.py
^examples/simple/settings/local_settings_foundation5\.py
^examples/mezzanine_example/static/media/fobi_plugins/

View file

@ -17,8 +17,9 @@ are used for versioning (schema follows below):
0.12.1
------
yyyy-mm-dd (not released yet)
2017-07-31
- Reflect form-wizards support changes in the `simple` theme.
- Fixes in docs.
0.12

View file

@ -17,8 +17,9 @@ are used for versioning (schema follows below):
0.12.1
------
yyyy-mm-dd (not released yet)
2017-07-31
- Reflect form-wizards support changes in the `simple` theme.
- Fixes in docs.
0.12

View file

@ -7,4 +7,5 @@ Django>=1.10,<1.11
django-admin-tools>=0.8.0
django-debug-toolbar==1.5
django-registration-redux>=1.4
django-simple-captcha==0.5.5
sqlparse==0.2.2

View file

@ -6,6 +6,5 @@ Django>=1.5,<1.6
South>=0.8.2
django-admin-tools==0.5.2
django-debug-toolbar>=0.11.0
#django-localeurl>=2.0.2
django-registration-redux==1.2
sqlparse==0.1.9

View file

@ -6,6 +6,5 @@ Django>=1.6,<1.7
South>=0.8.2
django-admin-tools==0.5.2
django-debug-toolbar>=0.11.0
#django-localeurl>=2.0.2
django-registration-redux==1.2
sqlparse==0.1.9

View file

@ -5,6 +5,5 @@
Django>=1.7,<1.8
django-admin-tools>=0.6.0
django-debug-toolbar==0.11.0
#django-localeurl>=2.0.2
django-registration-redux==1.3
sqlparse==0.1.9
sqlparse==0.1.9

View file

@ -5,7 +5,8 @@
Django>=1.8,<1.9
django-admin-tools>=0.6.0
django-debug-toolbar==0.11.0
django-formtools
django-debug-toolbar==1.4
#django-formtools
django-registration-redux>=1.4
django-simple-captcha==0.5.5
sqlparse==0.1.9

View file

@ -8,10 +8,10 @@ django-admin-tools>=0.7.1
django-autoslug==1.9.3
django-debug-toolbar==1.5
django-formtools==1.0
django-localeurl==2.0.2
django-nine>=0.1.10
django-nonefield>=0.1
django-registration-redux>=1.4
django-simple-captcha==0.5.5
easy-thumbnails==2.3
vishap>=0.1.5
sqlparse==0.2.2

View file

@ -4,7 +4,7 @@ import sys
from distutils.version import LooseVersion
from setuptools import setup, find_packages
version = '0.12'
version = '0.12.1'
# ***************************************************************************
# ************************** Python version *********************************

View file

@ -1,6 +1,6 @@
__title__ = 'django-fobi'
__version__ = '0.12'
__build__ = 0x000089
__version__ = '0.12.1'
__build__ = 0x00008a
__author__ = 'Artur Barseghyan <artur.barseghyan@gmail.com>'
__copyright__ = '2014-2017 Artur Barseghyan'
__license__ = 'GPL 2.0/LGPL 2.1'

View file

@ -89,6 +89,7 @@ class Bootstrap3Theme(BaseTheme):
form_wizard_properties_snippet_template_name = \
'bootstrap3/snippets/form_wizard_properties_snippet.html'
# ***********************************************************************
# **************************** Form entry CRUD **************************
# ***********************************************************************

View file

@ -35,9 +35,11 @@ class SimpleTheme(BaseTheme):
# footer_text = '&copy; django-fobi example site 2014'
# *************************************************************************
# ********************** Form HTML specific *******************************
# *************************************************************************
# ***********************************************************************
# ***********************************************************************
# ********************** Form HTML specific *****************************
# ***********************************************************************
# ***********************************************************************
form_element_html_class = 'vTextField'
form_radio_element_html_class = 'radiolist'
form_element_checkbox_html_class = 'checkbox'
@ -54,54 +56,107 @@ class SimpleTheme(BaseTheme):
# Important
form_list_container_class = 'list-inline'
# *************************************************************************
# ********************** Templates specific *******************************
# *************************************************************************
# ***********************************************************************
# ***********************************************************************
# **************************** Templates ********************************
# ***********************************************************************
# ***********************************************************************
# ***********************************************************************
# *************************** Base templates ****************************
# ***********************************************************************
master_base_template = 'simple/_base.html'
base_template = 'simple/base.html'
base_view_template = 'simple/base_view.html'
base_edit_template = 'simple/base_edit.html'
form_ajax = 'simple/snippets/form_ajax.html'
# ***********************************************************************
# ***************************** Snippets ********************************
# ***********************************************************************
form_snippet_template_name = 'simple/snippets/form_snippet.html'
form_view_snippet_template_name = 'simple/snippets/form_view_snippet.html'
form_edit_ajax = 'simple/snippets/form_edit_ajax.html'
form_edit_snippet_template_name = 'simple/snippets/form_edit_snippet.html'
form_properties_snippet_template_name = \
'simple/snippets/form_properties_snippet.html'
messages_snippet_template_name = 'simple/snippets/messages_snippet.html'
form_ajax = 'simple/snippets/form_ajax.html'
form_view_snippet_template_name = 'simple/snippets/form_view_snippet.html'
add_form_element_entry_template = 'simple/add_form_element_entry.html'
add_form_element_entry_ajax_template = \
'simple/add_form_element_entry_ajax.html'
form_edit_ajax = 'simple/snippets/form_edit_ajax.html'
form_edit_snippet_template_name = 'simple/snippets/form_edit_snippet.html'
add_form_handler_entry_template = 'simple/add_form_handler_entry.html'
add_form_handler_entry_ajax_template = \
'simple/add_form_handler_entry_ajax.html'
form_wizard_snippet_template_name = \
'simple/snippets/form_wizard_snippet.html'
form_wizard_properties_snippet_template_name = \
'simple/snippets/form_wizard_properties_snippet.html'
# ***********************************************************************
# **************************** Form entry CRUD **************************
# ***********************************************************************
create_form_entry_template = 'simple/create_form_entry.html'
create_form_entry_ajax_template = 'simple/create_form_entry_ajax.html'
dashboard_template = 'simple/dashboard.html'
forms_list_template = 'simple/forms_list.html'
edit_form_element_entry_template = 'simple/edit_form_element_entry.html'
edit_form_element_entry_ajax_template = \
'simple/edit_form_element_entry_ajax.html'
edit_form_entry_template = 'simple/edit_form_entry.html'
edit_form_entry_ajax_template = 'simple/edit_form_entry_ajax.html'
edit_form_handler_entry_template = 'simple/edit_form_handler_entry.html'
edit_form_handler_entry_ajax_template = \
'simple/edit_form_handler_entry_ajax.html'
form_entry_submitted_template = 'simple/form_entry_submitted.html'
form_entry_submitted_ajax_template = \
'simple/form_entry_submitted_ajax.html'
view_form_entry_template = 'simple/view_form_entry.html'
view_form_entry_ajax_template = 'simple/view_form_entry_ajax.html'
# ***********************************************************************
# *********************** Form element entry CUD ************************
# ***********************************************************************
add_form_element_entry_template = 'simple/add_form_element_entry.html'
add_form_element_entry_ajax_template = \
'simple/add_form_element_entry_ajax.html'
edit_form_element_entry_template = 'simple/edit_form_element_entry.html'
edit_form_element_entry_ajax_template = \
'simple/edit_form_element_entry_ajax.html'
# ***********************************************************************
# *********************** Form handler entry CUD ************************
# ***********************************************************************
add_form_handler_entry_template = 'simple/add_form_handler_entry.html'
add_form_handler_entry_ajax_template = \
'simple/add_form_handler_entry_ajax.html'
edit_form_handler_entry_template = 'simple/edit_form_handler_entry.html'
edit_form_handler_entry_ajax_template = \
'simple/edit_form_handler_entry_ajax.html'
# ***********************************************************************
# ******************* Form wizard handler entry CUD *********************
# ***********************************************************************
# ***********************************************************************
# ***************************** Dashboard *******************************
# ***********************************************************************
dashboard_template = 'simple/dashboard.html'
forms_list_template = 'simple/forms_list.html'
# ***********************************************************************
# ************************ Form wizard entry CUD ************************
# ***********************************************************************
create_form_wizard_entry_template = \
'simple/create_form_wizard_entry.html'
create_form_wizard_entry_ajax_template = \
'simple/create_form_wizard_entry_ajax.html'
edit_form_wizard_entry_template = \
'simple/edit_form_wizard_entry.html'
edit_form_wizard_entry_ajax_template = \
'simple/edit_form_wizard_entry_ajax.html'
view_form_wizard_entry_template = \
'simple/view_form_wizard_entry.html'
view_form_wizard_entry_ajax_template = \
'simple/view_form_wizard_entry_ajax.html'
# ***********************************************************************
# ************************* Form importer templates *********************
# ***********************************************************************
import_form_entry_template = 'simple/import_form_entry.html'
import_form_entry_ajax_template = 'simple/import_form_entry_ajax.html'

View file

@ -34,6 +34,9 @@
<a class="addlink addlink-importer-{{ form_importer_uid }}" href="{{ form_importer_url }}">{{ form_importer_name }}</a>
</li>
{% endfor %}
<li>
<a class="addlink" href="{% url 'fobi.form_wizards_dashboard' %}">{% trans "Wizards"%}</a>
</li>
</ul>
<div id="changelist" class="module">

View file

@ -0,0 +1,7 @@
{% extends "fobi/generic/edit_form_wizard_entry.html" %}
{% load i18n admin_static %}
{% block stylesheets %}
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/changelists.css' %}" />
{% endblock stylesheets %}

View file

@ -0,0 +1,252 @@
{% load i18n fobi_tags %}
<h1>{% trans "Edit form wizard" %}</h1>
<div class="row" id="tabs">
<ul class="tab-links">
<li><a href="#tab-form-elements">{% trans "Elements" %}</a></li>
<li><a href="#tab-form-handlers">{% trans "Handlers" %}</a></li>
<li><a href="#tab-form-properties">{% trans "Properties" %}</a></li>
<li><a href="#tab-form-service">{% trans "Service" %}</a></li>
</ul>
<div class="col col-form-elements" id="tab-form-elements">
<!-- Form element plugins -->
<div>
<h2 id="form_elements">{% trans "Change form elements" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<ul class="nav pull-right">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
{% trans "Add form to the wizard" %} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
{% for form_entry in all_form_entries %}
<li><a href="{% url 'fobi.add_form_wizard_form_entry' form_wizard_entry.pk form_entry.pk %}">{{ form_entry.name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
<form method="post" action="{{ request.path }}?active_tab=tab-form-elements" novalidate="novalidate" class="form-horizontal">
<div>
<fieldset class="module aligned">
{% csrf_token %}
{% for form_wizard_form_entry in form_wizard_entry_forms %}
<div class="form-group">
<label class="col-sm-3 control-label" for="id_form-{{ forloop.counter0 }}-position">{#{ forloop.counter }#}</label>
<div class="form-row">
<p>{{ form_wizard_form_entry.form_entry.name }}</p>
<span class="help-block">
<input id="id_form-{{ forloop.counter0 }}-position" min="0" name="form-{{ forloop.counter0 }}-position" type="hidden" value="{{ form_wizard_form_entry.position }}" class="form-element-position" />
<input id="id_form-{{ forloop.counter0 }}-id" name="form-{{ forloop.counter0 }}-id" type="hidden" value="{{ form_wizard_form_entry.pk }}" />
<ul class="{{ fobi_theme.form_list_container_class }}">
<li>
<a href="{% url 'fobi.view_form_entry' form_wizard_form_entry.form_entry.slug %}" class="link">
<span class="{{ fobi_theme.form_view_form_entry_option_class }}"></span> {% trans "View" %}
</a>
</li>
<li>
<a href="{% url 'fobi.edit_form_entry' form_wizard_form_entry.form_entry.pk %}" class="changelink">
<span class="{{ fobi_theme.form_edit_form_entry_option_class }}"></span> {% trans "Edit" %}
</a>
</li>
<li>
<a href="{% url 'fobi.delete_form_wizard_form_entry' form_wizard_form_entry.pk %}" class="deletelink">
<span class="{{ fobi_theme.form_delete_form_entry_option_class }}"></span> {% trans "Delete" %}
</a>
</li>
</ul>
</span>
</div>
</div>
{#% include fobi_theme.form_edit_snippet_template_name %#}
{% endfor %}
{{ form_wizard_form_entry_formset.management_form }}
</fieldset>
<div class="submit-row">
<input type="submit" name="ordering" class="default" value="{% trans 'Save ordering' %}"/>
</div>
</div>
</form>
</div>
</div>
</div><!-- /#tab-form-elements -->
<div class="col col-form-handlers" id="tab-form-handlers">
<!-- Form handler plugins -->
<div>
<h2 id="form_handlers">{% trans "Change form wizard handlers" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<ul class="nav pull-right">
<li class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="javascript:;">
{% trans "Add form handler" %} <span class="caret"></span>
</a>
<ul class="dropdown-menu">
{% for form_wizard_handler_uid, form_wizard_handler_name in user_form_wizard_handler_plugins %}
<li><a href="{% url 'fobi.add_form_wizard_handler_entry' form_wizard_entry.pk form_wizard_handler_uid %}">{{ form_wizard_handler_name }}</a></li>
{% endfor %}
</ul>
</li>
</ul>
<div class="clearfix"></div>
{% if form_wizard_handlers %}
<div class="module">
<div class="change-list">
<table class="table table-striped">
<thead>
<tr>
<th>
<div class="text">{% trans "Handler" %}</div>
<div class="clear"></div>
</th>
{% comment %}
<th>
<div class="text">{% trans "Settings" %}</div>
<div class="clear"></div>
</th>
{% endcomment %}
<th>
<div class="text">{% trans "Actions" %}</div>
<div class="clear"></div>
</th>
</tr>
</thead>
<tbody>
{% for form_wizard_handler in form_wizard_handlers %}
{% with form_wizard_handler.get_plugin as plugin %}
{% if plugin %}
<tr>
<td>{{ form_wizard_handler.plugin_name }}
{% if form_wizard_handler.plugin_data or plugin.plugin_data_repr %}
<a class="popover-link" href="javascript:;" data-toggle="popover" data-content="{% spaceless %}{{ plugin.plugin_data_repr|safe }}{% endspaceless %}" role="button">
<span class="badge" title="{% trans 'Info' %}">?</span>
</a>
{% endif %}
</td>
<td>
<ul class="list-inline">
{% if form_wizard_handler.plugin_data %}
<li><a href="{% url 'fobi.edit_form_wizard_handler_entry' form_wizard_handler.pk %}"><span class="glyphicon glyphicon-edit"></span> {% trans "Edit" %}</a></li>
{% endif %}
<li><a href="{% url 'fobi.delete_form_wizard_handler_entry' form_wizard_handler.pk %}"><span class="glyphicon glyphicon-remove"></span> {% trans "Delete" %}</a></li>
{% get_fobi_form_wizard_handler_plugin_custom_actions plugin form_wizard_entry as form_wizard_handler_plugin_custom_actions %}
{#% for action in plugin.get_custom_actions %#}
{% for action in form_wizard_handler_plugin_custom_actions %}
<li><a href="{{ action.0 }}"><span class="{{ action.2 }}"></span> {{ action.1 }}</a></li>
{% endfor %}
</ul>
</td>
</tr>
{% endif %}
{% endwith %}
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endif %}
</div>
</div>
</div><!-- /#tab-form-handlers -->
<div class="col col-form-properties" id="tab-form-properties">
<!-- Form properties -->
<div>
<h2 id="form_properties">{% trans "Change form wizard properties" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<form method="post" action="{{ request.path }}?active_tab=tab-form-properties" enctype="multipart/form-data" class="form-horizontal">
<div>
<fieldset class="module aligned">
{% csrf_token %}
{% include fobi_theme.form_wizard_properties_snippet_template_name %}
</fieldset>
<div class="submit-row">
<input type="submit" class="default" value="{% trans 'Save' %}"/>
</div>
</div>
</form>
</div>
</div>
</div><!-- /#tab-form-properties -->
<div class="col col-form-service" id="tab-form-service">
<!-- Form service -->
<div>
<h2 id="form_service">{% trans "Service" %}</h2>
</div>
<div class="panel panel-default">
<div class="panel-body">
<div class="module">
<table class="table table-striped">
<tbody>
<tr>
<td>
<div>
<h3>{% trans "Export your form wizard as JSON" %}</h3>
<p>{% trans "Export your form into JSON format and import it again any time!" %}</p>
<p>
<a class="btn btn-primary" href="{% url 'fobi.export_form_wizard_entry' form_wizard_entry.pk %}" role="button">
<span class="glyphicon glyphicon-export"></span> {% trans "Export form wizard" %}
</a>
</p>
</div>
</td>
</tr>
<tr>
<td>
<div>
<h3>{% trans "Delete your form wizard" %}</h3>
<p>{% trans "Once deleted, can't be undone!" %}</p>
<p class="deletelink-box">
<a class="deletelink" href="{% url 'fobi.delete_form_wizard_entry' form_wizard_entry.pk %}" role="button">
{% trans "Delete form wizard" %}
</a>
</p>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div><!-- /#tab-form-service -->
</div><!-- /#tabs -->

View file

@ -0,0 +1,116 @@
{% extends fobi_theme.base_edit_template %}
{% load i18n admin_static %}
{% block page-title %}{% trans "Form wizards dashboard" %}{% endblock page-title %}
{% block stylesheets %}
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/changelists.css' %}" />
{% endblock stylesheets %}
{% block navbar-menu-content %}
{% endblock navbar-menu-content %}
{% block bodyclass %}{% if is_popup %}popup {% endif %}change-list{% if fobi_theme %} theme {{ fobi_theme.html_class }}{% endif %}{% endblock %}
{% block main-content-inner-attrs %}{% endblock main-content-inner-attrs %}
{% block coltype %}flex{% endblock %}
{% block content-wrapper %}
<h1>{% trans "Your form wizards" %}</h1>
<div id="content-main">
<ul class="object-tools">
<li>
<a class="addlink" href="{% url 'fobi.create_form_wizard_entry' %}">{% trans "Create form"%}</a>
</li>
<li>
<a class="addlink" href="{% url 'fobi.import_form_wizard_entry' %}">{% trans "Import form"%}</a>
</li>
{% comment %}
{% for form_importer_uid,form_importer_name,form_importer_url in form_importers %}
<li>
<a class="addlink addlink-importer-{{ form_importer_uid }}" href="{{ form_importer_url }}">{{ form_importer_name }}</a>
</li>
{% endfor %}
{% endcomment %}
<li>
<a class="addlink" href="{% url 'fobi.dashboard' %}">{% trans "Forms"%}</a>
</li>
</ul>
<div id="changelist" class="module">
<!-- Forms -->
<div class="results">
<table id="result_list">
<thead>
<tr>
<th>
<div class="text">
<span>{% trans "Name" %}</span>
</div>
<div class="clear"></div>
</th>
<th>
<div class="text">
<span>{% trans "Public?" %}</span>
</div>
<div class="clear"></div>
</th>
{% comment %}<th>
<div class="text">
<span>{% trans "Cloneable?" %}</span>
</div>
<div class="clear"></div>
</th>{% endcomment %}
<th>
<div class="text">
<span>{% trans "Actions" %}</span>
</div>
<div class="clear"></div>
</th>
</tr>
</thead>
<tbody>
{% for form_wizard_entry in form_wizard_entries %}
<tr>
<td><a href="{% url 'fobi.view_form_wizard_entry' form_wizard_entry.slug %}">{{ form_wizard_entry.name }}</a></td>
<td>{{ form_wizard_entry.is_public }}</td>
{#<td>{{ form_wizard_entry.is_cloneable }}</td>#}
<td>
<ul class="list-inline">
<li>
<a href="{% url 'fobi.edit_form_wizard_entry' form_wizard_entry.pk %}">
<span class="glyphicon glyphicon-edit"></span> {% trans "Edit" %}
</a>
</li>
<li>
<a href="{% url 'fobi.delete_form_wizard_entry' form_wizard_entry.pk %}">
<span class="glyphicon glyphicon-remove"></span> {% trans "Delete" %}
</a>
</li>
<li>
<a href="{% url 'fobi.export_form_wizard_entry' form_wizard_entry.pk %}">
<span class="glyphicon glyphicon-export"></span> {% trans "Export" %}
</a>
</li>
</ul>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div><!-- /#changelist -->
</div><!-- /#content-main -->
{% endblock content-wrapper %}
{% block sidebar-wrapper %}
{% endblock sidebar-wrapper %}

View file

@ -0,0 +1,30 @@
{% load i18n %}
{% comment %}
<div class="alert-box secondary alert-box-larger">
{% blocktrans %}Fields marked with <span class="required-field">*</span> are required{% endblocktrans %}
</div>
{% endcomment %}
{% for field in form %}
<div class="form-row{% if form.fields|length_is:'1' and form.errors %} errors{% endif %}{% for field in form %}{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% endfor %}">
{% if form.fields|length_is:'1' %}{{ form.errors }}{% endif %}
<div{% if not form.fields|length_is:'1' %} class="field-box{% if field.field.name %} field-{{ field.field.name }}{% endif %}{% if not field.is_readonly and field.errors %} errors{% endif %}"{% elif field.is_checkbox %} class="checkbox-row"{% endif %}>
{% if not form.fields|length_is:'1' and not field.is_readonly %}{{ field.errors }}{% endif %}
{% if field.is_checkbox %}
{{ field }}{{ field.label_tag }}
{% else %}
{{ field.label_tag }}
{% if field.is_readonly %}
<p>{{ field.contents|linebreaksbr }}</p>
{% else %}
{{ field }}
{% endif %}
{% endif %}
{% if field.field.help_text %}
<p class="help">{{ field.field.help_text|safe }}</p>
{% endif %}
</div>
</div>
{% endfor %}

View file

@ -0,0 +1,23 @@
{% extends "fobi/generic/snippets/form_wizard_snippet.html" %}
{% load i18n fobi_tags %}
{% block form_required_fields_message_wrapper_class %}well well-sm{% endblock %}
{% block form_element_wrapper_hidden_html_class %}hidden{% endblock %}
{% block form_element_wrapper_html_class %}form-group{% endblock %}
{% block form_element_wrapper_error_html_class%}has-error{% endblock %}
{% block form_element_label_html_class %}col-sm-3 control-label{% endblock %}
{% block form_element_required_field_sign_html_class %}required-field{% endblock %}
{% block form_element_field_wrapper_html_class %}col-sm-9{% endblock %}
{% block form_element_error_html_class %}help-block has-error{% endblock %}
{% block form_element_help_text_html_class %}help-block{% endblock %}
{% block hidden_form_element_wrapper_html_class %}form-group{% endblock %}

View file

@ -0,0 +1 @@
{% extends "fobi/generic/view_form_wizard_entry.html" %}

View file

@ -0,0 +1 @@
{% extends "fobi/generic/view_form_wizard_entry_ajax.html" %}