def theme_change(self, theme_id=False, **kwargs): imd = request.registry['ir.model.data'] Views = request.registry['ir.ui.view'] _, theme_template_id = imd.get_object_reference( request.cr, request.uid, 'website', 'theme') views = Views.search(request.cr, request.uid, [ ('inherit_id', '=', theme_template_id), ], context=request.context) Views.write(request.cr, request.uid, views, { 'active': False, }, context=dict(request.context or {}, active_test=True)) if theme_id: module, xml_id = theme_id.split('.') _, view_id = imd.get_object_reference(request.cr, request.uid, module, xml_id) Views.write(request.cr, request.uid, [view_id], {'active': True}, context=dict(request.context or {}, active_test=True)) return request.render('website.themes', {'theme_changed': True})
def registration_payment_validate(self, **post): """ Method that should be called by the server when receiving an update for a transaction. """ uid = request.env.ref("muskathlon.user_muskathlon_portal").id try: tx = ( request.env["payment.transaction"] .sudo(uid) ._ogone_form_get_tx_from_data(post) ) except ValidationError: tx = None if not tx or not tx.registration_id: return request.render("muskathlon.registration_failure") event = tx.registration_id.compassion_event_id if tx.state == "done" and tx.registration_id: # Confirm the registration tx.registration_id.confirm_registration() post.update({"event": event}) return self.compassion_payment_validate( tx, "muskathlon.new_registration_successful", "muskathlon.registration_failure", **post )
def my_muskathlon_details(self, registration, **kwargs): reports = request.env["muskathlon.report"].search( [ ("user_id", "=", request.env.user.partner_id.id), ("event_id", "=", registration.compassion_event_id.id), ] ) return request.render("muskathlon.my_details", {"reports": reports})
def muskathlon_registration_successful(self, registration_id, **kwargs): limit_date = datetime.now() - relativedelta(days=1) registration = request.env["event.registration"].sudo().browse(registration_id) if not registration.exists() or registration.create_date < limit_date: return request.redirect("/events") values = { "registration": registration, "event": registration.compassion_event_id, } return request.render("muskathlon.new_registration_successful_modal", values)
def save_ambassador_picture(self, **post): user = request.env.user partner = user.partner_id return_view = "muskathlon.custom_portal_my_home" picture_post = post.get("picture_1") if picture_post: return_view = "muskathlon.picture_1_formatted" image_value = b64encode(picture_post.stream.read()) if not image_value: return "no image uploaded" partner.write({"image": image_value}) return request.render(return_view, self._prepare_portal_layout_values())
def website_info(self): try: request.website.get_template('website.info').name except Exception as e: return request.registry['ir.http']._handle_exception(e, 404) irm = request.env()['ir.module.module'].sudo() apps = irm.search([('state', '=', 'installed'), ('application', '=', True)]) modules = irm.search([('state', '=', 'installed'), ('application', '=', False)]) values = { 'apps': apps, 'modules': modules, 'version': openerp.service.common.exp_version() } return request.render('website.info', values)
def page(self, page, **opt): values = { 'path': page, } # /page/website.XXX --> /page/XXX if page.startswith('website.'): return request.redirect('/page/' + page[8:], code=301) elif '.' not in page: page = 'website.%s' % page try: request.website.get_template(page) except ValueError as e: # page not found if request.website.is_publisher(): page = 'website.page_404' else: return request.registry['ir.http']._handle_exception(e, 404) return request.render(page, values)
def muskathlon_order_material(self, registration, form_id=None, **kw): # Load forms kw["form_model_key"] = "cms.form.order.material" kw["registration"] = registration material_form = self.get_form("crm.lead", **kw) if form_id is None or form_id == "order_material": material_form.form_process() kw["form_model_key"] = "cms.form.order.muskathlon.childpack" childpack_form = self.get_form("crm.lead", **kw) if form_id is None or form_id == "muskathlon_childpack": childpack_form.form_process() flyer = "/muskathlon/static/src/img/muskathlon_parrain_example_" flyer += request.env.lang[:2] + ".jpg" values = { "registration": registration, "material_form": material_form, "childpack_form": childpack_form, "flyer_image": flyer, } return request.render("muskathlon.my_muskathlon_order_material", values)
def handle_htsql(self, path, environ, start_response): query_string = environ.get('QUERY_STRING', '') variables = {} for item in query_string.split('&'): if '=' in item: key, value = item.split('=', 1) key = urllib.parse.unquote_plus(key) value = urllib.parse.unquote_plus(value) value = urllib.parse.quote("'%s'" % value.replace("'", "''")) variables[key] = value stream = open(path, 'rb') uri = stream.read() stream.close() uri = self.variable.sub( (lambda m: variables.get(m.group()[1:], "null()")), uri) with self.htsql: request = Request(uri) try: status, headers, body = request.render(environ) except HTTPError as exc: return exc(environ, start_response) start_response(status, headers) return body
def account(self, form_id=None, **kw): """ Inject data for forms. """ values = self._prepare_portal_layout_values() partner = values["partner"] advocate_details_id = partner.advocate_details_id.id registration = partner.registration_ids[:1] form_success = False # Load forms kw["form_model_key"] = "cms.form.muskathlon.trip.information" trip_info_form = self.get_form("event.registration", registration.id, **kw) if form_id is None or form_id == trip_info_form.form_id: trip_info_form.form_process() form_success = trip_info_form.form_success kw["form_model_key"] = "cms.form.partner.coordinates" coordinates_form = self.get_form("res.partner", partner.id, **kw) if form_id is None or form_id == coordinates_form.form_id: coordinates_form.form_process() form_success = coordinates_form.form_success kw["form_model_key"] = "cms.form.advocate.details" about_me_form = self.get_form("advocate.details", advocate_details_id, **kw) if form_id is None or form_id == about_me_form.form_id: about_me_form.form_process() form_success = about_me_form.form_success kw["form_model_key"] = "cms.form.muskathlon.large.picture" large_picture_form = self.get_form( "advocate.details", advocate_details_id, **kw ) if form_id is None or form_id == large_picture_form.form_id: large_picture_form.form_process() form_success = large_picture_form.form_success kw["form_model_key"] = "cms.form.muskathlon.passport" passport_form = self.get_form("event.registration", registration.id, **kw) if form_id is None or form_id == passport_form.form_id: passport_form.form_process() form_success = passport_form.form_success kw["form_model_key"] = "cms.form.muskathlon.flight.details" kw["registration_id"] = registration.id flight_type = kw.get("flight_type") kw["flight_type"] = "outbound" flight = registration.flight_ids.filtered(lambda f: f.flight_type == "outbound") outbound_flight_form = self.get_form("event.flight", flight.id, **kw) if form_id is None or ( form_id == outbound_flight_form.form_id and (not flight_type or flight_type == "outbound") ): outbound_flight_form.form_process(**kw) form_success = outbound_flight_form.form_success kw["flight_type"] = "return" flight = registration.flight_ids.filtered(lambda f: f.flight_type == "return") return_flight_form = self.get_form("event.flight", flight.id, **kw) if form_id is None or ( form_id == return_flight_form.form_id and (not flight_type or flight_type == "return") ): return_flight_form.form_process(**kw) form_success = return_flight_form.form_success values.update( { "trip_info_form": trip_info_form, "coordinates_form": coordinates_form, "about_me_form": about_me_form, "large_picture_form": large_picture_form, "passport_form": passport_form, "outbound_flight_form": outbound_flight_form, "return_flight_form": return_flight_form, } ) values.update(kw) if "registrations" not in values.keys(): registrations_array = [] for reg in partner.registration_ids: registrations_array.append(reg) values['registrations'] = registrations_array # This fixes an issue that forms fail after first submission if form_success: result = request.redirect("/my/home") else: result = request.render("muskathlon.custom_portal_my_home", values) return self._form_redirect(result, full_page=True)
def robots(self): return request.render('website.robots', {'url_root': request.httprequest.url_root}, mimetype='text/plain')