Просмотр исходного кода

Only update where database is different from fixture

Toshiki Wulf 7 лет назад
Родитель
Сommit
c31b90c4b0
1 измененных файлов с 10 добавлено и 1 удалено
  1. 10 1
      flaskbb/utils/populate.py

+ 10 - 1
flaskbb/utils/populate.py

@@ -110,8 +110,17 @@ def update_settings_from_fixture(fixture, overwrite_group=False,
 
 
             setting = Setting.query.filter_by(key=settings[0]).first()
             setting = Setting.query.filter_by(key=settings[0]).first()
 
 
-            if (setting is not None and overwrite_setting) or setting is None:
+            if setting is not None:
+                setting_is_different = (
+                    setting.value != settings[1]["value"]
+                    or setting.value_type != settings[1]["value_type"]
+                    or setting.name != settings[1]["name"]
+                    or setting.description != settings[1]["description"]
+                    or setting.extra != settings[1].get("extra", "")
+                    or setting.settingsgroup != group.key
+                )
 
 
+            if (setting is not None and overwrite_setting and setting_is_different) or setting is None:
                 if setting is not None:
                 if setting is not None:
                     setting.value = settings[1]["value"]
                     setting.value = settings[1]["value"]
                     setting.value_type = settings[1]["value_type"]
                     setting.value_type = settings[1]["value_type"]