Skip to content

Commit

Permalink
✨ **Sync 🪬 Studio**
Browse files Browse the repository at this point in the history
This commit includes the basic design of the renovated sync module.
Further commits will contain the actual implementation.
  • Loading branch information
yelizariev committed May 8, 2024
1 parent 7a0dcfe commit d017ec4
Show file tree
Hide file tree
Showing 19 changed files with 782 additions and 838 deletions.
1 change: 1 addition & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# generated from manifests external_dependencies
bravado_core
jsonschema<4
markdown
swagger_spec_validator
35 changes: 20 additions & 15 deletions sync/__manifest__.py
Original file line number Diff line number Diff line change
@@ -1,21 +1,20 @@
# Copyright 2020-2021 Ivan Yelizariev <https://twitter.com/yelizariev>
# Copyright 2020-2021,2024 Ivan Yelizariev <https://twitter.com/yelizariev>
# Copyright 2020-2021 Denis Mudarisov <https://github.com/trojikman>
# Copyright 2021 Ilya Ilchenko <https://github.com/mentalko>
# License MIT (https://opensource.org/licenses/MIT).

{
"name": """Sync Studio""",
"summary": """Synchronize something with anything: SystemX↔Odoo, Odoo1↔Odoo2, SystemX↔SystemY. ETL/ESB tool similar to OCA/connector, but more flexible""",
"category": "Extra Tools",
"images": ["images/sync-studio.jpg"],
"version": "16.0.6.2.0",
"name": "Sync 🪬 Studio",
"summary": """Join the Amazing 😍 Community ⤵️""",
"category": "VooDoo ✨ Magic",
"version": "16.0.7.0.0",
"application": True,
"author": "IT Projects Labs, Ivan Yelizariev",
"support": "[email protected]",
"author": "Ivan Kropotkin",
"support": "[email protected]",
"website": "https://sync_studio.t.me/",
"license": "Other OSI approved licence", # MIT
"depends": ["base_automation", "mail", "queue_job"],
"external_dependencies": {"python": [], "bin": []},
"external_dependencies": {"python": ["markdown"], "bin": []},
"data": [
"security/sync_groups.xml",
"security/ir.model.access.csv",
Expand All @@ -32,13 +31,19 @@
"wizard/sync_make_module_views.xml",
"data/queue_job_function_data.xml",
],
"assets": {
"web.assets_backend": [
"sync/static/src/scss/src.scss",
],
},
"demo": [
"data/sync_project_context_demo.xml",
"data/sync_project_telegram_demo.xml",
"data/sync_project_odoo2odoo_demo.xml",
"data/sync_project_trello_github_demo.xml",
"data/sync_project_unittest_demo.xml",
"data/sync_project_context_demo.xml",
# Obsolete
# "data/sync_project_context_demo.xml",
# "data/sync_project_telegram_demo.xml",
# "data/sync_project_odoo2odoo_demo.xml",
# "data/sync_project_trello_github_demo.xml",
# "data/sync_project_unittest_demo.xml",
# "data/sync_project_context_demo.xml",
],
"qweb": [],
"post_load": None,
Expand Down
90 changes: 90 additions & 0 deletions sync/doc/MAGIC.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
This document describes `MAGIC.*` tools available on Project Code evaluation (core code, library code, task code)


Base
====

* ``MAGIC.env``: Odoo Environment
* ``MAGIC.log(message, level=MAGIC.LOG_INFO)``: logging function to record debug information

log levels:

* ``MAGIC.LOG_DEBUG``
* ``MAGIC.LOG_INFO``
* ``MAGIC.LOG_WARNING``
* ``MAGIC.LOG_ERROR``

* ``MAGIC.log_transmission(recipient_str, data_str)``: report on data transfer to external recipients

Links
=====

* ``MAGIC.get_link(...)``
* ``MAGIC.set_link(...)``

These methods are documented separetely in `<links.rst>`__.

Sync Helpers
============

* ``MAGIC.sync_odoo2x(...)``
* ``MAGIC.sync_x2odoo(...)``
* ``MAGIC.sync_external(...)``

These methods are documented separetely in `<sync.rst>`__.

Event
=====

* ``MAGIC.trigger_name``: available in tasks' code only
* ``MAGIC.user``: user related to the event, e.g. who clicked a button

Asynchronous work
=================

* ``MAGIC.add_job(func_name, **options)(*func_args, **func_kwargs)``: call a function asynchronously; options are similar to ``with_delay`` method of ``queue_job`` module:

* ``priority``: Priority of the job, 0 being the higher priority. Default is 10.
* ``eta``: Estimated Time of Arrival of the job. It will not be executed before this date/time.
* ``max_retries``: maximum number of retries before giving up and set the job
state to 'failed'. A value of 0 means infinite retries. Default is 5.
* ``description`` human description of the job. If None, description is
computed from the function doc or name
* ``identity_key`` key uniquely identifying the job, if specified and a job
with the same key has not yet been run, the new job will not be added.


Attachments
===========

* ``attachment._public_url()``: generates access url. Can be used to pass attachments to an external system as url, instead of direct uploading the content.

Libs
====

* ``MAGIC.json``
* ``MAGIC.time``
* ``MAGIC.datetime``
* ``MAGIC.dateutil``
* ``MAGIC.timezone``
* ``MAGIC.b64encode``
* ``MAGIC.b64decode``

Tools
=====

* ``MAGIC.url2base64``
* ``MAGIC.url2bin``
* ``MAGIC.get_lang(env, lang_code=False)``: returns `res.lang` record
* ``MAGIC.html2plaintext``
* ``MAGIC.type2str``: get type of the given object
* ``MAGIC.DEFAULT_SERVER_DATETIME_FORMAT``
* ``MAGIC.AttrDict``: like a dictionary, but with accessing to attributes via dot.

Exceptions
==========

* ``MAGIC.UserError``
* ``MAGIC.ValidationError``
* ``MAGIC.RetryableJobError``: raise to restart job from beginning; e.g. in case of temporary errors like broken connection
* ``MAGIC.OSError``
5 changes: 5 additions & 0 deletions sync/doc/changelog.rst
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
`7.0.0`
-------

- **New:** Dramatic improvement on Sync Studio API

`6.2.0`
-------

Expand Down
Loading

0 comments on commit d017ec4

Please sign in to comment.