From ab56c9e46435e96ede0617c78f17c102f6caf7f3 Mon Sep 17 00:00:00 2001 From: Jeremy Kersten Date: Fri, 22 Nov 2019 14:03:19 +0000 Subject: [PATCH] [IMP] website: add edit robots.txt in settings task-2091358 --- addons/website/__manifest__.py | 1 + addons/website/controllers/main.py | 2 +- addons/website/models/res_config_settings.py | 10 +++++++ addons/website/models/website.py | 2 ++ .../views/res_config_settings_views.xml | 12 +++++++++ addons/website/views/website_templates.xml | 7 +++++ addons/website/views/website_views.xml | 13 +++++++++ addons/website/wizard/__init__.py | 1 + addons/website/wizard/website_robots.py | 20 ++++++++++++++ addons/website/wizard/website_robots.xml | 27 +++++++++++++++++++ 10 files changed, 94 insertions(+), 1 deletion(-) create mode 100644 addons/website/wizard/website_robots.py create mode 100644 addons/website/wizard/website_robots.xml diff --git a/addons/website/__manifest__.py b/addons/website/__manifest__.py index d2017df9336..110b532b21d 100644 --- a/addons/website/__manifest__.py +++ b/addons/website/__manifest__.py @@ -34,6 +34,7 @@ 'views/ir_attachment_views.xml', 'views/res_partner_views.xml', 'wizard/base_language_install_views.xml', + 'wizard/website_robots.xml', ], 'demo': [ 'data/website_demo.xml', diff --git a/addons/website/controllers/main.py b/addons/website/controllers/main.py index 3cda9d5348f..b3b3d8a0eea 100644 --- a/addons/website/controllers/main.py +++ b/addons/website/controllers/main.py @@ -127,7 +127,7 @@ class Website(Home): fields = country.get_address_fields() return dict(fields=fields, states=[(st.id, st.name, st.code) for st in country.state_ids], phone_code=country.phone_code) - @http.route(['/robots.txt'], type='http', auth="public") + @http.route(['/robots.txt'], type='http', auth="public", website=True) def robots(self, **kwargs): return request.render('website.robots', {'url_root': request.httprequest.url_root}, mimetype='text/plain') diff --git a/addons/website/models/res_config_settings.py b/addons/website/models/res_config_settings.py index a502bb2fe7d..1a7d3c93508 100644 --- a/addons/website/models/res_config_settings.py +++ b/addons/website/models/res_config_settings.py @@ -159,6 +159,16 @@ class ResConfigSettings(models.TransientModel): 'res_id': False, } + def action_open_robots(self): + return { + 'name': _("Robots.txt"), + 'view_mode': 'form', + 'res_model': 'website.robots', + 'type': 'ir.actions.act_window', + "views": [[False, "form"]], + 'target': 'new', + } + def install_theme_on_current_website(self): self.website_id._force() action = self.env.ref('website.theme_install_kanban_action').read()[0] diff --git a/addons/website/models/website.py b/addons/website/models/website.py index df542be4b29..f9a6a9f4c77 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -107,6 +107,8 @@ class Website(models.Model): menu_id = fields.Many2one('website.menu', compute='_compute_menu', string='Main Menu') homepage_id = fields.Many2one('website.page', string='Homepage') + robots_txt = fields.Text('Robots.txt', translate=False, groups='website.group_website_designer') + def _default_favicon(self): img_path = get_resource_path('web', 'static/src/img/favicon.ico') with tools.file_open(img_path, 'rb') as f: diff --git a/addons/website/views/res_config_settings_views.xml b/addons/website/views/res_config_settings_views.xml index d2b313c7d71..2f64aa20627 100644 --- a/addons/website/views/res_config_settings_views.xml +++ b/addons/website/views/res_config_settings_views.xml @@ -309,6 +309,18 @@ +
+
+ Robots.txt + +
+ Tells to search engine crawlers which pages or files the crawler can or can't request from your site +
+
+
+
+

Features

diff --git a/addons/website/views/website_templates.xml b/addons/website/views/website_templates.xml index bd969fa7bd0..e94da41d733 100644 --- a/addons/website/views/website_templates.xml +++ b/addons/website/views/website_templates.xml @@ -934,6 +934,13 @@ User-agent: * Sitemap: sitemap.xml + + +############## +# custom # +############## + + diff --git a/addons/website/views/website_views.xml b/addons/website/views/website_views.xml index 6b1a732705a..fc39f9e45ec 100644 --- a/addons/website/views/website_views.xml +++ b/addons/website/views/website_views.xml @@ -46,6 +46,19 @@
+ + + website.ir_ui_view.arch_only + ir.ui.view + +
+ + + +
+
+
+ website.modal.form website diff --git a/addons/website/wizard/__init__.py b/addons/website/wizard/__init__.py index 959a5a7e215..48b16df8e4d 100644 --- a/addons/website/wizard/__init__.py +++ b/addons/website/wizard/__init__.py @@ -2,3 +2,4 @@ # Part of Odoo. See LICENSE file for full copyright and licensing details. from . import base_language_install +from . import website_robots diff --git a/addons/website/wizard/website_robots.py b/addons/website/wizard/website_robots.py new file mode 100644 index 00000000000..2bd61a5721f --- /dev/null +++ b/addons/website/wizard/website_robots.py @@ -0,0 +1,20 @@ +# -*- encoding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. +from odoo import api, fields, models + + +class WebsiteRobots(models.TransientModel): + _name = "website.robots" + _description = "Robots.txt Editor" + + content = fields.Text() + + @api.model + def default_get(self, fields): + defaults = super(WebsiteRobots, self).default_get(fields) + defaults['content'] = self.env['website'].get_current_website().robots_txt + return defaults + + def action_save(self): + self.env['website'].get_current_website().robots_txt = self.content + return {'type': 'ir.actions.act_window_close'} diff --git a/addons/website/wizard/website_robots.xml b/addons/website/wizard/website_robots.xml new file mode 100644 index 00000000000..15198cb948b --- /dev/null +++ b/addons/website/wizard/website_robots.xml @@ -0,0 +1,27 @@ + + + + + Edit Robots.txt + website.robots + +
+ + + + > Test your robots.txt with Google + +

+ Example of rule:
+ Disallow: /web/login
+ Allow: * +
+ + +
+
+ +