Skip to content

Commit

Permalink
Merge PR #607 into 10.0
Browse files Browse the repository at this point in the history
Signed-off-by sebastienbeau
  • Loading branch information
shopinvader-git-bot committed Apr 24, 2020
2 parents a266b08 + 9e0b939 commit 6aad99a
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 143 deletions.
2 changes: 1 addition & 1 deletion .isort.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ force_grid_wrap=0
combine_as_imports=True
use_parentheses=True
line_length=79
known_third_party = StringIO,cerberus,mock,odoo,openupgradelib,psycopg2,requests,setuptools,urllib2,urlparse,vcr,vcr_unittest,werkzeug
known_third_party = StringIO,cerberus,mock,odoo,odoo_test_helper,openupgradelib,psycopg2,requests,setuptools,urllib2,urlparse,vcr,vcr_unittest,werkzeug
18 changes: 5 additions & 13 deletions base_url/models/abstract_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -237,19 +237,11 @@ def _sync_urls(self):
record.set_url(record.url_key)
return records

@api.model
def create(self, value):
res = super(AbstractUrl, self).create(value)
synced = res._sync_urls()
super(AbstractUrl, synced).write({"is_urls_sync_required": False})
return res

@api.multi
def write(self, value):
res = super(AbstractUrl, self).write(value)
synced = self._sync_urls()
super(AbstractUrl, synced).write({"is_urls_sync_required": False})
return res
def _recompute_done(self, field):
super(AbstractUrl, self)._recompute_done(field)
if field.name == "is_urls_sync_required":
synced = self.exists()._sync_urls()
synced.write({"is_urls_sync_required": False})

@api.multi
def unlink(self):
Expand Down
22 changes: 16 additions & 6 deletions base_url/tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,38 @@

from odoo import api, fields, models

from .models_mixin import TestMixin

_logger = logging.getLogger(__name__)


class UrlBackendFake(models.Model, TestMixin):

class UrlBackendFake(models.Model):
_name = "url.backend.fake"
_description = "Url Backend"

name = fields.Char(required=True)


class ResPartnerAddressableFake(models.Model, TestMixin):
class ResPartner(models.Model):
_inherit = "res.partner"

binding_ids = fields.One2many("res.partner.addressable.fake", "record_id")


class ResPartnerAddressableFake(models.Model):
_name = "res.partner.addressable.fake"
_inherit = "abstract.url"
_inherits = {"res.partner": "record_id"}
_description = "Fake partner addressable"

backend_id = fields.Many2one(comodel_name="url.backend.fake")
special_code = fields.Char()

@api.multi
@api.depends("lang_id", "record_id.name")
@api.depends("lang_id", "special_code", "record_id.name")
def _compute_automatic_url_key(self):
self._generic_compute_automatic_url_key()

def _get_url_keywords(self):
res = super(ResPartnerAddressableFake, self)._get_url_keywords()
if self.special_code:
res += [self.special_code]
return res
116 changes: 0 additions & 116 deletions base_url/tests/models_mixin.py

This file was deleted.

50 changes: 43 additions & 7 deletions base_url/tests/test_abstract_url.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,25 @@
import mock
from odoo.exceptions import ValidationError
from odoo.tests import SavepointCase
from odoo_test_helper import FakeModelLoader

from .models import ResPartnerAddressableFake, UrlBackendFake


class TestAbstractUrl(SavepointCase):
class TestAbstractUrl(SavepointCase, FakeModelLoader):
@classmethod
def setUpClass(cls):
super(TestAbstractUrl, cls).setUpClass()
UrlBackendFake._test_setup_model(cls.env)
ResPartnerAddressableFake._test_setup_model(cls.env)
cls.loader = FakeModelLoader(cls.env, cls.__module__)
cls.loader.backup_registry()
from .models import (
UrlBackendFake,
ResPartner,
ResPartnerAddressableFake,
)

cls.loader.update_registry(
(UrlBackendFake, ResPartner, ResPartnerAddressableFake)
)

cls.lang = cls.env.ref("base.lang_en")
cls.UrlUrl = cls.env["url.url"]
cls.ResPartnerAddressable = cls.env["res.partner.addressable.fake"]
Expand All @@ -25,8 +34,7 @@ def setUpClass(cls):

@classmethod
def tearDownClass(cls):
ResPartnerAddressableFake._test_teardown_model(cls.env)
UrlBackendFake._test_teardown_model(cls.env)
cls.loader.restore_registry()
super(TestAbstractUrl, cls).tearDownClass()

def _get_default_partner_value(self):
Expand Down Expand Up @@ -125,3 +133,31 @@ def test_onchange_do_nothing(self):
{}, ["automatic_url_key"], {}
)
self.assertEqual(result, {"value": {}})

def test_create_from_main(self):
partner = self.env["res.partner"].create({"name": self.name})
partner.write(
{
"binding_ids": [
(
0,
0,
{
"lang_id": self.lang.id,
"url_builder": "auto",
"backend_id": self.url_backend.id,
},
)
]
}
)
self._check_url_key(partner.binding_ids, "partner-name")

def test_write_from_main(self):
my_partner = self._create_auto()
my_partner.record_id.write(
{"binding_ids": [(1, my_partner.id, {"special_code": "foo"})]}
)
self.assertEqual(2, len(my_partner.url_url_ids))
url_keys = set(my_partner.mapped("url_url_ids.url_key"))
self.assertSetEqual(url_keys, {"partner-name-foo", "partner-name"})
1 change: 1 addition & 0 deletions test-requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ requests_mock
vcrpy
vcrpy-unittest
unittest2 # For shopinvader test_controller, which inherits component
odoo-test-helper

0 comments on commit 6aad99a

Please sign in to comment.