Parcourir la source

Page to add a project by JSON URL

Move the form macros to a separate file
Gu1 il y a 11 ans
Parent
commit
5e417c66dc

+ 2 - 2
ffdnispdb/templates/add_project.html

@@ -9,7 +9,7 @@
     <br />
     <br />
     <p class="text-center">
-      <a class="btn btn-large btn-primary">{{ _("Heck yeah") }}</a>
+      <a class="btn btn-large btn-primary" href="{{ url_for('create_project_json') }}">{{ _("Heck yeah") }}</a>
     </p>
   </div>
   <div class="span5 project-choice">
@@ -17,7 +17,7 @@
     <p>{% trans %}Don't have the ressources or time to host a JSON file ? Don't worry, you can also fill our simple form to give us the informations about your local ISP. Only problem, you'll have to come back here if you want to update it.{% endtrans %}</p>
     <br />
     <p class="text-center">
-      <a class="btn btn-large btn-primary" href="{{ url_for('create_project') }}">{{ _("That JSON thing is too cool for me") }}</a>
+      <a class="btn btn-large btn-primary" href="{{ url_for('create_project_form') }}">{{ _("That JSON thing is too cool for me") }}</a>
     </p>
   </div>
 </div>

+ 24 - 0
ffdnispdb/templates/form_macros.html

@@ -0,0 +1,24 @@
+{% macro display_errors(errors) -%}
+            {%- if errors -%}
+            <span class="help-inline error-list">
+              <strong>{%- trans ercnt=errors|count %}Error:{% pluralize %}Errors:{% endtrans -%}</strong>{#
+              #}<ul class="inline" style="display: inline;">
+              {%- for e in errors -%}
+                <li>{{ e }}</li>
+              {%- endfor -%}
+              </ul>
+            </span>
+            {%- endif -%}
+{%- endmacro %}
+{% macro render_field(field) -%}
+        <div class="control-group{% if field.flags.required %} required{%endif%}{% if field.errors %} error{% endif %}">
+          <label class="control-label" for="{{ field.name }}">{{ field.label.text|capitalize }}</label>
+          <div class="controls">
+            {{ field(placeholder=field.description.0, **kwargs) if field.description.0 else field(**kwargs) }}
+            {{ display_errors(field.errors) }}
+            {%- if field.description.1 -%}
+            <span class="help-block">{{ field.description.1|safe }}</span>
+            {%- endif %}
+          </div>
+        </div>
+{%- endmacro %}

+ 18 - 40
ffdnispdb/templates/project_form.html

@@ -1,51 +1,29 @@
 {% extends "layout.html" %}
-{% macro display_errors(errors) -%}
-            {%- if errors -%}
-            <span class="help-inline error-list">
-              <strong>{%- trans ercnt=errors|count %}Error:{% pluralize %}Errors:{% endtrans -%}</strong>{#
-              #}<ul class="inline" style="display: inline;">
-              {%- for e in errors -%}
-                <li>{{ e }}</li>
-              {%- endfor -%}
-              </ul>
-            </span>
-            {%- endif -%}
-{%- endmacro %}
-{% macro render_field(field) -%}
-        <div class="control-group{% if field.flags.required %} required{%endif%}{% if field.errors %} error{% endif %}">
-          <label class="control-label" for="{{ field.name }}">{{ field.label.text|capitalize }}</label>
-          <div class="controls">
-            {{ field(placeholder=field.description.0, **kwargs) if field.description.0 else field(**kwargs) }}
-            {{ display_errors(field.errors) }}
-            {%- if field.description.1 -%}
-            <span class="help-block">{{ field.description.1|safe }}</span>
-            {%- endif %}
-          </div>
-        </div>
-{%- endmacro %}
+{% import "form_macros.html" as fm %}
 {% block container %}
 <div class="row">
   <div class="span11 well">
-    <form action="{{ url_for('create_project') }}" method="post" class="form-horizontal">
+    <form action="{{ url_for('create_project_form') }}" method="post" class="form-horizontal">
       {{ form.csrf_token }}
-      <fieldset><legend>{{ _("Add a new project") }}</legend>
-        {{ render_field(form.name) }}
-        {{ render_field(form.shortname) }}
-        {{ render_field(form.description) }}
-        {{ render_field(form.logo_url) }}
-        {{ render_field(form.website) }}
-        {{ render_field(form.contact_email) }}
-        {{ render_field(form.main_ml) }}
-        {{ render_field(form.creation_date) }}
-        {{ render_field(form.member_count, class_="input-small") }}
-        {{ render_field(form.subscriber_count, class_="input-small") }}
-        {{ render_field(form.chatrooms, class="fieldlist") }}
+      <fieldset>
+        <legend>{{ _("Add a new project") }}</legend>
+        {{ fm.render_field(form.name) }}
+        {{ fm.render_field(form.shortname) }}
+        {{ fm.render_field(form.description) }}
+        {{ fm.render_field(form.logo_url) }}
+        {{ fm.render_field(form.website) }}
+        {{ fm.render_field(form.contact_email) }}
+        {{ fm.render_field(form.main_ml) }}
+        {{ fm.render_field(form.creation_date) }}
+        {{ fm.render_field(form.member_count, class_="input-small") }}
+        {{ fm.render_field(form.subscriber_count, class_="input-small") }}
+        {{ fm.render_field(form.chatrooms, class="fieldlist") }}
         <div class="control-group{% if form.covered_areas.errors %} error{% endif %}">
           <label class="control-label" for="coordinates">{{ form.covered_areas.label.text }}</label>
           <div class="controls">
             <ul class="fieldlist">
               {% for c in form.covered_areas -%}
-              <li>{{ c() }}{{ display_errors(c.flattened_errors) }}</li>
+              <li>{{ c() }}{{ fm.display_errors(c.flattened_errors) }}</li>
               {%- endfor %}
             </ul>
             {% if form.covered_areas.description.1 -%}
@@ -61,13 +39,13 @@
               <span class="add-on">:</span>
               {{ form.longitude(class="input-small", placeholder=form.longitude.label.text|capitalize) }}
             </div>
-            {{ display_errors(form.latitude.errors+form.longitude.errors) }}
+            {{ fm.display_errors(form.latitude.errors+form.longitude.errors) }}
             {%- if form.latitude.description.1 -%}
             <span class="help-block">{{ form.latitude.description.1|safe }}</span>
             {%- endif %}
           </div>
         </div>
-        {{ render_field(form.step) }}
+        {{ fm.render_field(form.step) }}
         <div class="form-actions">
           <input type="submit" class="btn btn-primary" value="{{ _("Submit") }}" />
           <input type="reset" class="btn" value="{{ _("Cancel") }}" />

+ 16 - 0
ffdnispdb/templates/project_json_form.html

@@ -0,0 +1,16 @@
+{% extends "layout.html" %}
+{% block container %}
+<div class="row">
+  <div class="span11 well">
+    <form action="{{ url_for('create_project_form') }}" method="post" class="form-horizontal">
+      {{ form.csrf_token }}
+      <fieldset>
+        <legend>{{ _("Add a new project from a JSON URL") }}</legend>
+        <div class="form-actions">
+          <input type="submit" class="btn btn-primary" value="{{ _("Submit") }}" />
+          <input type="reset" class="btn" value="{{ _("Cancel") }}" />
+        </div>
+      </fieldset>
+  </div>
+</div>
+{% endblock %}

+ 13 - 1
ffdnispdb/views.py

@@ -91,7 +91,7 @@ def add_project():
 
 
 @app.route('/create/form', methods=['GET', 'POST'])
-def create_project():
+def create_project_form():
     form = forms.ProjectForm()
     if form.validate_on_submit():
         isp=ISP()
@@ -106,6 +106,18 @@ def create_project():
     return render_template('project_form.html', form=form)
 
 
+@app.route('/create/json-url', methods=['GET', 'POST'])
+def create_project_json():
+    form = forms.ProjectJSONForm()
+    if form.validate_on_submit():
+        isp=ISP()
+        db.session.add(isp)
+        db.session.commit()
+        flash(_(u'Project created'), 'info')
+        return redirect(url_for('project', projectid=isp.id))
+    return render_template('project_json_form.html', form=form)
+
+
 @app.route('/search', methods=['GET', 'POST'])
 def search():
     if request.method == 'POST':