def __call__(self, form, field, submit=False, fields=None): if field.data: schemes = pidutils.detect_identifier_schemes(field.data) if schemes: getattr(form, self.set_field).data = schemes[0] else: getattr(form, self.set_field).data = ''
def test_detect_schemes(self): for i, expected_schemes, normalized_value, url_value in identifiers: schemes = pidutils.detect_identifier_schemes(i) self.assertEqual( schemes, expected_schemes, "Found %s for identifier %s, but expected %s" % (schemes, i, expected_schemes))
def validate_orcid(form, field): if field.data: from invenio.utils import persistentid schemes = persistentid.detect_identifier_schemes( field.data or '' ) if 'orcid' not in schemes: raise ValidationError("Not a valid ORCID-identifier.")
def validate_scheme(form, field): """Set scheme based on value in identifier.""" from invenio.utils import persistentid schemes = persistentid.detect_identifier_schemes( form.data.get('identifier') or '') if schemes: field.data = schemes[0] else: field.data = ''
def test_valueerror(self): # Many validators rely on a special length of the identifier before # testing further. This test, checks that the validators are still # well-behaved when the length matches, but the persistent identifier # is invalid. for i in range(20): nonsense_pid = "a" * i self.assertEqual(pidutils.detect_identifier_schemes(nonsense_pid), [])
def validate_scheme(form, field): """Set scheme based on value in identifier.""" from invenio.utils import persistentid schemes = persistentid.detect_identifier_schemes(form.data.get("identifier") or "") if schemes: field.data = schemes[0] else: field.data = ""
def test_detect_schemes(self): for i, expected_schemes, normalized_value in identifiers: schemes = pidutils.detect_identifier_schemes(i) self.assertEqual( schemes, expected_schemes, "Found %s for identifier %s, but expected %s" % ( schemes, i, expected_schemes ) )
def test_valueerror(self): # Many validators rely on a special length of the identifier before # testing further. This test, checks that the validators are still # well-behaved when the length matches, but the persisitent identifier # is invalid. for i in range(20): nonsense_pid = "a" * i self.assertEqual( pidutils.detect_identifier_schemes(nonsense_pid), [] )
def validate_scheme(form, field): """ Always set scheme based on value in identifier """ from invenio.utils import persistentid schemes = persistentid.detect_identifier_schemes( form.data.get('identifier') or '' ) if schemes: field.data = schemes[0] else: field.data = ''
def __call__(self, form, field, submit=False, fields=None): scheme = None if self.scheme_field: scheme = getattr(form, self.scheme_field).data elif self.scheme: scheme = self.scheme else: schemes = pidutils.detect_identifier_schemes(field.data) if schemes: scheme = schemes[0] if scheme: if field.data: field.data = pidutils.normalize_pid(field.data, scheme=scheme)
def __call__(self, form, field): schemes = pidutils.detect_identifier_schemes(field.data) if not schemes: raise ValidationError(self.message)
def __call__(self, form, field): """Validate.""" schemes = pidutils.detect_identifier_schemes(field.data) if not schemes: raise ValidationError(self.message)