示例#1
0
文件: mixins.py 项目: WilldooIT/odoo
    def write(self, vals):
        if 'cover_properties' not in vals:
            return super().write(vals)

        cover_properties = json_safe.loads(vals['cover_properties'])
        resize_classes = cover_properties.get('resize_class', '').split()
        classes = [
            'o_half_screen_height', 'o_full_screen_height', 'cover_auto'
        ]
        if not set(resize_classes).isdisjoint(classes):
            # Updating cover properties and the given 'resize_class' set is
            # valid, normal write.
            return super().write(vals)

        # If we do not receive a valid resize_class via the cover_properties, we
        # keep the original one (prevents updates on list displays from
        # destroying resize_class).
        copy_vals = dict(vals)
        for item in self:
            old_cover_properties = json_safe.loads(item.cover_properties)
            cover_properties['resize_class'] = old_cover_properties.get(
                'resize_class', classes[0])
            copy_vals['cover_properties'] = json_safe.dumps(cover_properties)
            super(WebsiteCoverPropertiesMixin, item).write(copy_vals)
        return True
示例#2
0
    def _get_custom_rendering_context_values(self,
                                             donation_options=None,
                                             donation_descriptions=None,
                                             is_donation=False,
                                             **kwargs):
        rendering_context = super()._get_custom_rendering_context_values(
            **kwargs)
        if is_donation:
            user_sudo = request.env.user
            logged_in = not user_sudo._is_public()
            # If the user is logged in, take their partner rather than the partner set in the params.
            # This is something that we want, since security rules are based on the partner, and created
            # tokens should not be assigned to the public user. This should have no impact on the
            # transaction itself besides making reconciliation possibly more difficult (e.g. The
            # transaction and invoice partners are different).
            partner_sudo = user_sudo.partner_id
            partner_details = {}
            countries = request.env['res.country']
            if logged_in:
                partner_details = {
                    'name': partner_sudo.name,
                    'email': partner_sudo.email,
                    'country_id': partner_sudo.country_id.id,
                }

            countries = request.env['res.country'].sudo().search([])
            descriptions = request.httprequest.form.getlist(
                'donation_descriptions')

            donation_options = json_safe.loads(
                donation_options) if donation_options else {}
            donation_amounts = json_safe.loads(
                donation_options.get('donationAmounts', '[]'))

            rendering_context.update({
                'is_donation':
                True,
                'partner':
                partner_sudo,
                'transaction_route':
                '/donation/transaction/%s' %
                donation_options.get('minimumAmount', 0),
                'partner_details':
                partner_details,
                'error': {},
                'countries':
                countries,
                'donation_options':
                donation_options,
                'donation_amounts':
                donation_amounts,
                'donation_descriptions':
                descriptions,
            })
        return rendering_context
示例#3
0
文件: mixins.py 项目: WilldooIT/odoo
    def _get_background(self, height=None, width=None):
        self.ensure_one()
        properties = json_safe.loads(self.cover_properties)
        img = properties.get('background-image', "none")

        if img.startswith('url(/web/image/'):
            suffix = ""
            if height is not None:
                suffix += "&height=%s" % height
            if width is not None:
                suffix += "&width=%s" % width
            if suffix:
                suffix = '?' not in img and "?%s" % suffix or suffix
                img = img[:-1] + suffix + ')'
        return img
示例#4
0
文件: website_blog.py 项目: 0yik/odoo
 def _default_website_meta(self):
     res = super(BlogPost, self)._default_website_meta()
     res['default_opengraph']['og:description'] = res['default_twitter'][
         'twitter:description'] = self.subtitle
     res['default_opengraph']['og:type'] = 'article'
     res['default_opengraph']['article:published_time'] = self.post_date
     res['default_opengraph']['article:modified_time'] = self.write_date
     res['default_opengraph']['article:tag'] = self.tag_ids.mapped('name')
     # background-image might contain single quotes eg `url('/my/url')`
     res['default_opengraph']['og:image'] = res['default_twitter'][
         'twitter:image'] = json_scriptsafe.loads(
             self.cover_properties).get('background-image',
                                        'none')[4:-1].strip("'")
     res['default_opengraph']['og:title'] = res['default_twitter'][
         'twitter:title'] = self.name
     res['default_meta_description'] = self.subtitle
     return res
示例#5
0
    def button_confirm(self):
        if self.carrier_id.is_mondialrelay:
            if not self.mondialrelay_last_selected:
                raise ValidationError(_('Please, choose a Parcel Point'))
            data = json_safe.loads(self.mondialrelay_last_selected)
            partner_shipping = self.order_id.partner_id._mondialrelay_search_or_create(
                {
                    'id': data['id'],
                    'name': data['name'],
                    'street': data['street'],
                    'street2': data['street2'],
                    'zip': data['zip'],
                    'city': data['city'],
                    'country_code': data['country'][:2].lower(),
                })
            if partner_shipping != self.order_id.partner_shipping_id:
                self.order_id.partner_shipping_id = partner_shipping

        return super().button_confirm()