from django import forms
from django.contrib.admin import widgets
from django.forms import (
    BaseInlineFormSet,
    Form,
    HiddenInput,
    ModelForm,
    ModelMultipleChoiceField,
    ModelChoiceField,
    ChoiceField,
    CharField,
    ValidationError,
    modelformset_factory,
    CheckboxSelectMultiple,
)

from rcr.models import Item, RadiologyCategory, OncologyCategory, Level
from django.contrib.auth.models import User
from atlas.models import Condition
from django.contrib.admin.widgets import FilteredSelectMultiple


class ItemForm(ModelForm):

    #radiology_category = ModelMultipleChoiceField(queryset=RadiologyCategory.objects.all())
    #oncology_category = ModelMultipleChoiceField(queryset=OncologyCategory.objects.all())
    radiology_condition = ModelMultipleChoiceField(queryset=Condition.objects.filter(rcr_curriculum=True), required=False, 
            widget=FilteredSelectMultiple(verbose_name="Condition", is_stacked=False),
                                                   )

    


    class Meta:
        model = Item
        exclude = [
            "rcr_platform_id",
            "name",
            "description",
            "content_type",
            "created_on",
            "number_of_items",
            "specialty",
            "access_count",
            "targeted_to_group",
            "assessed_by",
            "assessed_date",
            "assigned_to_radiology",
            "assigned_to_oncology",
            "review_link",
            "review_link_password",
        ]
        # fields = ["category", "level"]
        widgets = {
            "radiology_categories": forms.SelectMultiple(attrs={"size": 12}),
            #"radiology_condition": forms.SelectMultiple(attrs={"size": 12}),
            #"oncology_category": CheckboxSelectMultiple(),
            #"level": CheckboxSelectMultiple(),

        }

    def __init__(self, *args, **kwargs):
            super(ItemForm, self).__init__(*args, **kwargs)
            self.fields['radiology_condition'].label_from_instance = lambda obj: "%s" % obj.get_with_subspecialty()

class AssessorAssignmentForm(Form):
    items = ModelMultipleChoiceField(queryset=Item.objects.all(), widget=forms.SelectMultiple(attrs={'size': 20}))