diff --git a/easy_my_coop_website_portal/controllers/main.py b/easy_my_coop_website_portal/controllers/main.py index 35737d5..ef46809 100644 --- a/easy_my_coop_website_portal/controllers/main.py +++ b/easy_my_coop_website_portal/controllers/main.py @@ -6,10 +6,11 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -from openerp import fields, models, http +from werkzeug.exceptions import Forbidden, NotFound + +from openerp import http +from openerp.exceptions import AccessError, MissingError from openerp.http import request -from openerp import tools -from openerp.tools.translate import _ from openerp.addons.website_portal_v10.controllers.main import WebsiteAccount @@ -105,15 +106,53 @@ class CooperatorWebsiteAccount(WebsiteAccount): values ) - @http.route(['/my/cooperator_certificat/send'], + @http.route(['/my/release_capital_request/pdf/'], type='http', auth="user", website=True) - def send_cooperator_certificat(self, **kw): + def get_release_capital_request(self, oid=-1, **kw): + """Render the pdf of the given release capital request""" + # Get the release capital request and raise an error if the user + # is not allowed to access to it or if the object is not found. partner = request.env.user.partner_id - certificat_email_template = request.env.ref( - 'easy_my_coop.email_template_certificat_increase', False - ).sudo() - if certificat_email_template: - certificat_email_template.send_mail( - partner.commercial_partner_id.id - ) - return request.redirect(kw['nexturl']) + invoice_mgr = request.env['account.invoice'] + capital_request = invoice_mgr.sudo().browse(oid) + try: + if capital_request.partner_id != partner: + raise Forbidden() + except AccessError: + raise Forbidden() + except MissingError: + raise NotFound() + # Get the pdf + report_mgr = request.env['report'].sudo() + pdf = report_mgr.get_pdf( + capital_request.ids, + 'easy_my_coop.theme_invoice_G002' + ) + filename = "Release Capital Request - {oid}".format( + oid=capital_request.id + ) + return self._render_pdf(pdf, filename) + + @http.route(['/my/cooperator_certificate/pdf'], + type='http', auth="user", website=True) + def get_cooperator_certificat(self, **kw): + """Render the cooperator certificate pdf of the current user""" + partner = request.env.user.partner_id + report_mgr = request.env['report'].sudo() + pdf = report_mgr.get_pdf( + partner.ids, + 'easy_my_coop.cooperator_certificat_G001' + ) + filename = "Cooperator Certificate - {name}".format( + name=partner.name + ) + return self._render_pdf(pdf, filename) + + def _render_pdf(self, pdf, filename): + """Render a http response for a pdf""" + pdfhttpheaders = [ + ('Content-Disposition', 'inline; filename="%s.pdf"' % filename), + ('Content-Type', 'application/pdf'), + ('Content-Length', len(pdf)) + ] + return request.make_response(pdf, headers=pdfhttpheaders) diff --git a/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml b/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml index 655c5e3..bb01ab9 100644 --- a/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml +++ b/easy_my_coop_website_portal/views/easy_my_coop_website_portal_templates.xml @@ -86,8 +86,7 @@

- + Cooperator Certificate

@@ -160,7 +159,7 @@ -