Browse Source

The input_type field was somewhat redundant.

sh4nks 11 years ago
parent
commit
01c43cddc8
3 changed files with 29 additions and 40 deletions
  1. 28 29
      flaskbb/admin/models.py
  2. 1 10
      flaskbb/fixtures/settings.py
  3. 0 1
      flaskbb/utils/populate.py

+ 28 - 29
flaskbb/admin/models.py

@@ -1,5 +1,5 @@
-from wtforms import (TextField, IntegerField, BooleanField, SelectField,
-                     FloatField, validators)
+from wtforms import (TextField, IntegerField, FloatField, BooleanField,
+                     SelectField, SelectMultipleField, validators)
 from flask.ext.wtf import Form
 from flaskbb.extensions import db
 
@@ -76,13 +76,9 @@ class Setting(db.Model):
     # The description (displayed in the form)
     description = db.Column(db.String, nullable=False)
 
-    # Available types: string, integer, boolean, array, float
+    # Available types: string, integer, float, boolean, select, selectmultiple
     value_type = db.Column(db.String, nullable=False)
 
-    # Available types: text, number, choice, yesno
-    # They are used in the form creation process
-    input_type = db.Column(db.String, nullable=False)
-
     # Extra attributes like, validation things (min, max length...)
     extra = db.Column(db.PickleType)
 
@@ -138,40 +134,43 @@ class Setting(db.Model):
                         validators.Length(max=setting.extra["max"])
                     )
 
-            # Generate the fields based on input_type and value_type
-            if setting.input_type == "number":
-                # IntegerField
-                if setting.value_type == "integer":
-                    setattr(
-                        SettingsForm, setting.key,
-                        IntegerField(setting.name, validators=field_validators,
-                                     description=setting.description)
-                    )
-                # FloatField
-                elif setting.value_type == "float":
-                    setattr(
-                        SettingsForm, setting.key,
-                        FloatField(setting.name, validators=field_validators,
-                                   description=setting.description)
-                    )
+            # Generate the fields based on value_type
+            # IntegerField
+            if setting.value_type == "integer":
+                setattr(
+                    SettingsForm, setting.key,
+                    IntegerField(setting.name, validators=field_validators,
+                                 description=setting.description)
+                )
+            # FloatField
+            elif setting.value_type == "float":
+                setattr(
+                    SettingsForm, setting.key,
+                    FloatField(setting.name, validators=field_validators,
+                               description=setting.description)
+                )
 
             # TextField
-            if setting.input_type == "text":
+            if setting.value_type == "string":
                 setattr(
                     SettingsForm, setting.key,
                     TextField(setting.name, validators=field_validators,
                               description=setting.description)
                 )
 
-            if setting.input_type == "array":
+            # SelectMultipleField
+            if setting.value_type == "selectmultiple":
                 setattr(
                     SettingsForm, setting.key,
-                    TextField(setting.name, validators=field_validators,
-                              description=setting.description)
+                    SelectMultipleField(
+                        setting.name,
+                        choices=setting.extra['choices'],
+                        description=setting.description
+                    )
                 )
 
             # SelectField
-            if setting.input_type == "choice" and "choices" in setting.extra:
+            if setting.value_type == "select":
                 setattr(
                     SettingsForm, setting.key,
                     SelectField(setting.name, choices=setting.extra['choices'],
@@ -179,7 +178,7 @@ class Setting(db.Model):
                 )
 
             # BooleanField
-            if setting.input_type == "yesno":
+            if setting.value_type == "boolean":
                 setattr(
                     SettingsForm, setting.key,
                     BooleanField(setting.name, description=setting.description)

+ 1 - 10
flaskbb/fixtures/settings.py

@@ -18,21 +18,18 @@ fixture = (
             ('project_title', {
                 'value':        "FlaskBB",
                 'value_type':   "string",
-                'input_type':   "text",
                 'name':         "Project title",
                 'description':  "The title of the project.",
             }),
             ('project_subtitle', {
                 'value':        "A lightweight forum software in Flask",
                 'value_type':   "string",
-                'input_type':   "text",
                 'name':         "Project subtitle",
                 'description':  "A short description of the project.",
             }),
             ('posts_per_page', {
                 'value':        10,
                 'value_type':   "integer",
-                'input_type':   "number",
                 'extra':        {'min': 5},
                 'name':         "Posts per page",
                 'description':  "Number of posts displayed per page.",
@@ -40,7 +37,6 @@ fixture = (
             ('topics_per_page', {
                 'value':        10,
                 'value_type':   "integer",
-                'input_type':   "number",
                 'extra':        {'min': 5},
                 'name':         "Topics per page",
                 'description':  "Number of topics displayed per page.",
@@ -48,7 +44,6 @@ fixture = (
             ('users_per_page', {
                 'value':        10,
                 'value_type':   "integer",
-                'input_type':   "number",
                 'extra':        {'min': 5},
                 'name':         "Users per page",
                 'description':  "Number of users displayed per page.",
@@ -62,7 +57,6 @@ fixture = (
             ('online_last_minutes', {
                 'value':        15,
                 'value_type':   "integer",
-                'input_type':   "number",
                 'extra':        {'min': 0},
                 'name':         "Online last minutes",
                 'description':  "How long a user can be inactive before he is marked as offline. 0 to disable it.",
@@ -70,7 +64,6 @@ fixture = (
             ('title_length', {
                 'value':        15,
                 'value_type':   "integer",
-                'input_type':   "number",
                 'extra':        {'min': 0},
                 'name':         "Topic title length",
                 'description':  "The length of the topic title shown on the index."
@@ -78,7 +71,6 @@ fixture = (
             ('tracker_length', {
                 'value':        7,
                 'value_type':   "integer",
-                'input_type':   "number",
                 'extra':        {'min': 0},
                 'name':         "Tracker length",
                 'description':  "The days for how long the forum should deal with unread topics. 0 to disable it."
@@ -91,8 +83,7 @@ fixture = (
         "settings": (
             ('default_theme', {
                 'value':        "bootstrap3",
-                'value_type':   "text",
-                'input_type':   "choice",
+                'value_type':   "select",
                 'extra':        {'choices': None},
                 'name':         "Default theme",
                 'description':  "Change the default theme for your forum."

+ 0 - 1
flaskbb/utils/populate.py

@@ -40,7 +40,6 @@ def create_settings_from_fixture(fixture):
                 key=settings[0],
                 value=settings[1]['value'],
                 value_type=settings[1]['value_type'],
-                input_type=settings[1]['input_type'],
                 name=settings[1]['name'],
                 description=settings[1]['description'],
                 extra=settings[1].get('extra', ""),     # Optional field