# -*- mode: python; coding: utf-8 -*-
# Copyright (C) 2017-2019 by BDE ENS Paris-Saclay
# SPDX-License-Identifier: GPL-3.0-or-later

"""
Based on https://github.com/secnot/django-isbn-field
"""

from django.core.exceptions import ValidationError
from django.utils.translation import ugettext_lazy as _


def isbn_validator(raw_isbn):
    """Check string is a valid ISBN number"""
    isbn_to_check = raw_isbn.replace('-', '').replace(' ', '')

    if not isinstance(isbn_to_check, str):
        raise ValidationError(_('Invalid ISBN: Not a string'))

    if len(isbn_to_check) != 10 and len(isbn_to_check) != 13:
        raise ValidationError(_('Invalid ISBN: Wrong length'))

    # if not isbn.is_valid(isbn_to_check):
    #    raise ValidationError(_('Invalid ISBN: Failed checksum'))

    if isbn_to_check != isbn_to_check.upper():
        raise ValidationError(_('Invalid ISBN: Only upper case allowed'))

    return True