From 763260d3cc91c2ea7c42a45482ea2e7653b3c634 Mon Sep 17 00:00:00 2001 From: noah <234082230@qq.com> Date: Fri, 19 Aug 2016 14:35:47 +0800 Subject: [PATCH 1/4] [ADD] connector_dns --- connector_dns/__init__.py | 8 ++ connector_dns/__openerp__.py | 15 +++ connector_dns/backend.py | 6 + connector_dns/connector.py | 57 ++++++++ connector_dns/dns.py | 69 ++++++++++ connector_dns/dns_menu.xml | 15 +++ connector_dns/dns_view.xml | 156 ++++++++++++++++++++++ connector_dns/readme.rst | 59 ++++++++ connector_dns/tests/__init__.py | 4 + connector_dns/tests/test_backend.py | 28 ++++ connector_dns/unit/__init__.py | 6 + connector_dns/unit/backend_adapter.py | 98 ++++++++++++++ connector_dns/unit/binder.py | 84 ++++++++++++ connector_dns/unit/export_synchronizer.py | 57 ++++++++ 14 files changed, 662 insertions(+) create mode 100755 connector_dns/__init__.py create mode 100755 connector_dns/__openerp__.py create mode 100755 connector_dns/backend.py create mode 100755 connector_dns/connector.py create mode 100755 connector_dns/dns.py create mode 100755 connector_dns/dns_menu.xml create mode 100755 connector_dns/dns_view.xml create mode 100644 connector_dns/readme.rst create mode 100644 connector_dns/tests/__init__.py create mode 100644 connector_dns/tests/test_backend.py create mode 100755 connector_dns/unit/__init__.py create mode 100755 connector_dns/unit/backend_adapter.py create mode 100755 connector_dns/unit/binder.py create mode 100755 connector_dns/unit/export_synchronizer.py diff --git a/connector_dns/__init__.py b/connector_dns/__init__.py new file mode 100755 index 0000000..0e7ce5f --- /dev/null +++ b/connector_dns/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import backend +from . import connector +from . import unit +from . import tests +from . import dns diff --git a/connector_dns/__openerp__.py b/connector_dns/__openerp__.py new file mode 100755 index 0000000..1304d3f --- /dev/null +++ b/connector_dns/__openerp__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{'name': 'DNS connector', + 'version': '0.1', + 'category': 'Connector', + 'depends': ['connector'], + 'author': 'Elico Corp,Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'website': 'https://www.elico-corp.com', + 'images': [], + 'demo': [], + 'data': ['dns_view.xml', 'dns_menu.xml'], + 'installable': True, + 'application': False} diff --git a/connector_dns/backend.py b/connector_dns/backend.py new file mode 100755 index 0000000..2e027b7 --- /dev/null +++ b/connector_dns/backend.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import openerp.addons.connector.backend as backend + +dns = backend.Backend('dns') diff --git a/connector_dns/connector.py b/connector_dns/connector.py new file mode 100755 index 0000000..ab4d15b --- /dev/null +++ b/connector_dns/connector.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from openerp import models, fields +from openerp.addons.connector.connector import (Environment, + install_in_connector) +from openerp.addons.connector.checkpoint import checkpoint + +install_in_connector() + + +def get_environment(session, model_name, backend_id): + """ Create an environment to work with. """ + backend_record = session.browse('dns.backend', backend_id) + env = Environment(backend_record, session, model_name) + return env + + +class DNSBinding(models.Model): + """ Abstract Model for the Bindigs. + All the models used as bindings between dnspod and OpenERP + (``dnspod.res.partner``, ``dnspod.product.product``, ...) should + ``_inherit`` it. + """ + _name = 'dns.binding' + _inherit = 'external.binding' + _description = 'dns Binding (abstract)' + + backend_id = fields.Many2one( + 'dns.backend', + String='DNS Backend', + required=True, + ondelete='restrict') + # fields.char because 0 is a valid dnspod ID + dns_id = fields.Char('ID on other software') + # state of the record synchronization with dnspod + state = fields.Selection( + [('draft', 'Draft'), ('done', 'Done'), + ('exception', 'Exception')], 'State', + default="draft", + help='Done when succeed otherwise Exception') + + +def add_checkpoint(session, model_name, record_id, backend_id): + """ Add a row in the model ``connector.checkpoint`` for a record, + meaning it has to be reviewed by a user. + :param session: current session + :type session: :class:`openerp.addons.connector.session.ConnectorSession` + :param model_name: name of the model of the record to be reviewed + :type model_name: str + :param record_id: ID of the record to be reviewed + :type record_id: int + :param backend_id: ID of the dnspod Backend + :type backend_id: int + """ + return checkpoint.add_checkpoint(session, model_name, record_id, + 'dns.backend', backend_id) diff --git a/connector_dns/dns.py b/connector_dns/dns.py new file mode 100755 index 0000000..fa6e79d --- /dev/null +++ b/connector_dns/dns.py @@ -0,0 +1,69 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from openerp import models, fields, api + + +class DNSBackend(models.Model): + _name = 'dns.backend' + _inherit = 'connector.backend' + _backend_type = 'dns' + + def _select_version(self): + return [] + + login = fields.Char('Login', help="Provider's login.", required=True) + password = fields.Char('Password', help="Provider's password.", + required=True) + state = fields.Selection( + [('draft', 'Draft'), ('done', 'Done'), + ('exception', 'Exception')], 'State', default="draft", + help='"Confirmed" when the domain has been succesfully created.') + version = fields.Selection( + '_select_version', string='Service Provider', + help='DNS service provider', + required=True) + + @api.multi + def name_get(self): + res = [] + for backend in self: + res.append((backend.id, '%s (%s)' % (backend.name, backend.login))) + return res + + +class DNSDomain(models.Model): + _name = 'dns.domain' + _inherit = 'dns.binding' + + name = fields.Char('Name', required=True, + help='Domain name without "www",such as"dnspod.cn"') + record_ids = fields.One2many('dns.record', 'domain_id', + String='Subdomains') + + +class DNSRecord(models.Model): + _name = 'dns.record' + _inherit = 'dns.binding' + + def _line_select_version(self): + return [] + + def _type_select_version(self): + return [] + + name = fields.Char('Sub domain', help="host record,such as 'www'", + required=True) + domain_id = fields.Many2one( + 'dns.domain', string="Domain", domain="[('state','=','done')]", + ondelete='cascade', help="Domain which has already confirmed") + type = fields.Selection('_type_select_version', string='Record Type') + line = fields.Selection('_line_select_version', string='Record Line') + value = fields.Text('Value', help="such as IP:200.200.200.200", + required=True) + mx_priority = fields.Integer(string='MX priority', help="scope:1-20", + default=1) + ttl = fields.Integer('TTL', default=600, help="scope:1-604800", + required=True) + backend_id = fields.Many2one('dns.backend', related='domain_id.backend_id', + store=True) diff --git a/connector_dns/dns_menu.xml b/connector_dns/dns_menu.xml new file mode 100755 index 0000000..e777383 --- /dev/null +++ b/connector_dns/dns_menu.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + diff --git a/connector_dns/dns_view.xml b/connector_dns/dns_view.xml new file mode 100755 index 0000000..8914b6e --- /dev/null +++ b/connector_dns/dns_view.xml @@ -0,0 +1,156 @@ + + + + + + DNS Backend + dns.backend + ir.actions.act_window + form + tree,form + + + + DNS Backend form + dns.backend + + + + + + + + + DNS Backend form + dns.backend + +
+
+
+ +
+
+ + + + + +
+
+
+
+ + + + DNS Domain Action + dns.domain + form + tree,form + + + + DNS domain tree + dns.domain + + + + + + + + + + + DNS domain form + dns.domain + +
+
+
+ +
+
+ + + +
+
+
+
+ + + + + DNS Record Action + dns.record + form + tree,form + + + + DNS Record tree + dns.record + + + + + + + + + + + + + + + + DNS Record form + dns.record + +
+
+ +
+ +
+
+ + + + + + + + + +
+
+
+
+
+
diff --git a/connector_dns/readme.rst b/connector_dns/readme.rst new file mode 100644 index 0000000..f74a1aa --- /dev/null +++ b/connector_dns/readme.rst @@ -0,0 +1,59 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :alt: License + +Connector Dns +===================== + +This module aims to allows to manage your DNS domain through Odoo. + + +Installation +============ + +To install this module, you need to: + + * have basic modules installed (connector) + +Configuration +============= + +To configure this module, you need to: + + * No specific configuration needed. + +Usage +===== + + +For further information, please visit: + + * https://www.odoo.com/forum/help-1 + +Known issues / Roadmap +====================== + + +Credits +======= + + +Contributors +------------ + +* Liu Lixia +* Augustin Cisterne-Kaas + +Maintainer +---------- + +.. image:: http://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: http://odoo-community.org + +This module is maintained by the OCA. + +OCA, or the Odoo Community Association, is a nonprofit organization + whose mission is to support the collaborative development of Odoo features + and promote its widespread use. + +To contribute to this module, please visit http://odoo-community.org. \ No newline at end of file diff --git a/connector_dns/tests/__init__.py b/connector_dns/tests/__init__.py new file mode 100644 index 0000000..1ab3625 --- /dev/null +++ b/connector_dns/tests/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import test_backend diff --git a/connector_dns/tests/test_backend.py b/connector_dns/tests/test_backend.py new file mode 100644 index 0000000..b3f1444 --- /dev/null +++ b/connector_dns/tests/test_backend.py @@ -0,0 +1,28 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import openerp.tests.common as common +from openerp.addons.connector.backend import Backend + + +class TestBackend(common.TransactionCase): + """ + test generic Backend + """ + + def setUp(self): + super(TestBackend, self).setUp() + self.service = "dns" + self.version = "1.7" + + def tearDown(self): + super(TestBackend, self).tearDown() + + def test_dnspod(self): + dnspod = Backend(self.service) + self.assertEqual(dnspod.service, self.service) + + def test_child_dnspod(self): + dnspod = Backend(self.service) + child_dnspod = Backend(parent=dnspod, version=self.service) + self.assertEqual(child_dnspod.service, dnspod.service) diff --git a/connector_dns/unit/__init__.py b/connector_dns/unit/__init__.py new file mode 100755 index 0000000..67ff821 --- /dev/null +++ b/connector_dns/unit/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from . import backend_adapter +from . import binder +from . import export_synchronizer diff --git a/connector_dns/unit/backend_adapter.py b/connector_dns/unit/backend_adapter.py new file mode 100755 index 0000000..ccb6b43 --- /dev/null +++ b/connector_dns/unit/backend_adapter.py @@ -0,0 +1,98 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging +from openerp.addons.connector.unit.backend_adapter import CRUDAdapter + +_logger = logging.getLogger(__name__) + + +recorder = {} + + +def call_to_key(method, arguments): + """ Used to 'freeze' the method and arguments of a call to DNS + so they can be hashable; they will be stored in a dict. + + Used in both the recorder and the tests. + """ + def freeze(arg): + if isinstance(arg, dict): + items = dict((key, freeze(value)) for key, value + in arg.iteritems()) + return frozenset(items.iteritems()) + elif isinstance(arg, list): + return tuple([freeze(item) for item in arg]) + else: + return arg + + new_args = [] + for arg in arguments: + new_args.append(freeze(arg)) + return (method, tuple(new_args)) + + +def record(method, arguments, result): + """ Utility function which can be used to record test data + during synchronisations. Call it from DNSAdapter._call + + Then ``output_recorder`` can be used to write the data recorded + to a file. + """ + recorder[call_to_key(method, arguments)] = result + + +def output_recorder(filename): + import pprint + with open(filename, 'w') as f: + pprint.pprint(recorder, f) + _logger.debug('recorder written to file %s', filename) + + +class DNSLocation(object): + + def __init__(self, login, password): + self.login = login + self.password = password + + +class DNSAdapter(CRUDAdapter): + """ External Records Adapter for DNS """ + + def __init__(self, environment): + """ + + :param environment: current environment (backend, session, ...) + :type environment: :py:class:`connector.connector.Environment` + """ + super(DNSAdapter, self).__init__(environment) + self.DNS = DNSLocation( + self.backend_record.login, self.backend_record.password) + + def search(self, filters=None): + """ Search records according to some criterias + and returns a list of ids """ + raise NotImplementedError + + def read(self, id, attributes=None): + """ Returns the information of a record """ + raise NotImplementedError + + def search_read(self, filters=None): + """ Search records according to some criterias + and returns their information""" + raise NotImplementedError + + def create(self, data): + raise NotImplementedError + + def write(self, data): + """ Update records on the external system """ + raise NotImplementedError + + def delete(self, data): + """ Delete a record on the external system """ + raise NotImplementedError + + def _call(self, action, arguments): + raise NotImplementedError diff --git a/connector_dns/unit/binder.py b/connector_dns/unit/binder.py new file mode 100755 index 0000000..37eb344 --- /dev/null +++ b/connector_dns/unit/binder.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from datetime import datetime +from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT +from openerp.addons.connector.connector import Binder +from ..backend import dns + + +class DNSPodBinder(Binder): + """ Generic Binder for DNSPod """ + + +@dns +class DNSPodModelBinder(DNSPodBinder): + """ + Bindings are done directly on the binding model. + + Binding models are models called ``dns.{normal_model}``, + like ``dns.record`` or ``dns.domain``. + They are ``_inherits`` of the normal models and contains + the DNS ID, the ID of the DNS Backend and the additional + fields belonging to the DNS instance. + """ + _model_name = [ + 'dns.record', + 'dns.domain' + ] + + def to_openerp(self, external_id, unwrap=False): + """ Give the OpenERP ID for an external ID + + :param external_id: external ID for which we want the OpenERP ID + :param unwrap: if True, returns the openerp_id of the dns_xx record, + else return the id (binding id) of that record + :return: a record ID, depending on the value of unwrap, + or None if the external_id is not mapped + :rtype: int + """ + binding_ids = self.session.search( + self.model._name, + [('dns_id', '=', str(external_id)), + ('backend_id', '=', self.backend_record.id)]) + if not binding_ids: + return None + assert len(binding_ids) == 1, "Several records found: %s" % binding_ids + binding_id = binding_ids[0] + if unwrap: + return self.session.read(self.model._name, + binding_id, + ['openerp_id'])['openerp_id'][0] + else: + return binding_id + + def to_backend(self, binding_id): + """ Give the external ID for an OpenERP ID + + :param binding_id: OpenERP ID for which we want the external id + :return: backend identifier of the record + """ + dns_record = self.session.read( + self.model._name, binding_id, ['dns_id']) + assert dns_record + return dns_record['dns_id'] + + def bind(self, external_id, binding_id): + """ Create the link between an external ID and an OpenERP ID and + update the last synchronization date. + + :param external_id: External ID to bind + :param binding_id: OpenERP ID to bind + :type binding_id: int + """ + # avoid to trigger the export when we modify the `dns_id` + model = self.model.with_context(connector_no_export=True) + binding = model.browse(binding_id) + now_fmt = datetime.now().strftime(DEFAULT_SERVER_DATETIME_FORMAT) + if external_id: + state = 'done' + else: + state = 'exception' + binding.write({'dns_id': str(external_id), + 'state': state, + 'sync_date': now_fmt}) diff --git a/connector_dns/unit/export_synchronizer.py b/connector_dns/unit/export_synchronizer.py new file mode 100755 index 0000000..e1c4d15 --- /dev/null +++ b/connector_dns/unit/export_synchronizer.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Copyright +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +import logging +from openerp.addons.connector.unit.synchronizer import ExportSynchronizer + + +_logger = logging.getLogger(__name__) + + +""" + +Exporters for DNS. + +In addition to its export job, an exporter has to: + +* check in DNS if the record has been updated more recently than the + last sync date and if yes, delay an import +* call the ``bind`` method of the binder to update the last sync date + +""" + + +class DNSBaseExporter(ExportSynchronizer): + + """ Base exporter for DNS """ + + def __init__(self, environment): + """ + :param environment: current environment (backend, session, ...) + :type environment: :py:class:`connector.connector.Environment` + """ + super(DNSBaseExporter, self).__init__(environment) + self.binding_id = None + self.external_id = None + + def _get_openerp_data(self): + """ Return the raw OpenERP data for ``self.binding_id`` """ + return self.session.browse(self.model._name, self.binding_id) + + def run(self, binding_id, *args, **kwargs): + """ Run the synchronization + + :param binding_id: identifier of the binding record to export + """ + self.binding_id = binding_id + self.binding_record = self._get_openerp_data() + + self.external_id = self.binder.to_backend(self.binding_id) + result = self._run(*args, **kwargs) + + self.binder.bind(self.external_id, self.binding_id) + return result + + def _run(self): + """ Flow of the synchronization, implemented in inherited classes""" + raise NotImplementedError From 21d125552739aab16512eb9e36440f09538b5670 Mon Sep 17 00:00:00 2001 From: noah <234082230@qq.com> Date: Fri, 19 Aug 2016 15:58:50 +0800 Subject: [PATCH 2/4] [IMP] readme.rst, copyright --- connector_dns/{readme.rst => README.rst} | 7 ++++--- connector_dns/__init__.py | 2 +- connector_dns/__openerp__.py | 2 +- connector_dns/backend.py | 2 +- connector_dns/connector.py | 2 +- connector_dns/dns.py | 2 +- connector_dns/tests/__init__.py | 2 +- connector_dns/tests/test_backend.py | 2 +- connector_dns/unit/__init__.py | 2 +- connector_dns/unit/backend_adapter.py | 2 +- connector_dns/unit/binder.py | 2 +- connector_dns/unit/export_synchronizer.py | 2 +- 12 files changed, 15 insertions(+), 14 deletions(-) rename connector_dns/{readme.rst => README.rst} (90%) diff --git a/connector_dns/readme.rst b/connector_dns/README.rst similarity index 90% rename from connector_dns/readme.rst rename to connector_dns/README.rst index f74a1aa..81acd59 100644 --- a/connector_dns/readme.rst +++ b/connector_dns/README.rst @@ -1,12 +1,12 @@ .. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg :alt: License +============= Connector Dns -===================== +============= This module aims to allows to manage your DNS domain through Odoo. - Installation ============ @@ -36,10 +36,11 @@ Known issues / Roadmap Credits ======= - Contributors ------------ +* Eric Caudal +* Noah Wang * Liu Lixia * Augustin Cisterne-Kaas diff --git a/connector_dns/__init__.py b/connector_dns/__init__.py index 0e7ce5f..2a43bd6 100755 --- a/connector_dns/__init__.py +++ b/connector_dns/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import backend from . import connector diff --git a/connector_dns/__openerp__.py b/connector_dns/__openerp__.py index 1304d3f..7f61a83 100755 --- a/connector_dns/__openerp__.py +++ b/connector_dns/__openerp__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). {'name': 'DNS connector', 'version': '0.1', diff --git a/connector_dns/backend.py b/connector_dns/backend.py index 2e027b7..76c3868 100755 --- a/connector_dns/backend.py +++ b/connector_dns/backend.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import openerp.addons.connector.backend as backend diff --git a/connector_dns/connector.py b/connector_dns/connector.py index ab4d15b..5d33eba 100755 --- a/connector_dns/connector.py +++ b/connector_dns/connector.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from openerp import models, fields from openerp.addons.connector.connector import (Environment, diff --git a/connector_dns/dns.py b/connector_dns/dns.py index fa6e79d..21559d9 100755 --- a/connector_dns/dns.py +++ b/connector_dns/dns.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from openerp import models, fields, api diff --git a/connector_dns/tests/__init__.py b/connector_dns/tests/__init__.py index 1ab3625..582a76b 100644 --- a/connector_dns/tests/__init__.py +++ b/connector_dns/tests/__init__.py @@ -1,4 +1,4 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import test_backend diff --git a/connector_dns/tests/test_backend.py b/connector_dns/tests/test_backend.py index b3f1444..fa01f16 100644 --- a/connector_dns/tests/test_backend.py +++ b/connector_dns/tests/test_backend.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import openerp.tests.common as common from openerp.addons.connector.backend import Backend diff --git a/connector_dns/unit/__init__.py b/connector_dns/unit/__init__.py index 67ff821..2b0da66 100755 --- a/connector_dns/unit/__init__.py +++ b/connector_dns/unit/__init__.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import backend_adapter from . import binder diff --git a/connector_dns/unit/backend_adapter.py b/connector_dns/unit/backend_adapter.py index ccb6b43..e1d55ff 100755 --- a/connector_dns/unit/backend_adapter.py +++ b/connector_dns/unit/backend_adapter.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import logging from openerp.addons.connector.unit.backend_adapter import CRUDAdapter diff --git a/connector_dns/unit/binder.py b/connector_dns/unit/binder.py index 37eb344..47583ce 100755 --- a/connector_dns/unit/binder.py +++ b/connector_dns/unit/binder.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from datetime import datetime from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT diff --git a/connector_dns/unit/export_synchronizer.py b/connector_dns/unit/export_synchronizer.py index e1c4d15..ce1d25b 100755 --- a/connector_dns/unit/export_synchronizer.py +++ b/connector_dns/unit/export_synchronizer.py @@ -1,5 +1,5 @@ # -*- coding: utf-8 -*- -# Copyright +# Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). import logging from openerp.addons.connector.unit.synchronizer import ExportSynchronizer From 927c9c2d4768bf8d80afd0708d1edd274d6092d5 Mon Sep 17 00:00:00 2001 From: noah <234082230@qq.com> Date: Tue, 23 Aug 2016 16:47:11 +0800 Subject: [PATCH 3/4] [IMP] fixing travis errors --- connector_dns/README.rst | 0 connector_dns/__init__.py | 6 +- connector_dns/__openerp__.py | 28 ++++---- connector_dns/connector.py | 27 ++++++-- connector_dns/dns_menu.xml | 12 ++-- connector_dns/dns_view.xml | 120 ++++++++++++++++++----------------- oca_dependencies.txt | 1 - 7 files changed, 110 insertions(+), 84 deletions(-) mode change 100644 => 100755 connector_dns/README.rst diff --git a/connector_dns/README.rst b/connector_dns/README.rst old mode 100644 new mode 100755 diff --git a/connector_dns/__init__.py b/connector_dns/__init__.py index 2a43bd6..b9e4e7d 100755 --- a/connector_dns/__init__.py +++ b/connector_dns/__init__.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- # Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + from . import backend from . import connector -from . import unit -from . import tests from . import dns +from . import tests +from . import unit + diff --git a/connector_dns/__openerp__.py b/connector_dns/__openerp__.py index 7f61a83..fd2817f 100755 --- a/connector_dns/__openerp__.py +++ b/connector_dns/__openerp__.py @@ -1,15 +1,19 @@ # -*- coding: utf-8 -*- # Copyright 2015 Elico Corp # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -{'name': 'DNS connector', - 'version': '0.1', - 'category': 'Connector', - 'depends': ['connector'], - 'author': 'Elico Corp,Odoo Community Association (OCA)', - 'license': 'AGPL-3', - 'website': 'https://www.elico-corp.com', - 'images': [], - 'demo': [], - 'data': ['dns_view.xml', 'dns_menu.xml'], - 'installable': True, - 'application': False} +{ + 'name': 'DNS connector', + 'version': '8.0.1.0.0', + 'category': 'Connector', + 'depends': ['connector'], + 'author': 'Elico Corp,Odoo Community Association (OCA)', + 'license': 'AGPL-3', + 'website': 'https://www.elico-corp.com', + 'images': [], + 'data': [ + 'dns_view.xml', + 'dns_menu.xml' + ], + 'installable': True, + 'application': False +} diff --git a/connector_dns/connector.py b/connector_dns/connector.py index 5d33eba..50f2be2 100755 --- a/connector_dns/connector.py +++ b/connector_dns/connector.py @@ -1,13 +1,28 @@ # -*- coding: utf-8 -*- -# Copyright 2015 Elico Corp -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2010-2015 Elico Corp () +# Authors: Liu Lixia, Augustin Cisterne-Kaas +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +############################################################################## from openerp import models, fields -from openerp.addons.connector.connector import (Environment, - install_in_connector) +from openerp.addons.connector.connector import (Environment) from openerp.addons.connector.checkpoint import checkpoint -install_in_connector() - def get_environment(session, model_name, backend_id): """ Create an environment to work with. """ diff --git a/connector_dns/dns_menu.xml b/connector_dns/dns_menu.xml index e777383..8639227 100755 --- a/connector_dns/dns_menu.xml +++ b/connector_dns/dns_menu.xml @@ -1,15 +1,15 @@ - + - + - + - + diff --git a/connector_dns/dns_view.xml b/connector_dns/dns_view.xml index 8914b6e..089b041 100755 --- a/connector_dns/dns_view.xml +++ b/connector_dns/dns_view.xml @@ -3,19 +3,19 @@ - DNS Backend - dns.backend - ir.actions.act_window - form - tree,form + DNS Backend + dns.backend + ir.actions.act_window + form + tree,form DNS Backend form dns.backend - + - + @@ -23,22 +23,24 @@ DNS Backend form dns.backend - +
-
-
- - - + + +
@@ -47,20 +49,20 @@ - DNS Domain Action - dns.domain - form - tree,form + DNS Domain Action + dns.domain + form + tree,form DNS domain tree dns.domain - + - - - + + + @@ -68,30 +70,32 @@ DNS domain form dns.domain - +
-
-