Create wizard package and complete view layer: Wizard implementation: - Create wizards/__init__.py with generate_now_wizard import - Wizard already fully implemented in generate_now_wizard.py - Update main addon __init__.py to import wizards Menu structure: - Create menu_views.xml with main menu and submenu structure - Organize menus: Generation, Configuration, Output, Settings View files (split from consolidated views): - Create blog_schedule_views.xml (schedule slot tree/form/action) - Create blog_generation_log_views.xml (log tree/form/action with retry) - Create blog_post_social_views.xml (social copy tree/form/action) - Create generate_now_wizard_views.xml (wizard form/action) - Update blog_topic_views.xml to contain only topic views Features included: - Schedule slot management with LLM provider/model selection - Social media platform toggles per schedule - Generation log viewer with retry capability - Wizard for on-demand blog generation - Complete navigation menu structure - Dark mode and responsive design support All views ready for Odoo 14+ deployment. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
58 lines
3 KiB
XML
58 lines
3 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<odoo>
|
|
|
|
<!-- ================================================================
|
|
GENERATE NOW WIZARD VIEW
|
|
================================================================ -->
|
|
|
|
<record id="view_blog_generate_wizard_form" model="ir.ui.view">
|
|
<field name="name">itsulu.blog.generate.wizard.form</field>
|
|
<field name="model">itsulu.blog.generate.wizard</field>
|
|
<field name="arch" type="xml">
|
|
<form string="Generate Blog Post">
|
|
<sheet>
|
|
<div class="oe_title">
|
|
<h2>AI Blog Post Generator</h2>
|
|
<p class="text-muted">Fill in the fields below and click Generate. One API call creates the full post, SEO, tags, and social media copy.</p>
|
|
</div>
|
|
<group>
|
|
<group string="Content">
|
|
<field name="topic" placeholder="Leave blank to use queue / let AI choose"
|
|
data-test-id="wizard-topic"/>
|
|
<field name="blog_id" data-test-id="wizard-blog"/>
|
|
<field name="tone" data-test-id="wizard-tone"/>
|
|
<field name="auto_publish" widget="toggle_button"
|
|
data-test-id="wizard-auto-publish"/>
|
|
</group>
|
|
<group string="LLM Configuration">
|
|
<field name="llm_provider" data-test-id="wizard-provider"/>
|
|
<field name="llm_model" data-test-id="wizard-model"
|
|
placeholder="e.g. claude-sonnet-4-20250514"/>
|
|
<field name="image_provider" data-test-id="wizard-image-provider"/>
|
|
</group>
|
|
</group>
|
|
<group string="Social Media Platforms">
|
|
<p class="text-muted col-12">Select which platforms to generate copy for:</p>
|
|
<field name="platform_twitter" widget="toggle_button"/>
|
|
<field name="platform_bluesky" widget="toggle_button"/>
|
|
<field name="platform_mastodon" widget="toggle_button"/>
|
|
<field name="platform_linkedin" widget="toggle_button"/>
|
|
</group>
|
|
</sheet>
|
|
<footer>
|
|
<button name="action_generate" type="object" string="▶ Generate Post"
|
|
class="btn-primary" data-test-id="btn-generate-now"/>
|
|
<button string="Cancel" class="btn-secondary" special="cancel"/>
|
|
</footer>
|
|
</form>
|
|
</field>
|
|
</record>
|
|
|
|
<record id="action_blog_generate_wizard" model="ir.actions.act_window">
|
|
<field name="name">Generate Blog Post</field>
|
|
<field name="res_model">itsulu.blog.generate.wizard</field>
|
|
<field name="view_mode">form</field>
|
|
<field name="target">new</field>
|
|
</record>
|
|
|
|
</odoo>
|