Initial import from Docker volume

This commit is contained in:
root
2025-12-26 13:11:43 +00:00
commit 4998dc066a
13336 changed files with 1767801 additions and 0 deletions

14
modules/currency_ro/__init__.py Executable file
View File

@@ -0,0 +1,14 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.pool import Pool
from . import currency
__all__ = ['register']
def register():
Pool.register(
currency.Cron,
module='currency_ro', type_='model')

Binary file not shown.

Binary file not shown.

59
modules/currency_ro/currency.py Executable file
View File

@@ -0,0 +1,59 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime as dt
from decimal import Decimal
import requests
from lxml import etree
from trytond.config import config
from trytond.modules.currency.currency import CronFetchError
from trytond.pool import PoolMeta
from trytond.pyson import Eval, If
URL_10DAYS = 'https://bnr.ro/nbrfxrates10days.xml'
URL_YEAR = 'https://bnr.ro/files/xml/years/nbrfxrates%s.xml'
TIMEOUT = config.getfloat('currency_ro', 'requests_timeout', default=300)
class Cron(metaclass=PoolMeta):
__name__ = 'currency.cron'
@classmethod
def __setup__(cls):
super().__setup__()
cls.source.selection.append(('bnr_ro', "Romanian National Bank"))
cls.currency.domain = [
cls.currency.domain or [],
If(Eval('source') == 'bnr_ro',
('code', '=', 'RON'),
()),
]
def fetch_bnr_ro(self, date):
if (dt.date.today() - date).days < 10:
url = URL_10DAYS
else:
url = URL_YEAR % date.year
try:
response = requests.get(url, timeout=TIMEOUT)
except requests.HTTPError as e:
raise CronFetchError() from e
tree = etree.fromstring(response.content)
origin, = tree.xpath(
'//x:Body/x:OrigCurrency',
namespaces={'x': 'http://www.bnr.ro/xsd'})
assert origin.text == self.currency.code
cubes = tree.xpath(
'//x:Body/x:Cube[@date="%s"]' % date.isoformat(),
namespaces={'x': 'http://www.bnr.ro/xsd'})
if cubes:
cube, = cubes
return {
r.get('currency'): (
Decimal(r.get('multiplier', 1)) / Decimal(r.text))
for r in cube.iter('{*}Rate')}
else:
return {}

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Banc Nacional de Romania"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Rumänische Nationalbank"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Banco Nacional de Rumanía"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Banque nationale roumaine"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Banca nazionale Rumena"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Roemeense Nationale Bank"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr "Banca Naţionala a României"

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,7 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "selection:currency.cron,source:"
msgid "Romanian National Bank"
msgstr ""

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,56 @@
====================
Currency RO Scenario
====================
Imports::
>>> import datetime as dt
>>> from proteus import Model
>>> from trytond.tests.tools import activate_modules
>>> today = dt.date.today()
>>> previous_month = today - dt.timedelta(days=30)
>>> before_previous_month = previous_month - dt.timedelta(days=1)
Activate modules::
>>> config = activate_modules('currency_ro')
Import models::
>>> Currency = Model.get('currency.currency')
>>> Cron = Model.get('currency.cron')
Create some currencies::
>>> eur = Currency(name="Euro", code='EUR', symbol="€")
>>> eur.save()
>>> ron = Currency(name="Romanian Leu", code='RON', symbol="L")
>>> ron.save()
Setup cron::
>>> cron = Cron()
>>> cron.source = 'bnr_ro'
>>> cron.frequency = 'daily'
>>> cron.day = None
>>> cron.currency = ron
>>> cron.currencies.append(Currency(eur.id))
>>> cron.last_update = before_previous_month
>>> cron.save()
Run update::
>>> cron.click('run')
>>> cron.last_update >= previous_month
True
>>> ron.reload()
>>> rate = [r for r in ron.rates if r.date < today][0]
>>> rate.rate
Decimal('1.000000')
>>> eur.reload()
>>> rate = [r for r in eur.rates if r.date < today][0]
>>> bool(rate.rate)
True

View File

@@ -0,0 +1,12 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import ModuleTestCase
class CurrencyRoTestCase(ModuleTestCase):
'Test Currency Ro module'
module = 'currency_ro'
del ModuleTestCase

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.tests.test_tryton import load_doc_tests
def load_tests(*args, **kwargs):
return load_doc_tests(__name__, __file__, *args, **kwargs)

5
modules/currency_ro/tryton.cfg Executable file
View File

@@ -0,0 +1,5 @@
[tryton]
version=7.2.0
depends:
currency
ir