from yamale.validators import Validator
import validators

class License(Validator):
    tag = "license"
    licenses = [
        "CC-BY-3.0",
        "CC-BY-4.0",
        "CC-BY-SA-3.0",
        "CC-BY-SA-4.0",
        "CC-BY-NC-3.0",
        "CC-BY-NC-4.0",
        "CC-BY-NC-SA-3.0",
        "CC-BY-NC-SA-4.0",
        "CC-BY-ND-3.0",
        "CC-BY-ND-4.0",
        "CC-BY-NC-ND-4.0",
        "CC0-1.0",
        "MIT",
        "Custom" # implies that the license is described in the copyright field.
        ]

    def _is_valid(self, value):
        return value in self.licenses

class Url(Validator):
    tag = "url"

    def _is_valid(self, value):
        # Source field is required to ensure its not neglected, but there may be no applicable URL
        return (value == "NA") or validators.url(value)
