Added reference point in HistoryForm
authorJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Mon, 18 Apr 2011 10:36:24 +0000 (10:36 +0000)
committerJean-Michel Nirgal Vourgère <jmv@nirgal.com>
Mon, 18 Apr 2011 10:36:24 +0000 (10:36 +0000)
bin/djais/views.py

index 01e7b748133b79570eb11bcb23251ba8f0b139a4..69617551e52c92e565fbaad2aa6c503a47e850ce 100644 (file)
@@ -30,7 +30,7 @@ from ais.djais.basicauth import http_authenticate
 from ais.djais.models import *
 from ais.show_targets_ships import format_fleet, kml_to_kmz
 from ais.common import COUNTRIES_MID, Nmea, NmeaFeeder, strmmsi_to_mmsi, SHIP_TYPES, STATUS_CODES, AIS_STATUS_NOT_AVAILABLE, AIS_ROT_NOT_AVAILABLE, AIS_LATLON_SCALE, AIS_LON_NOT_AVAILABLE, AIS_LAT_NOT_AVAILABLE, AIS_COG_SCALE, AIS_COG_NOT_AVAILABLE, AIS_NO_HEADING, AIS_SOG_SCALE, AIS_SOG_NOT_AVAILABLE, AIS_SOG_MAX_SPEED, add_nmea1, add_nmea5_partial, load_fleet_to_uset
-from ais.ntools import datetime_to_timestamp, clean_ais_charset
+from ais.ntools import datetime_to_timestamp, clean_ais_charset, clean_latitude, clean_longitude
 from ais.inputs.common import is_id4_active
 from ais.inputs.stats import STATS_DIR
 from ais.inputs.config import peers_get_config
@@ -175,6 +175,8 @@ class HistoryForm(forms.Form):
     filter_sog_le = forms.FloatField(required=False, label=u'Only if speed ≤ (knots)')
     filter_sog_ge = forms.FloatField(required=False, label=u'Only if speed ≥ (knots)')
     filter_destination = forms.CharField(required=False, label=u'Only if destination starts with', max_length=20, help_text=u'Use AIS upper case letters')
+    reference_latitude = forms.CharField(required=False)
+    reference_longitude = forms.CharField(required=False)
 
     def clean_start_date(self):
         period_type = self.cleaned_data.get('period_type', None)
@@ -198,6 +200,26 @@ class HistoryForm(forms.Form):
             raise forms.ValidationError('That is field is required.')
         return end_date
 
+    def clean_reference_latitude(self):
+        lat = self.cleaned_data.get('reference_latitude', None)
+        if lat is None:
+            return None
+        try:
+            clean_lat = clean_latitude(lat)
+        except LatLonFormatError, err:
+            raise forms.ValidationError(*err.args)
+        return lat # return the text
+
+    def clean_reference_longitude(self):
+        lon = self.cleaned_data.get('reference_longitude', None)
+        if lon is None:
+            return None
+        try:
+            clean_lon = clean_longitude(lon)
+        except LatLonFormatError, err:
+            raise forms.ValidationError(*err.args)
+        return lon # return the text
+
     def clean(self):
         cleaned_data = self.cleaned_data
         period_type = self.cleaned_data.get('period_type', None)
@@ -513,7 +535,6 @@ def vessel_manual_input(request, strmmsi):
             or data['longitude'] != AIS_LON_NOT_AVAILABLE \
             or data['cog'] != AIS_COG_NOT_AVAILABLE \
             or data['heading'] != AIS_NO_HEADING:
-                
                 toto = (strmmsi, data['timestamp'], data['status'], AIS_ROT_NOT_AVAILABLE, data['sog'], data['latitude'], data['longitude'], data['cog'], data['heading'], source)
                 result += 'UPDATING NMEA 1: '+repr(toto)+'<br>'
                 add_nmea1(*toto)