예제 #1
0
파일: main.py 프로젝트: amhosni/odoo3
    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})
예제 #2
0
    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
        )
예제 #3
0
 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})
예제 #4
0
    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)
예제 #5
0
 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())
예제 #6
0
파일: main.py 프로젝트: amhosni/odoo3
 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)
예제 #7
0
파일: main.py 프로젝트: amhosni/odoo3
    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)
예제 #8
0
    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)
예제 #9
0
 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
예제 #10
0
    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)
예제 #11
0
파일: main.py 프로젝트: amhosni/odoo3
 def robots(self):
     return request.render('website.robots',
                           {'url_root': request.httprequest.url_root},
                           mimetype='text/plain')