Browse Source

Instantiate the form in the view.
Validation still doesn't work.

sh4nks 11 years ago
parent
commit
9664e9ff42
3 changed files with 18 additions and 12 deletions
  1. 4 4
      flaskbb/admin/models.py
  2. 4 2
      flaskbb/admin/views.py
  3. 10 6
      flaskbb/templates/admin/settings.html

+ 4 - 4
flaskbb/admin/models.py

@@ -155,14 +155,14 @@ class Setting(db.Model):
                 if setting.value_type == "integer":
                 if setting.value_type == "integer":
                     setattr(
                     setattr(
                         SettingsForm, setting.key,
                         SettingsForm, setting.key,
-                        IntegerField(setting.name, field_validators,
+                        IntegerField(setting.name, validators=field_validators,
                                      description=setting.description)
                                      description=setting.description)
                     )
                     )
                 # FloatField
                 # FloatField
                 elif setting.value_type == "float":
                 elif setting.value_type == "float":
                     setattr(
                     setattr(
                         SettingsForm, setting.key,
                         SettingsForm, setting.key,
-                        FloatField(setting.name, field_validators,
+                        FloatField(setting.name, validators=field_validators,
                                    description=setting.description)
                                    description=setting.description)
                     )
                     )
 
 
@@ -170,7 +170,7 @@ class Setting(db.Model):
             if setting.input_type == "text":
             if setting.input_type == "text":
                 setattr(
                 setattr(
                     SettingsForm, setting.key,
                     SettingsForm, setting.key,
-                    TextField(setting.name, field_validators,
+                    TextField(setting.name, validators=field_validators,
                               description=setting.description)
                               description=setting.description)
                 )
                 )
 
 
@@ -189,7 +189,7 @@ class Setting(db.Model):
                     BooleanField(setting.name, description=setting.description)
                     BooleanField(setting.name, description=setting.description)
                 )
                 )
 
 
-        return SettingsForm()
+        return SettingsForm
 
 
     @classmethod
     @classmethod
     def get_all(cls):
     def get_all(cls):

+ 4 - 2
flaskbb/admin/views.py

@@ -56,15 +56,17 @@ def settings(slug=None):
     settingsgroup = SettingsGroup.query.all()
     settingsgroup = SettingsGroup.query.all()
 
 
     if slug is not None:
     if slug is not None:
-        form = Setting.get_form(slug)
+        SettingsForm = Setting.get_form(slug)
     else:
     else:
         # or should we display an index with all available settingsgroups?
         # or should we display an index with all available settingsgroups?
-        form = Setting.get_form("general")
+        SettingsForm = Setting.get_form("general")
 
 
     # TODO: Only get those settings from the group
     # TODO: Only get those settings from the group
     #old_settings = Setting.as_dict()
     #old_settings = Setting.as_dict()
     #new_settings = {}
     #new_settings = {}
 
 
+    form = SettingsForm()
+
     if form.validate_on_submit():
     if form.validate_on_submit():
         print "Passed"
         print "Passed"
     else:
     else:

+ 10 - 6
flaskbb/templates/admin/settings.html

@@ -7,16 +7,19 @@
 <form class="form-horizontal" role="form" method="post">
 <form class="form-horizontal" role="form" method="post">
 
 
     {#
     {#
-    Form validation does work when doing it this way
+    Doesn't work
+    {{ form.hidden_tag() }}
     {{ render_field(form.project_title) }}
     {{ render_field(form.project_title) }}
     {{ render_field(form.project_subtitle) }}
     {{ render_field(form.project_subtitle) }}
     {{ render_field(form.posts_per_page) }}
     {{ render_field(form.posts_per_page) }}
+
+    {{ form.errors }}
+
     #}
     #}
+
+    {#
     {% for field in form %}
     {% for field in form %}
-        {# Form validation doesn't work when doing it this way #}
-        {% if field.type in ["HiddenField", "CSRFTokenField"] %}
-            {{ field() }}
-        {% endif %}
+        Also doesn't work
         {% if field.type not in ["TextField", "IntegerField"] %}
         {% if field.type not in ["TextField", "IntegerField"] %}
             {% if field.type == "BooleanField" %}
             {% if field.type == "BooleanField" %}
                 {{ render_boolean_field(field) }}
                 {{ render_boolean_field(field) }}
@@ -28,8 +31,9 @@
         {% else %}
         {% else %}
             {{ render_field(field) }}
             {{ render_field(field) }}
         {% endif %}
         {% endif %}
+        {{ field.errors }}
     {%  endfor %}
     {%  endfor %}
-
+    #}
     <button type="submit" class="btn btn-default">Save</button>
     <button type="submit" class="btn btn-default">Save</button>
 
 
 </form>
 </form>