from django import forms
from django.core.validators import RegexValidator
from django.core.exceptions import ValidationError

import re

def validate_gene(value):
    if not re.match(r'^[A-Za-z0-9 .-]+$', value) and not re.match(r'^(?:chr)?[\dxymt\s]+[:\-][\d, ]+(\-[\d ,]+\s*)?$', value.lower()):
        raise ValidationError(('Invalid input'))

class SwitchForm(forms.Form):
    igv_toggle = forms.BooleanField(label=False)


class QueryForm(forms.Form):

    gene = forms.CharField(validators=[
            validate_gene
            # RegexValidator(, 'Invalid input'),
            # RegexValidator(r'^([A-Za-z0-9 .-]+)|((chr)?[\dXYMT]+:\d+\-\d+)$', 'Invalid input'),
        ],
        widget=forms.TextInput(
            attrs={'placeholder': 'Gene Name, Genomic Coordinate(1:1000-2000) .. '}),
        label=False
       )
