Seo
This commit is contained in:
@@ -0,0 +1 @@
|
||||
from . import seo_content
|
||||
@@ -0,0 +1,90 @@
|
||||
import json
|
||||
import logging
|
||||
from odoo import http
|
||||
from odoo.http import request
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class SeoContentController(http.Controller):
|
||||
|
||||
@http.route('/web/seo-content/check-api', type='jsonrpc', auth='user')
|
||||
def check_api_connection(self):
|
||||
"""Check if API connection is configured and working."""
|
||||
try:
|
||||
ICP = request.env['ir.config_parameter'].sudo()
|
||||
api_key = ICP.get_param('otoolkit_api_key', '')
|
||||
base_url = ICP.get_param('otoolkit.api.endpoint', '')
|
||||
|
||||
if not api_key or not base_url:
|
||||
return {
|
||||
'success': False,
|
||||
'error': 'API not configured',
|
||||
'configured': False,
|
||||
}
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
'configured': True,
|
||||
'endpoint': base_url,
|
||||
}
|
||||
except Exception as e:
|
||||
_logger.exception("API check error")
|
||||
return {
|
||||
'success': False,
|
||||
'error': str(e),
|
||||
}
|
||||
|
||||
@http.route('/web/seo-content/get-templates', type='json', auth='user')
|
||||
def get_templates(self, content_type=None):
|
||||
"""Get available templates for a content type."""
|
||||
domain = [('active', '=', True)]
|
||||
if content_type:
|
||||
domain.append(('content_type', '=', content_type))
|
||||
|
||||
templates = request.env['otk.seo.template'].search_read(
|
||||
domain,
|
||||
['name', 'content_type', 'description', 'default_tone',
|
||||
'default_word_count', 'include_images', 'default_image_count'],
|
||||
order='sequence, name'
|
||||
)
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
'templates': templates,
|
||||
}
|
||||
|
||||
@http.route('/web/seo-content/get-languages', type='jsonrpc', auth='user')
|
||||
def get_languages(self):
|
||||
"""Get available languages for content generation."""
|
||||
languages = request.env['res.lang'].search_read(
|
||||
[('active', '=', True)],
|
||||
['code', 'name', 'iso_code'],
|
||||
order='name'
|
||||
)
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
'languages': languages,
|
||||
}
|
||||
|
||||
@http.route('/web/seo-content/get-blogs', type='jsonrpc', auth='user')
|
||||
def get_blogs(self):
|
||||
"""Get available blogs for publishing."""
|
||||
try:
|
||||
blogs = request.env['blog.blog'].search_read(
|
||||
[('active', '=', True)],
|
||||
['name', 'subtitle'],
|
||||
order='name'
|
||||
)
|
||||
return {
|
||||
'success': True,
|
||||
'blogs': blogs,
|
||||
}
|
||||
except Exception:
|
||||
# website_blog not installed
|
||||
return {
|
||||
'success': True,
|
||||
'blogs': [],
|
||||
'warning': 'Website Blog module not installed',
|
||||
}
|
||||
Reference in New Issue
Block a user