From ea8da9efc7fb083161d8bd1cd1fd306dd0285fb4 Mon Sep 17 00:00:00 2001 From: Paul Catinean Date: Tue, 4 Oct 2016 17:50:58 +0300 Subject: [PATCH 1/2] [WIP] Adding a section to manage media in the frontend --- website_cms/controllers/form.py | 57 +++++++++++++++++++++++++++++++++ website_cms/models/website.py | 21 ++++++++++++ website_cms/templates/form.xml | 43 +++++++++++++++++++++++++ 3 files changed, 121 insertions(+) diff --git a/website_cms/controllers/form.py b/website_cms/controllers/form.py index 2985bdb0..5c85c21d 100644 --- a/website_cms/controllers/form.py +++ b/website_cms/controllers/form.py @@ -14,6 +14,7 @@ class PageFormMixin(ContextAwareMixin): + """CMS page Form controller.""" form_name = '' @@ -132,6 +133,7 @@ def after_post_action(self, parent=None, main_object=None, **kw): class CreatePage(http.Controller, PageFormMixin): + """CMS page create controller.""" form_name = 'add-page' @@ -196,6 +198,7 @@ def after_post_action(self, parent=None, main_object=None, **kw): class EditPage(http.Controller, PageFormMixin): + """CMS page edit controller.""" form_name = 'edit-page' @@ -246,3 +249,57 @@ def after_post_action(self, parent=None, main_object=None, **kw): u'in many views (like listing or homepage).'), } self.add_status_message(msg) + + +class ManageMedia(http.Controller, PageFormMixin): + + """CMS media manage controller.""" + + form_name = 'manage-media' + form_title = _('Manage media') + form_mode = 'media' + template = 'website_cms.page_media' + status_message_success = { + 'type': 'media', + 'title': 'Media:', + 'msg': _(u'Media updated.'), + } + + def load_defaults(self, main_object, **kw): + """Override to preload values.""" + defaults = {} + if main_object: + defaults['parent_id'] = main_object.id + defaults['form_action'] = \ + main_object.website_url + '/' + self.form_name + for fname in ('type_id', 'view_id'): + fvalue = getattr(main_object, 'sub_page_' + fname) + defaults[fname] = fvalue and fvalue.id or False + defaults[ + 'media_categories'] = request.website.get_media_categories() + defaults['media'] = request.website.get_media( + kw.get('media_categ') and kw.get('media_categ').id + ) + return defaults + + @http.route([ + '/cms/manage-media', + '/cms//manage-media/', + '/cms//manage-media/' + '', + '/cms///manage-media/', + '/cms///manage-media/' + '', + ], type='http', auth='user', methods=['GET', 'POST'], website=True) + def manage(self, parent=None, **kw): + """Handle page add view and form submit.""" + if request.httprequest.method == 'GET': + return self.render(parent, **kw) + + elif request.httprequest.method == 'POST': + self.before_post_action(parent=parent, **kw) + # handle form submission + values = self.load_defaults(parent, **kw) + # TODO: handle errors + _values, errors = self.extract_values(request, parent, **kw) + values.update(_values) diff --git a/website_cms/models/website.py b/website_cms/models/website.py index a31ddcb6..499fc1c4 100644 --- a/website_cms/models/website.py +++ b/website_cms/models/website.py @@ -8,6 +8,7 @@ from openerp.addons.web.http import request from openerp.addons.website.models.website import unslug + from openerp.addons.website_cms.utils import AttrDict import urlparse @@ -147,6 +148,17 @@ def get_media_categories(self, active=True): return self.env['cms.media.category'].search( [('active', '=', active)]) + @api.model + def get_media(self, category_id=None, published=None): + search_args = [] + + if category_id: + search_args.append(('category_id', '=', category_id)) + if published: + search_args.append(('website_published', '=', True)) + + return self.env['cms.media'].search(search_args) + def get_alternate_languages(self, cr, uid, ids, req=None, context=None, main_object=None): @@ -241,3 +253,12 @@ def cms_can_edit(self, main_object=None): is_owner = main_object.create_uid.id == self.env.user.id return is_owner or is_manager return False + + def cms_media_categ_links(self, main_object=None, category=None): + """Retrieve media cms page links""" + if self.is_cms_page(main_object): + url = '%s/manage-media' % main_object.website_url + if category: + url = url + '/%s' % category.public_slug() + return url + return False diff --git a/website_cms/templates/form.xml b/website_cms/templates/form.xml index 81bfd7bb..15d6de67 100644 --- a/website_cms/templates/form.xml +++ b/website_cms/templates/form.xml @@ -104,6 +104,17 @@ We load each field explicitely here for now. +
+ + + + + +
@@ -127,4 +138,36 @@ We load each field explicitely here for now. + + From 209073694b57bc7bbc5e23f225c667e63bede80b Mon Sep 17 00:00:00 2001 From: Paul Catinean Date: Tue, 11 Oct 2016 20:41:20 +0300 Subject: [PATCH 2/2] [FIX] PR Fixes --- website_cms/controllers/form.py | 7 ------- website_cms/templates/form.xml | 8 +++++++- 2 files changed, 7 insertions(+), 8 deletions(-) diff --git a/website_cms/controllers/form.py b/website_cms/controllers/form.py index 5c85c21d..bfd5b9cf 100644 --- a/website_cms/controllers/form.py +++ b/website_cms/controllers/form.py @@ -14,7 +14,6 @@ class PageFormMixin(ContextAwareMixin): - """CMS page Form controller.""" form_name = '' @@ -133,7 +132,6 @@ def after_post_action(self, parent=None, main_object=None, **kw): class CreatePage(http.Controller, PageFormMixin): - """CMS page create controller.""" form_name = 'add-page' @@ -198,7 +196,6 @@ def after_post_action(self, parent=None, main_object=None, **kw): class EditPage(http.Controller, PageFormMixin): - """CMS page edit controller.""" form_name = 'edit-page' @@ -252,7 +249,6 @@ def after_post_action(self, parent=None, main_object=None, **kw): class ManageMedia(http.Controller, PageFormMixin): - """CMS media manage controller.""" form_name = 'manage-media' @@ -272,9 +268,6 @@ def load_defaults(self, main_object, **kw): defaults['parent_id'] = main_object.id defaults['form_action'] = \ main_object.website_url + '/' + self.form_name - for fname in ('type_id', 'view_id'): - fvalue = getattr(main_object, 'sub_page_' + fname) - defaults[fname] = fvalue and fvalue.id or False defaults[ 'media_categories'] = request.website.get_media_categories() defaults['media'] = request.website.get_media( diff --git a/website_cms/templates/form.xml b/website_cms/templates/form.xml index 15d6de67..6622f877 100644 --- a/website_cms/templates/form.xml +++ b/website_cms/templates/form.xml @@ -155,7 +155,13 @@ We load each field explicitely here for now.