From 0fc4febabf7cf4939cba94dd6522c950fedc6f0e Mon Sep 17 00:00:00 2001 From: Nicholas Riegel Date: Fri, 29 May 2026 12:11:42 -0400 Subject: [PATCH] Reorganize codebase into Odoo addon structure per ARCHITECTURE.md Restructure project files to follow the addon layout: - Move models to addons/itsulu_blog_publisher/models/ - Move services (LLM providers, routers) to addons/itsulu_blog_publisher/services/ - Move wizards to addons/itsulu_blog_publisher/wizards/ - Move views (XML templates) to addons/itsulu_blog_publisher/views/ - Move data (cron, mail templates) to addons/itsulu_blog_publisher/data/ - Move security (ACL) to addons/itsulu_blog_publisher/security/ - Move tests and factories to addons/itsulu_blog_publisher/tests/ - Move BDD features to addons/itsulu_blog_publisher/features/ - Create __init__.py files for all Python packages This enables proper Odoo module discovery and import structure. Co-Authored-By: Claude Haiku 4.5 --- addons/itsulu_blog_publisher/__init__.py | 0 __manifest__.py => addons/itsulu_blog_publisher/__manifest__.py | 0 .../itsulu_blog_publisher/data/ir_cron_data.xml | 0 .../itsulu_blog_publisher/data/mail_template_data.xml | 0 .../itsulu_blog_publisher/features/blog_generation.feature | 0 addons/itsulu_blog_publisher/models/__init__.py | 0 .../itsulu_blog_publisher/models/blog_generation_log.py | 0 .../itsulu_blog_publisher/models/blog_post_social.py | 0 .../itsulu_blog_publisher/models/blog_schedule.py | 0 .../itsulu_blog_publisher/models/blog_topic.py | 0 .../itsulu_blog_publisher/models/res_config_settings.py | 0 .../itsulu_blog_publisher/security/ir.model.access.csv | 0 addons/itsulu_blog_publisher/services/__init__.py | 0 .../itsulu_blog_publisher/services/anthropic_provider.py | 0 .../itsulu_blog_publisher/services/gemini_provider.py | 0 .../itsulu_blog_publisher/services/image_router.py | 0 .../itsulu_blog_publisher/services/llm_router.py | 0 .../itsulu_blog_publisher/services/ollama_provider.py | 0 .../itsulu_blog_publisher/services/openai_provider.py | 0 addons/itsulu_blog_publisher/tests/__init__.py | 0 factories.py => addons/itsulu_blog_publisher/tests/factories.py | 0 .../itsulu_blog_publisher/tests/test_bdd_steps.py | 0 .../itsulu_blog_publisher/tests/test_blog_generation_log.py | 0 .../itsulu_blog_publisher/tests/test_blog_post_social.py | 0 .../itsulu_blog_publisher/tests/test_blog_schedule.py | 0 .../itsulu_blog_publisher/tests/test_blog_topic.py | 0 .../itsulu_blog_publisher/tests/test_llm_router.py | 0 .../itsulu_blog_publisher/views/blog_topic_views.xml | 0 .../itsulu_blog_publisher/views/res_config_settings_views.xml | 0 .../views/website_blog_publisher_templates.xml | 0 addons/itsulu_blog_publisher/wizards/__init__.py | 0 .../itsulu_blog_publisher/wizards/generate_now_wizard.py | 0 32 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 addons/itsulu_blog_publisher/__init__.py rename __manifest__.py => addons/itsulu_blog_publisher/__manifest__.py (100%) rename ir_cron_data.xml => addons/itsulu_blog_publisher/data/ir_cron_data.xml (100%) rename mail_template_data.xml => addons/itsulu_blog_publisher/data/mail_template_data.xml (100%) rename all_features.feature => addons/itsulu_blog_publisher/features/blog_generation.feature (100%) create mode 100644 addons/itsulu_blog_publisher/models/__init__.py rename blog_generation_log.py => addons/itsulu_blog_publisher/models/blog_generation_log.py (100%) rename blog_post_social.py => addons/itsulu_blog_publisher/models/blog_post_social.py (100%) rename blog_schedule.py => addons/itsulu_blog_publisher/models/blog_schedule.py (100%) rename blog_topic.py => addons/itsulu_blog_publisher/models/blog_topic.py (100%) rename res_config_settings.py => addons/itsulu_blog_publisher/models/res_config_settings.py (100%) rename ir.model.access.csv => addons/itsulu_blog_publisher/security/ir.model.access.csv (100%) create mode 100644 addons/itsulu_blog_publisher/services/__init__.py rename anthropic_provider.py => addons/itsulu_blog_publisher/services/anthropic_provider.py (100%) rename gemini_provider.py => addons/itsulu_blog_publisher/services/gemini_provider.py (100%) rename image_router.py => addons/itsulu_blog_publisher/services/image_router.py (100%) rename llm_router.py => addons/itsulu_blog_publisher/services/llm_router.py (100%) rename ollama_provider.py => addons/itsulu_blog_publisher/services/ollama_provider.py (100%) rename openai_provider.py => addons/itsulu_blog_publisher/services/openai_provider.py (100%) create mode 100644 addons/itsulu_blog_publisher/tests/__init__.py rename factories.py => addons/itsulu_blog_publisher/tests/factories.py (100%) rename test_bdd_steps.py => addons/itsulu_blog_publisher/tests/test_bdd_steps.py (100%) rename test_blog_generation_log.py => addons/itsulu_blog_publisher/tests/test_blog_generation_log.py (100%) rename test_blog_post_social.py => addons/itsulu_blog_publisher/tests/test_blog_post_social.py (100%) rename test_blog_schedule.py => addons/itsulu_blog_publisher/tests/test_blog_schedule.py (100%) rename test_blog_topic.py => addons/itsulu_blog_publisher/tests/test_blog_topic.py (100%) rename test_llm_router.py => addons/itsulu_blog_publisher/tests/test_llm_router.py (100%) rename blog_topic_views.xml => addons/itsulu_blog_publisher/views/blog_topic_views.xml (100%) rename res_config_settings_views.xml => addons/itsulu_blog_publisher/views/res_config_settings_views.xml (100%) rename website_blog_publisher_templates.xml => addons/itsulu_blog_publisher/views/website_blog_publisher_templates.xml (100%) create mode 100644 addons/itsulu_blog_publisher/wizards/__init__.py rename generate_now_wizard.py => addons/itsulu_blog_publisher/wizards/generate_now_wizard.py (100%) diff --git a/addons/itsulu_blog_publisher/__init__.py b/addons/itsulu_blog_publisher/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/__manifest__.py b/addons/itsulu_blog_publisher/__manifest__.py similarity index 100% rename from __manifest__.py rename to addons/itsulu_blog_publisher/__manifest__.py diff --git a/ir_cron_data.xml b/addons/itsulu_blog_publisher/data/ir_cron_data.xml similarity index 100% rename from ir_cron_data.xml rename to addons/itsulu_blog_publisher/data/ir_cron_data.xml diff --git a/mail_template_data.xml b/addons/itsulu_blog_publisher/data/mail_template_data.xml similarity index 100% rename from mail_template_data.xml rename to addons/itsulu_blog_publisher/data/mail_template_data.xml diff --git a/all_features.feature b/addons/itsulu_blog_publisher/features/blog_generation.feature similarity index 100% rename from all_features.feature rename to addons/itsulu_blog_publisher/features/blog_generation.feature diff --git a/addons/itsulu_blog_publisher/models/__init__.py b/addons/itsulu_blog_publisher/models/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/blog_generation_log.py b/addons/itsulu_blog_publisher/models/blog_generation_log.py similarity index 100% rename from blog_generation_log.py rename to addons/itsulu_blog_publisher/models/blog_generation_log.py diff --git a/blog_post_social.py b/addons/itsulu_blog_publisher/models/blog_post_social.py similarity index 100% rename from blog_post_social.py rename to addons/itsulu_blog_publisher/models/blog_post_social.py diff --git a/blog_schedule.py b/addons/itsulu_blog_publisher/models/blog_schedule.py similarity index 100% rename from blog_schedule.py rename to addons/itsulu_blog_publisher/models/blog_schedule.py diff --git a/blog_topic.py b/addons/itsulu_blog_publisher/models/blog_topic.py similarity index 100% rename from blog_topic.py rename to addons/itsulu_blog_publisher/models/blog_topic.py diff --git a/res_config_settings.py b/addons/itsulu_blog_publisher/models/res_config_settings.py similarity index 100% rename from res_config_settings.py rename to addons/itsulu_blog_publisher/models/res_config_settings.py diff --git a/ir.model.access.csv b/addons/itsulu_blog_publisher/security/ir.model.access.csv similarity index 100% rename from ir.model.access.csv rename to addons/itsulu_blog_publisher/security/ir.model.access.csv diff --git a/addons/itsulu_blog_publisher/services/__init__.py b/addons/itsulu_blog_publisher/services/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/anthropic_provider.py b/addons/itsulu_blog_publisher/services/anthropic_provider.py similarity index 100% rename from anthropic_provider.py rename to addons/itsulu_blog_publisher/services/anthropic_provider.py diff --git a/gemini_provider.py b/addons/itsulu_blog_publisher/services/gemini_provider.py similarity index 100% rename from gemini_provider.py rename to addons/itsulu_blog_publisher/services/gemini_provider.py diff --git a/image_router.py b/addons/itsulu_blog_publisher/services/image_router.py similarity index 100% rename from image_router.py rename to addons/itsulu_blog_publisher/services/image_router.py diff --git a/llm_router.py b/addons/itsulu_blog_publisher/services/llm_router.py similarity index 100% rename from llm_router.py rename to addons/itsulu_blog_publisher/services/llm_router.py diff --git a/ollama_provider.py b/addons/itsulu_blog_publisher/services/ollama_provider.py similarity index 100% rename from ollama_provider.py rename to addons/itsulu_blog_publisher/services/ollama_provider.py diff --git a/openai_provider.py b/addons/itsulu_blog_publisher/services/openai_provider.py similarity index 100% rename from openai_provider.py rename to addons/itsulu_blog_publisher/services/openai_provider.py diff --git a/addons/itsulu_blog_publisher/tests/__init__.py b/addons/itsulu_blog_publisher/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/factories.py b/addons/itsulu_blog_publisher/tests/factories.py similarity index 100% rename from factories.py rename to addons/itsulu_blog_publisher/tests/factories.py diff --git a/test_bdd_steps.py b/addons/itsulu_blog_publisher/tests/test_bdd_steps.py similarity index 100% rename from test_bdd_steps.py rename to addons/itsulu_blog_publisher/tests/test_bdd_steps.py diff --git a/test_blog_generation_log.py b/addons/itsulu_blog_publisher/tests/test_blog_generation_log.py similarity index 100% rename from test_blog_generation_log.py rename to addons/itsulu_blog_publisher/tests/test_blog_generation_log.py diff --git a/test_blog_post_social.py b/addons/itsulu_blog_publisher/tests/test_blog_post_social.py similarity index 100% rename from test_blog_post_social.py rename to addons/itsulu_blog_publisher/tests/test_blog_post_social.py diff --git a/test_blog_schedule.py b/addons/itsulu_blog_publisher/tests/test_blog_schedule.py similarity index 100% rename from test_blog_schedule.py rename to addons/itsulu_blog_publisher/tests/test_blog_schedule.py diff --git a/test_blog_topic.py b/addons/itsulu_blog_publisher/tests/test_blog_topic.py similarity index 100% rename from test_blog_topic.py rename to addons/itsulu_blog_publisher/tests/test_blog_topic.py diff --git a/test_llm_router.py b/addons/itsulu_blog_publisher/tests/test_llm_router.py similarity index 100% rename from test_llm_router.py rename to addons/itsulu_blog_publisher/tests/test_llm_router.py diff --git a/blog_topic_views.xml b/addons/itsulu_blog_publisher/views/blog_topic_views.xml similarity index 100% rename from blog_topic_views.xml rename to addons/itsulu_blog_publisher/views/blog_topic_views.xml diff --git a/res_config_settings_views.xml b/addons/itsulu_blog_publisher/views/res_config_settings_views.xml similarity index 100% rename from res_config_settings_views.xml rename to addons/itsulu_blog_publisher/views/res_config_settings_views.xml diff --git a/website_blog_publisher_templates.xml b/addons/itsulu_blog_publisher/views/website_blog_publisher_templates.xml similarity index 100% rename from website_blog_publisher_templates.xml rename to addons/itsulu_blog_publisher/views/website_blog_publisher_templates.xml diff --git a/addons/itsulu_blog_publisher/wizards/__init__.py b/addons/itsulu_blog_publisher/wizards/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/generate_now_wizard.py b/addons/itsulu_blog_publisher/wizards/generate_now_wizard.py similarity index 100% rename from generate_now_wizard.py rename to addons/itsulu_blog_publisher/wizards/generate_now_wizard.py