Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Validata
Validata UI
Commits
048de191
Commit
048de191
authored
Mar 27, 2019
by
Christophe Benz
Browse files
Configure app with environment
parent
722eeabe
Changes
7
Hide whitespace changes
Inline
Side-by-side
.env.example
0 → 100644
View file @
048de191
# Example config file. Copy and customize this file to ".env". Don't commit ".env".
# For production deployment, see http://flask.pocoo.org/docs/1.0/tutorial/deploy/#configure-the-secret-key
SECRET_KEY="dev"
# Comment the two following lines to disable "badge" generation.
BADGE_CONFIG_URL="https://git.opendatafrance.net/validata/validata-badge/raw/master/badge_conf.toml"
SHIELDS_IO_BASE_URL="https://img.shields.io/"
.gitignore
View file @
048de191
__pycache__/
validata_ui.egg-info/
.vscode
.env
.vscode/
README.md
View file @
048de191
...
...
@@ -20,6 +20,18 @@ Install the project dependencies:
pip
install
-e
.
```
## Configuration
```
bash
cp
.env.example .env
```
Customize the configuration variables in
`.env`
file.
Do not commit
`.env`
.
See also: https://github.com/theskumar/python-dotenv
## Development
Start the web server...
...
...
setup.py
View file @
048de191
...
...
@@ -29,6 +29,7 @@ setup(
'ezodf'
,
'flask'
,
'lxml'
,
'python-dotenv'
,
'requests'
,
'toml'
,
...
...
validata_ui/__init__.py
View file @
048de191
import
os
from
pathlib
import
Path
from
urllib.parse
import
quote_plus
...
...
@@ -5,7 +6,10 @@ import flask
import
jinja2
import
validata_core
from
validata_ui.validate_helper
import
ValidatorHelper
# Let this import after app initialisation
from
.
import
config
from
.validate_helper
import
ValidatorHelper
# Schemas settings
schemas_config
=
validata_core
.
get_schemas_config
()
...
...
@@ -13,17 +17,19 @@ ValidatorHelper.init(schemas_config)
# Flask things
app
=
flask
.
Flask
(
__name__
)
app
.
secret_key
=
'MyPr3ci0u5$€cr€t'
app
.
secret_key
=
config
.
SECRET_KEY
# Jinja2 url_quote_plus custom filter
# https://stackoverflow.com/questions/12288454/how-to-import-custom-jinja2-filters-from-another-file-and-using-flask
blueprint
=
flask
.
Blueprint
(
'filters'
,
__name__
)
@
jinja2
.
contextfilter
@
blueprint
.
app_template_filter
()
def
urlencode
(
context
,
value
):
return
quote_plus
(
value
)
#
Let
this import after app initialisation
import
v
alidata_ui.views
#
Keep
this import after app initialisation
(to avoid cyclic imports)
from
.
import
v
iews
# isort:skip
validata_ui/config.py
0 → 100644
View file @
048de191
import
logging
import
os
import
requests
import
toml
from
dotenv
import
load_dotenv
log
=
logging
.
getLogger
(
__name__
)
load_dotenv
()
SECRET_KEY
=
os
.
environ
.
get
(
"SECRET_KEY"
)
or
None
BADGE_CONFIG_URL
=
os
.
environ
.
get
(
"BADGE_CONFIG_URL"
)
or
None
BADGE_CONFIG
=
None
if
BADGE_CONFIG_URL
is
None
:
log
.
warning
(
"BADGE_CONFIG_URL environment variable is not set, disable badge feature"
)
else
:
response
=
requests
.
get
(
BADGE_CONFIG_URL
)
if
not
response
.
ok
:
log
.
warning
(
"Can't retrieve badge config from [%s], disable badge feature"
,
BADGE_CONFIG_URL
)
else
:
BADGE_CONFIG
=
toml
.
loads
(
response
.
text
)
SHIELDS_IO_BASE_URL
=
os
.
environ
.
get
(
"SHIELDS_IO_BASE_URL"
)
or
None
if
not
SHIELDS_IO_BASE_URL
.
endswith
(
'/'
):
SHIELDS_IO_BASE_URL
+=
'/'
validata_ui/views.py
View file @
048de191
...
...
@@ -5,7 +5,6 @@ import copy
import
itertools
import
json
import
logging
import
os
import
subprocess
import
tempfile
from
datetime
import
datetime
...
...
@@ -14,45 +13,24 @@ from operator import itemgetter
from
pathlib
import
Path
from
urllib.parse
import
quote_plus
import
requests
import
toml
from
backports.datetime_fromisoformat
import
MonkeyPatch
from
commonmark
import
commonmark
from
flask
import
make_response
,
redirect
,
render_template
,
request
,
url_for
import
tabulator
from
validata_core
import
compute_badge
,
csv_helpers
,
messages
from
validata_core.loaders
import
custom_loaders
import
tabulator
from
validata_ui
import
app
from
validata_ui.ui_util
import
flash_error
,
flash_warning
from
validata_ui.validata_util
import
ValidataSource
from
validata_ui.validate_helper
import
ValidatorHelper
from
.
import
app
,
config
from
.ui_util
import
flash_error
,
flash_warning
from
.validata_util
import
ValidataSource
from
.validate_helper
import
ValidatorHelper
MonkeyPatch
.
patch_fromisoformat
()
log
=
logging
.
getLogger
(
__name__
)
# Get badge configuration file url from environment variable
badge_config
=
None
badge_config_url
=
os
.
environ
.
get
(
'BADGE_CONFIG_URL'
)
if
badge_config_url
is
None
:
log
.
warning
(
"BADGE_CONFIG_URL environment variable is not set"
)
else
:
req
=
requests
.
get
(
badge_config_url
)
if
not
req
.
ok
:
log
.
warning
(
"Can't retrieve badge config from [%s]"
,
badge_config_url
)
else
:
badge_config
=
toml
.
loads
(
req
.
text
)
# Gets shields io url from environment variable
shields_io_url
=
os
.
environ
.
get
(
'SHIELDS_IO_URL'
)
if
shields_io_url
is
None
:
shields_io_url
=
'https://img.shields.io/'
elif
not
shields_io_url
.
endswith
(
'/'
):
shields_io_url
+=
'/'
def
extract_source_data
(
source
:
ValidataSource
,
preview_rows_nb
=
5
):
""" Computes table preview """
...
...
@@ -252,8 +230,8 @@ def get_badge_url_and_message(badge):
"""Gets badge url from badge information"""
msg
,
color
=
compute_badge_message_and_color
(
badge
)
return
(
'{}static/v1.svg?label=Validata&message={}&color={}'
.
format
(
shields_io_url
,
quote_plus
(
msg
),
color
),
msg
)
return
(
'{}static/v1.svg?label=Validata&message={}&color={}'
.
format
(
config
.
SHIELDS_IO_BASE_URL
,
quote_plus
(
msg
),
color
),
msg
)
def
validate
(
schema_code
,
source
:
ValidataSource
):
...
...
@@ -276,7 +254,7 @@ def validate(schema_code, source: ValidataSource):
return
redirect
(
url_for
(
'scdl_validator'
,
val_code
=
schema_code
))
# Computes badge from report and badge configuration
badge
=
compute_badge
(
validata_core_report
,
badge_
config
)
badge
=
compute_badge
(
validata_core_report
,
config
.
BADGE_CONFIG
)
badge_url
,
badge_msg
=
get_badge_url_and_message
(
badge
)
source_errors
=
[
err
for
err
in
validata_core_report
[
'tables'
][
0
][
'errors'
]
if
err
[
'code'
]
==
'source-error'
]
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment