from django import forms
from django.contrib.gis.geos import Point

from .models import Antenna


class StopAllocationForm(forms.Form):
    pass


class AntennaForm(forms.ModelForm):
    longitude = forms.FloatField(
        min_value=-180,
        max_value=180,
        required=False,
    )
    latitude = forms.FloatField(
        min_value=-90,
        max_value=90,
        required=False,
    )

    class Meta:
        model = Antenna
        fields = ('label', 'mode', 'ssid', 'mac', 'longitude', 'latitude', 'orientation', 'contact', 'notes', 'position')
        widgets = {'position': forms.HiddenInput}

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        coordinates = self.initial.get('position', self.instance.position)
        if isinstance(coordinates, Point):
            self.initial['longitude'], self.initial['latitude'] = coordinates.tuple

    def clean(self):
        data = super().clean()
        latitude = data.get('latitude')
        longitude = data.get('longitude')
        if latitude and longitude:
            data['position'] = Point(longitude, latitude)
        return data