#!/usr/bin/env python
# -*- coding: utf-8 -*-

''' (web)forms that can be used elsewhere. '''

from django import forms
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from .models import Explorer, Place, PlaceImage, Voucher

class ExplorerCreationForm(UserCreationForm):
    class Meta:
        model = Explorer
        fields = ('username', 'email')
    voucher = forms.CharField(max_length=10, help_text='The Voucher you got from an administrator')

    def is_valid(self):
        super().is_valid()
        sumitted_voucher = self.cleaned_data.get('voucher')
        try:
            fetched_voucher = Voucher.objects.get(code=sumitted_voucher)
        except Voucher.DoesNotExist:
            self.add_error('voucher', 'Invalid voucher')
            return False

        fetched_voucher.delete()
        return True

class ExplorerChangeForm(UserChangeForm):
    class Meta:
        model = Explorer
        fields = ('username', 'email')

class PlaceForm(forms.ModelForm):
    class Meta:
        model = Place
        fields = '__all__'
        exclude = ['submitted_by']
        
class PlaceImageCreateForm(forms.ModelForm):
    class Meta:
        model = PlaceImage
        fields = ['filename']
        widgets = {
            'filename': forms.ClearableFileInput(attrs={'multiple': True})
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.fields['filename'].required = False
