From f27a8664d4cdab6ce692623f40155962dcf15ca6 Mon Sep 17 00:00:00 2001 From: August Johnson Date: Sat, 31 Aug 2024 09:01:41 -0500 Subject: [PATCH 1/2] changing quicksetup. --- api/management/commands/quicksetup.py | 39 ++++++++-------- api_v2/management/commands/buildindex.py | 3 -- api_v2/views/search.py | 2 - server/settings.py | 11 +++-- server/urls.py | 58 ++++++++++++------------ 5 files changed, 54 insertions(+), 59 deletions(-) diff --git a/api/management/commands/quicksetup.py b/api/management/commands/quicksetup.py index ce0c491e..a3c0a526 100644 --- a/api/management/commands/quicksetup.py +++ b/api/management/commands/quicksetup.py @@ -28,26 +28,28 @@ def handle(self, *args, **options): self.stdout.write('Collecting static files...') collect_static() - self.stdout.write('Populating the v1 database...') - import_v1() - + if settings.INCLUDE_V1_DATA: + self.stdout.write('Populating the v1 database...') + import_v1() + + if not options['noindex']: + if settings.BUILD_V1_INDEX: + build_haystack_index() + else: + self.stdout.write("Skipping v1 index build because of --noindex") + else: + self.stdout.write('Skipping v1 database population.') - if settings.V2_ENABLED: + if settings.INCLUDE_V2_DATA: self.stdout.write('Populating the v2 database...') import_v2() - if options["noindex"]: - self.stdout.write('Skipping search index rebuild due to --noindex...') + if not options['noindex']: + if settings.BUILD_V2_INDEX: + self.stdout.write('Building the v2 index with both v1 and v2 data.') + build_v1v2_searchindex() else: - self.stdout.write('Rebuilding the search index...') - build_haystack_index() - - # Flag for v2 enabled decides: - if settings.V2_SEARCH_ENABLED: - if settings.V2_ENABLED: - build_searchindex() - else: - build_v1_searchindex() + self.stdout.write('Skipping v2 index build because of --noindex.') self.stdout.write(self.style.SUCCESS('API setup complete.')) @@ -81,12 +83,7 @@ def build_haystack_index() -> None: API that is being called, and only applies to v1 data.""" call_command('update_index', '--remove') -def build_v1_searchindex() -> None: - """Builds the custom search index defined in the api_v2 management - commands. Only adds the v1 data.""" - call_command('buildindex', '--v1') - -def build_searchindex() -> None: +def build_v1v2_searchindex() -> None: """Builds the custom search index defined in the api_v2 management commands. Only adds the v1 data.""" call_command('buildindex','--v1','--v2') \ No newline at end of file diff --git a/api_v2/management/commands/buildindex.py b/api_v2/management/commands/buildindex.py index 38bf7da6..e2acdd1e 100644 --- a/api_v2/management/commands/buildindex.py +++ b/api_v2/management/commands/buildindex.py @@ -120,9 +120,6 @@ def handle(self, *args, **options): # Clear out the content table. self.unload_all_content() - load_v1=False - load_v2=False - if options["v1"]: # Load the v1 models into the content table. self.load_content(v1.MagicItem,"v1") diff --git a/api_v2/views/search.py b/api_v2/views/search.py index 11653f31..d0ef67ff 100644 --- a/api_v2/views/search.py +++ b/api_v2/views/search.py @@ -66,6 +66,4 @@ def get_queryset(self): f"SELECT {','.join(columns)} FROM {table_name} WHERE {' AND '.join(filters)} ORDER BY {order_by}", [schema_version, document_pk, object_model, query]) - print(weighted_queryset) - return weighted_queryset diff --git a/server/settings.py b/server/settings.py index d91f3a17..ec164920 100644 --- a/server/settings.py +++ b/server/settings.py @@ -29,12 +29,15 @@ # SECURITY WARNING: don't run with debug turned on in production! DEBUG = os.environ.get("OPEN5E_DEBUG", "") != "False" -# A flag that is True when not production to disallow /v2 api endpoint. -V2_ENABLED = True +# Flags to include v1 data and index. +INCLUDE_V1_DATA = True +BUILD_V1_INDEX = True -# A flag to be set related to v2 search being used for v1 items. -V2_SEARCH_ENABLED = True +# Flags to include v2 data +INCLUDE_V2_DATA = True +# V2 index always includes v1 data (at this time). +BUILD_V2_INDEX = True # Added as part of the migration from django 2 to django 3. # Not likely to apply in the short term. https://docs.djangoproject.com/en/4.1/ref/settings/#default-auto-field diff --git a/server/urls.py b/server/urls.py index 4245859d..08978569 100644 --- a/server/urls.py +++ b/server/urls.py @@ -51,37 +51,37 @@ router_v2 = routers.DefaultRouter() -if settings.V2_ENABLED: - router_v2.register(r'items',views_v2.ItemViewSet) - router_v2.register(r'itemsets',views_v2.ItemSetViewSet) - router_v2.register(r'itemcategories',views_v2.ItemCategoryViewSet) - router_v2.register(r'documents',views_v2.DocumentViewSet) - router_v2.register(r'licenses',views_v2.LicenseViewSet) - router_v2.register(r'publishers',views_v2.PublisherViewSet) - router_v2.register(r'weapons',views_v2.WeaponViewSet) - router_v2.register(r'armor',views_v2.ArmorViewSet) - router_v2.register(r'rulesets',views_v2.RulesetViewSet) - router_v2.register(r'backgrounds',views_v2.BackgroundViewSet) - router_v2.register(r'feats',views_v2.FeatViewSet) - router_v2.register(r'races',views_v2.RaceViewSet) - router_v2.register(r'creatures',views_v2.CreatureViewSet) - router_v2.register(r'creaturetypes',views_v2.CreatureTypeViewSet) - router_v2.register(r'creaturesets',views_v2.CreatureSetViewSet) - router_v2.register(r'damagetypes',views_v2.DamageTypeViewSet) - router_v2.register(r'languages',views_v2.LanguageViewSet) - router_v2.register(r'alignments',views_v2.AlignmentViewSet) - router_v2.register(r'conditions',views_v2.ConditionViewSet) - router_v2.register(r'spells',views_v2.SpellViewSet) - router_v2.register(r'classes',views_v2.CharacterClassViewSet) - router_v2.register(r'sizes',views_v2.SizeViewSet) - router_v2.register(r'itemrarities',views_v2.ItemRarityViewSet) - router_v2.register(r'environments',views_v2.EnvironmentViewSet) - router_v2.register(r'abilities',views_v2.AbilityViewSet) - router_v2.register(r'skills',views_v2.SkillViewSet) + +router_v2.register(r'items',views_v2.ItemViewSet) +router_v2.register(r'itemsets',views_v2.ItemSetViewSet) +router_v2.register(r'itemcategories',views_v2.ItemCategoryViewSet) +router_v2.register(r'documents',views_v2.DocumentViewSet) +router_v2.register(r'licenses',views_v2.LicenseViewSet) +router_v2.register(r'publishers',views_v2.PublisherViewSet) +router_v2.register(r'weapons',views_v2.WeaponViewSet) +router_v2.register(r'armor',views_v2.ArmorViewSet) +router_v2.register(r'rulesets',views_v2.RulesetViewSet) +router_v2.register(r'backgrounds',views_v2.BackgroundViewSet) +router_v2.register(r'feats',views_v2.FeatViewSet) +router_v2.register(r'races',views_v2.RaceViewSet) +router_v2.register(r'creatures',views_v2.CreatureViewSet) +router_v2.register(r'creaturetypes',views_v2.CreatureTypeViewSet) +router_v2.register(r'creaturesets',views_v2.CreatureSetViewSet) +router_v2.register(r'damagetypes',views_v2.DamageTypeViewSet) +router_v2.register(r'languages',views_v2.LanguageViewSet) +router_v2.register(r'alignments',views_v2.AlignmentViewSet) +router_v2.register(r'conditions',views_v2.ConditionViewSet) +router_v2.register(r'spells',views_v2.SpellViewSet) +router_v2.register(r'classes',views_v2.CharacterClassViewSet) +router_v2.register(r'sizes',views_v2.SizeViewSet) +router_v2.register(r'itemrarities',views_v2.ItemRarityViewSet) +router_v2.register(r'environments',views_v2.EnvironmentViewSet) +router_v2.register(r'abilities',views_v2.AbilityViewSet) +router_v2.register(r'skills',views_v2.SkillViewSet) router_search = routers.DefaultRouter() -if settings.V2_SEARCH_ENABLED: - router_search.register('',views_v2.SearchResultViewSet, basename='search') + +router_search.register('',views_v2.SearchResultViewSet, basename='search') # Wire up our API using automatic URL routing. From 20e71c004aa53f3a5adb12082ecba7ad646a20e0 Mon Sep 17 00:00:00 2001 From: August Johnson Date: Sat, 31 Aug 2024 09:13:35 -0500 Subject: [PATCH 2/2] Changing the v1 index build to false. --- api/management/commands/quicksetup.py | 7 +++++++ server/settings.py | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/api/management/commands/quicksetup.py b/api/management/commands/quicksetup.py index a3c0a526..8db91f15 100644 --- a/api/management/commands/quicksetup.py +++ b/api/management/commands/quicksetup.py @@ -21,6 +21,13 @@ def add_arguments(self, parser: argparse.ArgumentParser): ) def handle(self, *args, **options): + """[TODO] Check if the directory is dirty.""" + # Does whoosh_index exist + + # Does staticfiles exist + # Does db.sqlite3 exist + + """Main logic.""" self.stdout.write('Migrating the database...') migrate_db() diff --git a/server/settings.py b/server/settings.py index ec164920..19941392 100644 --- a/server/settings.py +++ b/server/settings.py @@ -31,7 +31,7 @@ # Flags to include v1 data and index. INCLUDE_V1_DATA = True -BUILD_V1_INDEX = True +BUILD_V1_INDEX = False # Flags to include v2 data INCLUDE_V2_DATA = True