mirror of
https://github.com/inventree/InvenTree
synced 2024-08-30 18:33:04 +00:00
Adds script to pull down "rendered" versions of javascript files
This commit is contained in:
parent
e261fa6b29
commit
62d877ba54
1
ci/.gitignore
vendored
Normal file
1
ci/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
js_tmp/
|
111
ci/pull_js_files.py
Normal file
111
ci/pull_js_files.py
Normal file
@ -0,0 +1,111 @@
|
|||||||
|
"""
|
||||||
|
Pull 'rendered' copies of the templated JS files down from the InvenTree server.
|
||||||
|
|
||||||
|
These files can then be used for linting and unit testing
|
||||||
|
"""
|
||||||
|
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import re
|
||||||
|
import os
|
||||||
|
import json
|
||||||
|
import pathlib
|
||||||
|
import argparse
|
||||||
|
import requests
|
||||||
|
from requests.auth import HTTPBasicAuth
|
||||||
|
|
||||||
|
|
||||||
|
here = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
js_template_dir = os.path.abspath(os.path.join(here, '..', 'InvenTree', 'templates', 'js'))
|
||||||
|
|
||||||
|
js_tmp_dir = os.path.join(here, 'js_tmp')
|
||||||
|
|
||||||
|
def get_token(server, username, password):
|
||||||
|
|
||||||
|
url = os.path.join(
|
||||||
|
server,
|
||||||
|
'api',
|
||||||
|
'user',
|
||||||
|
'token',
|
||||||
|
)
|
||||||
|
|
||||||
|
auth = HTTPBasicAuth(username, password)
|
||||||
|
|
||||||
|
response = requests.get(url, auth=auth, allow_redirects=False)
|
||||||
|
|
||||||
|
data = json.loads(response.text)
|
||||||
|
|
||||||
|
return data['token']
|
||||||
|
|
||||||
|
|
||||||
|
def download_file(url, filename, token):
|
||||||
|
"""
|
||||||
|
Download a single javascript file
|
||||||
|
"""
|
||||||
|
|
||||||
|
print(f"Downloading '{url}'")
|
||||||
|
|
||||||
|
headers = {
|
||||||
|
'AUTHORIZATION': f'Token {token}'
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.get(
|
||||||
|
url,
|
||||||
|
allow_redirects=False,
|
||||||
|
headers=headers
|
||||||
|
)
|
||||||
|
|
||||||
|
output_file = os.path.join(
|
||||||
|
js_tmp_dir,
|
||||||
|
filename,
|
||||||
|
)
|
||||||
|
|
||||||
|
with open(output_file, 'wb') as output:
|
||||||
|
output.write(response.content)
|
||||||
|
|
||||||
|
|
||||||
|
def download_js_files(subdir, url, token):
|
||||||
|
"""
|
||||||
|
Returns a flattened list of all javascript files
|
||||||
|
"""
|
||||||
|
|
||||||
|
d = os.path.join(js_template_dir, subdir)
|
||||||
|
|
||||||
|
files = pathlib.Path(d).rglob('*.js')
|
||||||
|
|
||||||
|
for filename in files:
|
||||||
|
js = os.path.basename(filename)
|
||||||
|
|
||||||
|
js_url = os.path.join(url, js)
|
||||||
|
|
||||||
|
download_file(js_url, js, token)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser("Download JavaScript files")
|
||||||
|
|
||||||
|
parser.add_argument('-s', '--server', help='InvenTree server', action='store')
|
||||||
|
parser.add_argument('-u', '--username', help='Username', action='store')
|
||||||
|
parser.add_argument('-p', '--password', help='password', action='store')
|
||||||
|
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if not os.path.exists(js_tmp_dir):
|
||||||
|
os.mkdir(js_tmp_dir)
|
||||||
|
|
||||||
|
auth = HTTPBasicAuth(args.username, args.password)
|
||||||
|
|
||||||
|
# Get an auth token from the server
|
||||||
|
token = get_token(args.server, args.username, args.password)
|
||||||
|
|
||||||
|
# Dynamic javascript files
|
||||||
|
dynamic_url = os.path.join(args.server, 'js', 'dynamic')
|
||||||
|
|
||||||
|
download_js_files('dynamic', dynamic_url, token)
|
||||||
|
|
||||||
|
# Translated JS files
|
||||||
|
i18n_url = os.path.join(args.server, 'js', 'i18n')
|
||||||
|
|
||||||
|
download_js_files("translated", i18n_url, token)
|
Loading…
Reference in New Issue
Block a user