mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
1634258783
* bump version
* Add more checks
* add simplify rules
* Add RUF rules
* small perf imrpovements
* pylint checks
* more style fixes
* fix a number of A002 cases
* fix A001 cases
* disable unsafe fixes
* remove unneeded branches
fixes SIM102
* re-enable .keys for specific case
* Revert "remove unneeded branches"
This reverts commit f74d41bc07
.
* fix reference
104 lines
2.6 KiB
Python
104 lines
2.6 KiB
Python
"""Test that the "translated" javascript files to not contain template tags which need to be determined at "run time".
|
|
|
|
This is because the "translated" javascript files are compiled into the "static" directory.
|
|
They should only contain template tags that render static information.
|
|
"""
|
|
|
|
import os
|
|
import pathlib
|
|
import re
|
|
import sys
|
|
|
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
template_dir = os.path.abspath(os.path.join(here, '..', 'InvenTree', 'templates'))
|
|
|
|
# We only care about the 'translated' files
|
|
js_i18n_dir = os.path.join(template_dir, 'js', 'translated')
|
|
js_dynamic_dir = os.path.join(template_dir, 'js', 'dynamic')
|
|
|
|
errors = 0
|
|
|
|
print('=================================')
|
|
print('Checking static javascript files:')
|
|
print('=================================')
|
|
|
|
|
|
def check_invalid_tag(data):
|
|
"""Check for invalid tags."""
|
|
pattern = r'{%(\w+)'
|
|
|
|
err_count = 0
|
|
|
|
for idx, line in enumerate(data):
|
|
results = re.findall(pattern, line)
|
|
|
|
for result in results:
|
|
err_count += 1
|
|
|
|
print(f' - Error on line {idx + 1}: %{{{result[0]}')
|
|
|
|
return err_count
|
|
|
|
|
|
def check_prohibited_tags(data):
|
|
"""Check for prohibited tags."""
|
|
allowed_tags = [
|
|
'if',
|
|
'elif',
|
|
'else',
|
|
'endif',
|
|
'for',
|
|
'endfor',
|
|
'trans',
|
|
'load',
|
|
'include',
|
|
'url',
|
|
]
|
|
|
|
pattern = r'{% (\w+)\s'
|
|
|
|
err_count = 0
|
|
|
|
for idx, line in enumerate(data):
|
|
for tag in re.findall(pattern, line):
|
|
if tag not in allowed_tags:
|
|
print(f" > Line {idx + 1} contains prohibited template tag '{tag}'")
|
|
err_count += 1
|
|
|
|
return err_count
|
|
|
|
|
|
for filename in pathlib.Path(js_i18n_dir).rglob('*.js'):
|
|
print(f"Checking file 'translated/{os.path.basename(filename)}':")
|
|
|
|
with open(filename, encoding='utf-8') as js_file:
|
|
data = js_file.readlines()
|
|
|
|
errors += check_invalid_tag(data)
|
|
errors += check_prohibited_tags(data)
|
|
|
|
for filename in pathlib.Path(js_dynamic_dir).rglob('*.js'):
|
|
print(f"Checking file 'dynamic/{os.path.basename(filename)}':")
|
|
|
|
# Check that the 'dynamic' files do not contains any translated strings
|
|
with open(filename, encoding='utf-8') as js_file:
|
|
data = js_file.readlines()
|
|
|
|
invalid_tags = ['blocktrans', 'blocktranslate', 'trans', 'translate']
|
|
|
|
err_count = 0
|
|
|
|
for idx, line in enumerate(data):
|
|
for tag in invalid_tags:
|
|
tag = '{% ' + tag
|
|
if tag in line:
|
|
err_count += 1
|
|
|
|
print(f" > Error on line {idx + 1}: Prohibited tag '{tag}' found")
|
|
|
|
|
|
if errors > 0:
|
|
print(f'Found {errors} incorrect template tags')
|
|
|
|
sys.exit(errors)
|