# -*- coding: utf-8 -*- ############################################################################## # # Cybrosys Technologies Pvt. Ltd. # Copyright (C) 2017-TODAY Cybrosys Technologies(). # Author: Fasluca() # you can modify it under the terms of the GNU LESSER # GENERAL PUBLIC LICENSE (LGPL v3), Version 3. # # It is forbidden to publish, distribute, sublicense, or sell copies # of the Software or modified copies of the Software. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. # # You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE # GENERAL PUBLIC LICENSE (LGPL v3) along with this program. # If not, see . # ############################################################################## import base64 from cStringIO import StringIO from werkzeug.utils import redirect from odoo import http, tools, _ from odoo.http import request from odoo.addons.website.models.website import slug from odoo.addons.website.controllers.main import QueryURL from odoo.addons.website_event.controllers.main import WebsiteEventController class WebsiteEventControllerEx(WebsiteEventController): @http.route(['/event//register'], type='http', auth="public", website=True) def event_register(self, event, **post): if event.state == 'done': return request.redirect("/event/%s" % slug(event)) attachments = request.env['ir.attachment'].search( [('res_model', '=', 'event.event'), ('res_id', '=', event.id)], order='id') values = { 'event': event, 'main_object': event, 'range': range, 'attachments': attachments, } return request.render("website_event.event_description_full", values) @http.route(['/attachment/download'], type='http', auth='public') def download_attachment(self, attachment_id): # Check if this is a valid attachment id attachment = request.env['ir.attachment'].sudo().search_read( [('id', '=', int(attachment_id))], ["name", "datas", "file_type", "res_model", "res_id", "type", "url"] ) if attachment["type"] == "url": if attachment["url"]: return redirect(attachment["url"]) else: return request.not_found() elif attachment["datas"]: data = StringIO(base64.standard_b64decode(attachment["datas"])) return http.send_file(data, filename=attachment['name'], as_attachment=True) else: return request.not_found()