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
Alexandre Bulté
Validata Core
Commits
299e4176
Commit
299e4176
authored
Dec 07, 2018
by
Pierre Dittgen
Browse files
'year-interval-value can now allow year only
parent
1b2b8ffc
Changes
2
Hide whitespace changes
Inline
Side-by-side
validata_core/custom_checks/year_interval_value.py
View file @
299e4176
...
...
@@ -7,7 +7,7 @@ from __future__ import unicode_literals
Year Interval Value check
Vérifie que l'on a bien une valeur du type "aaaa/aaaa" avec la première année
inférieure à la seconde
.
inférieure à la seconde
ou une année seulement (si le paramètre allow-year-only est activé)
Messages d'erreur attendus :
- Si la valeur n'est pas du type ^
\\
d{4}/
\\
d{4}$ (ex : "toto")
...
...
@@ -22,11 +22,11 @@ from __future__ import unicode_literals
import
re
from
simpleeval
import
simple_eval
from
goodtables.registry
import
check
from
goodtables.error
import
Error
YEAR_INTERVAL_RE
=
re
.
compile
(
'^(
\\
d{4})/(
\\
d{4})$'
)
YEAR_INTERVAL_RE
=
re
.
compile
(
r
'^(\d{4})/(\d{4})$'
)
YEAR_RE
=
re
.
compile
(
r
'^\d{4}$'
)
# Module API
...
...
@@ -40,6 +40,7 @@ class YearIntervalValue(object):
def
__init__
(
self
,
column
,
**
options
):
self
.
__column
=
column
self
.
allow_year_only
=
options
.
get
(
'allow-year-only'
)
in
(
'true'
,
'yes'
)
def
check_row
(
self
,
cells
):
# Get cell
...
...
@@ -60,8 +61,25 @@ class YearIntervalValue(object):
if
value
==
''
:
return
# Checks for interval format
rm
=
YEAR_INTERVAL_RE
.
match
(
value
)
if
not
rm
:
# Not an interval, is this a year only?
if
self
.
allow_year_only
:
ym
=
YEAR_RE
.
match
(
value
)
# No -> add error
if
not
ym
:
return
self
.
err
(
cell
,
"La valeur
\"
{value}
\"
n'a pas le format attendu pour une année (AAAA) ou un intervalle d'année (AAAA/AAAA))"
,
{
'value'
:
value
})
# This is a year, cool!
else
:
return
# not a period -> add error
return
self
.
err
(
cell
,
"La valeur
\"
{value}
\"
n'a pas le format attendu pour une période (AAAA/AAAA)."
,
{
'value'
:
value
})
...
...
validata_core/messages.py
View file @
299e4176
...
...
@@ -218,6 +218,16 @@ def compare_columns_value(err, schema):
"""compare-columns-value"""
return
u_err
(
err
,
'Comparaison de colonne'
,
err
[
'message'
])
def
cohesive_columns_value
(
err
,
schema
):
"""cohesive-columns-value"""
return
u_err
(
err
,
'Cohérence entre colonnes'
,
err
[
'message'
])
def
year_interval_value
(
err
,
schema
):
"""year-interval-value"""
return
u_err
(
err
,
'Année ou période'
,
err
[
'message'
])
# Validata pre-checks
#
# -> Error message is stored in 'message' key
...
...
@@ -302,6 +312,8 @@ ERROR_MESSAGE_FUNC = {
# Validata custom checks
'french-siret-value'
:
french_siret_value
,
'compare-columns-value'
:
compare_columns_value
,
'cohesive-columns-value'
:
cohesive_columns_value
,
'year-interval-value'
:
year_interval_value
,
}
ERROR_MESSAGE_DEFAULT_TITLE
=
{
...
...
@@ -341,4 +353,6 @@ ERROR_MESSAGE_DEFAULT_TITLE = {
# Validata custom checks
'french-siret-value'
:
'n° siret invalide'
,
'compare-columns-value'
:
'comparaison de colonne invalide'
,
'cohesive-columns-value'
:
'cohérence entre colonnes'
,
'year-interval-value'
:
'année ou période'
,
}
Write
Preview
Markdown
is supported
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