Example #1
0
class ColaboradorForm(forms.ModelForm):
    lat = forms.FloatField(required=False)
    lon = forms.FloatField(required=False)

    def clean_lat(self):
        lat = self.cleaned_data['lat']
        if not lat:
            raise ValidationError("Indica donde estás")
        return lat

    def is_valid(self):
        valid = super(ColaboradorForm, self).is_valid()
        if not valid:
            return valid
        if not self.data["email"] and not self.data["telefono"]:
            return False
        return True

    def save(self, commit=True):
        m = super(ColaboradorForm, self).save(commit=False)
        m.geom = Point(self.cleaned_data['lon'],
                       self.cleaned_data['lat'],
                       srid=4326)
        if commit:
            m.save()
        return m

    class Meta:
        model = Colaborador
        fields = '__all__'
        exclude = ['geom']
Example #2
0
class HomeForm(forms.Form):
    name = forms.CharField(
        min_length=1,
        max_length=255,
        strip=True,
        widget=forms.TextInput(attrs={'class': 'form-control'})
    )
    lat = forms.FloatField(
        widget=forms.HiddenInput()
    )
    lng = forms.FloatField(
        widget=forms.HiddenInput()
    )
    radius = forms.IntegerField(
        max_value='1000000000',
        min_value='5',
        widget=forms.NumberInput(attrs={'class': 'form-control'}),
        initial=50
    )
    module = forms.ModelChoiceField(
        widget=forms.RadioSelect,
        queryset=Module.objects.all(),
        empty_label='モジュールを選択',
        required=True
    )

    class Meta:
        labels = {
            'radius': 'Radius',
            'name': 'Name',
            'module': 'Module'
        }
Example #3
0
class AccessibleLocalForm(forms.ModelForm):
    lat = forms.FloatField(required=True, min_value=-90, max_value=90)  # Latitude: -90° to 90°
    lng = forms.FloatField(required=True, min_value=-180, max_value=180)  # Longitude: -180° to 180°

    class Meta:
        model = AccessibleLocal
        fields = ['name', 'comments', 'lat', 'lng', 'rank']
        labels = {
            'name': 'Nome do local:',
            'comments': 'Descrição do local:',
            'rank': 'Nível de Acessibilidade:',
        }
        widgets = {
            'comments': Textarea()
        }

    def __init__(self, *args, **kwargs):
        super(AccessibleLocalForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_id = 'manage_local'
        self.helper.form_method = 'post'
        self.helper.form_action = 'index'
        self.helper.layout = Layout(
            Field('name', id='name'),
            Field('comments', id='comments', rows=3),
            Field('rank', id='rank'),
            Div(Field('lat', type='hidden', id='lat'),
                Field('lng', type='hidden', id='lon'),
                id='div_id_coords'
                ),
            Submit('save', 'Salvar', css_class='btn-success')
        )
Example #4
0
class EstablishmentForm(forms.ModelForm):

    closing_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    construction_expiration_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    inactivate_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    last_plan_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    next_inspection_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    permit_expiration_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    permit_print_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    reactivate_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    renewal_received_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    renewal_sent_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    setup_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    status_change_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    test_expiration_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    status_change_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    test_expiration_date = DateTimeFieldNull0(input_formats=DATE_FORMATS, required=False)
    lat = forms.FloatField(required=False)
    lon = forms.FloatField(required=False)
    location = forms.PointField(required=False)

    class Meta:
        model = Establishment

    def clean(self):
        lat = self.cleaned_data.get('lat', None)
        lon = self.cleaned_data.get('lon', None)
        if lat and lon:
            self.cleaned_data['location'] = Point(lon, lat)
        return self.cleaned_data
Example #5
0
class SymptonsForm(forms.ModelForm):

    temperature = forms.FloatField(min_value=36,
                                   max_value=45,
                                   help_text='Temperatura corporal',
                                   label='Temperatura',
                                   initial=36.5)
    edad = forms.IntegerField(help_text='Edad actual',
                              label='Edad',
                              initial=False,
                              required=True,
                              min_value=1,
                              max_value=120)
    sexo = forms.ChoiceField(help_text='Género',
                             label='Género',
                             initial=False,
                             required=False,
                             choices=((1, ''), (2, 'Hombre'), (3, 'Mujer')))
    tos = forms.BooleanField(help_text='¿Tienes tos?',
                             label='Tos',
                             initial=False,
                             required=False)
    dolor_cabeza = forms.BooleanField(help_text='¿Tienes dolor de cabeza?',
                                      label='Dolor de Cabeza',
                                      initial=False,
                                      required=False)
    dolor_garganta = forms.BooleanField(help_text='¿Tienes dolor de garganta?',
                                        label='Dolor de garganta',
                                        initial=False,
                                        required=False)
    respiracion = forms.BooleanField(
        help_text='¿Tienes dificultad para respirar?',
        label='Dificultad para Respirar',
        initial=False,
        required=False)
    latitude = forms.FloatField(initial=20, label='Latitud',
                                required=False)  #, disabled='disabled')
    longitude = forms.FloatField(initial=-105,
                                 label='Longitud',
                                 required=False)  #, disabled='disabled')

    # location = SpatialLocationField()

    class Meta:
        model = Person
        fields = [
            'temperature',
            'latitude',
            'longitude',
            'age',
            'sexo',
        ]
Example #6
0
class CreateOccurrence(forms.ModelForm):
    '''
    Form for create an occurrence
    '''
    lat = forms.FloatField(required=True)
    long = forms.FloatField(required=True)

    class Meta:
        model = models.Occurrence
        fields = (
            'lat',
            'long',
            'description',
            'category',
        )
Example #7
0
class GeometryQueryForm(QuerySetForm):
    """A form providing GeoQuerySet method arguments."""
    format = fields.GeoFormatField(required=False)
    op = fields.GeoFormatField(required=False)
    precision = forms.IntegerField(required=False)
    # Tolerance value for geometry simplification
    simplify = forms.FloatField(required=False)
    srs = fields.SpatialReferenceField(required=False)

    def select(self):
        kwargs = {}
        data = self.cleaned_data
        tolerance, srs, format = map(data.get, ('simplify', 'srs', 'format'))
        expr = field = query.geo_field(self.queryset).name
        srid = getattr(srs, 'srid', None)
        if srid:
            expr = functions.Transform(expr, srid)
            self.queryset.query.add_context('transformed_srid', srid)
        if data['op']:
            expr = data['op'](expr)
        if data['precision'] is not None:
            kwargs.update(precision=data['precision'])
        if tolerance:
            expr = query.Simplify(expr, tolerance)
        if format:
            expr = format(expr, **kwargs)
        if expr != field:
            attrname = self.data.get('format')
            self.queryset = self.queryset.annotate(**{attrname: expr})
Example #8
0
class GeometryQueryForm(QuerySetForm):
    """A form providing GeoQuerySet method arguments."""
    format = forms.CharField(required=False)
    precision = forms.IntegerField(required=False, initial=4)
    # Tolerance value for geometry simplification
    simplify = forms.FloatField(required=False)
    srs = fields.SpatialReferenceField(required=False)

    def clean_precision(self):
        # Unfortunately initial values are not used as default values.
        return (self.cleaned_data['precision']
                or self.fields['precision'].initial)

    def select(self):
        data = self.cleaned_data
        kwargs = {'precision': data['precision']}
        tolerance, srs, format = map(data.get, ('simplify', 'srs', 'format'))
        srid = getattr(srs, 'srid', None)
        try:
            has_format = self.queryset.has_format(format)
        except AttributeError:
            # Handle default GeoQuerySet.
            try:
                self.queryset = getattr(self.queryset, format)(**kwargs)
            except AttributeError:
                pass
        else:
            if has_format:
                kwargs.update(format=format)
            self.queryset = self.queryset.simplify(tolerance, srid, **kwargs)
Example #9
0
class GeometryQueryForm(QuerySetForm):
    """A form providing GeoQuerySet method arguments."""
    format = forms.CharField(required=False)
    precision = forms.IntegerField(required=False)
    # Tolerance value for geometry simplification
    simplify = forms.FloatField(required=False)
    srs = fields.SpatialReferenceField(required=False)

    def select(self):
        kwargs = {}
        data = self.cleaned_data
        if data['precision'] is not None:
            kwargs.update(precision=data['precision'])
        tolerance, srs, format = map(data.get, ('simplify', 'srs', 'format'))
        srid = getattr(srs, 'srid', None)
        try:
            has_format = self.queryset.has_format(format)
        except AttributeError:
            # Handle default GeoQuerySet.
            try:
                self.queryset = getattr(self.queryset, format)(**kwargs)
            except AttributeError:
                pass
        else:
            if has_format:
                kwargs.update(format=format)
            self.queryset = self.queryset.simplify(tolerance, srid, **kwargs)
Example #10
0
class EstablishmentForm(forms.ModelForm):
    "Validate and clean Durham's establishment data"

    status = forms.CharField()
    lat = forms.FloatField(required=False)
    lon = forms.FloatField(required=False)
    update_date = forms.DateTimeField(input_formats=DATE_FORMATS)
    opening_date = forms.DateTimeField(input_formats=DATE_FORMATS)

    class Meta:
        model = Establishment
        exclude = ('location', 'property_id')

    def clean_city(self):
        city = self.cleaned_data['city']
        return city.title()

    def clean_status(self):
        status = self.cleaned_data['status']
        if status == 'ACTIVE':
            return 'active'
        elif status == 'DELETED':
            return 'deleted'
        raise forms.ValidationError('Invalid status')

    def clean_phone(self):
        phone = self.cleaned_data['phone']
        # Force empty phone value to empty string
        if phone == 'NULL':
            phone = ''
        return phone

    def clean(self):
        lat = self.cleaned_data.get('lat', None)
        lon = self.cleaned_data.get('lon', None)
        if lat and lon:
            self.cleaned_data['location'] = Point(lon, lat)
        return self.cleaned_data

    def save(self, commit=True):
        instance = super().save(commit=False)
        if 'location' in self.cleaned_data:
            instance.location = self.cleaned_data['location']
        instance.save()
        return instance
Example #11
0
class ColaboradorForm(forms.ModelForm):
    lat = forms.FloatField(required=False)
    lon = forms.FloatField(required=False)

    def clean(self):
        cleaned_data = super().clean()
        telefono = cleaned_data.get("telefono")
        email = cleaned_data.get("email")
        if not email and not telefono:
            raise ValidationError(
                "Es necesario un método de contacto: email o teléfono")

    def clean_lat(self):
        lat = self.cleaned_data['lat']
        if not lat:
            raise ValidationError("Indica donde estás")
        return lat

    def is_valid(self):
        valid = super(ColaboradorForm, self).is_valid()
        if not valid:
            return valid
        if not self.data["email"] and not self.data["telefono"]:
            return False
        return True

    def save(self, commit=True):
        colaborador = super(ColaboradorForm, self).save(commit=False)
        colaborador.geom = Point(self.cleaned_data['lon'],
                                 self.cleaned_data['lat'],
                                 srid=4326)
        colaborador.fuente = settings.FUENTE
        if commit:
            colaborador.save()
        enviar_correo_nuevo_colaborador.delay()
        return colaborador

    class Meta:
        model = Colaborador
        fields = '__all__'
        exclude = ['geom', 'fuente']
Example #12
0
class EntryForm(forms.Form):
    feedTime = forms.DateTimeField()
    feedType = forms.CharField(max_length=50)
    feedAmt = forms.FloatField()
    flockSize = forms.IntegerField()
    feedLoc = forms.PointField(widget=forms.OSMWidget(
        attrs={
            'map_width': 800,
            'map_height': 500,
            'default_lat': 48.427502,
            'default_lon': -123.367264
        }))
Example #13
0
class ComercioForm(forms.ModelForm):
    lat = forms.FloatField(required=False)
    lon = forms.FloatField(required=False)

    def clean_lat(self):
        lat = self.cleaned_data['lat']
        if not lat:
            raise ValidationError("Indica donde estás")
        return lat

    def save(self, commit=True):
        comercio = super(ComercioForm, self).save(commit=False)
        comercio.geom = Point(self.cleaned_data['lon'], self.cleaned_data['lat'], srid=4326)
        comercio.fuente = settings.FUENTE
        if commit:
            comercio.save()
        enviar_correo_nuevo_comercio.delay()
        return comercio

    class Meta:
        model = Comercio
        fields = '__all__'
        exclude = ['geom', 'fuente']
class Point3DFieldForm(forms.ModelForm):
    """Form class that allows entering a z coordinate for 3d point"""

    z_coord = forms.FloatField(label=_("Location (z)"), initial=0)

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields["location"].label = _("Location (x,y)")
        if self.instance.location:
            self.fields["z_coord"].initial = self.instance.location.z

    def clean(self):
        cleaned_data = super().clean()
        z_coord = cleaned_data.pop("z_coord", 0)
        location = cleaned_data["location"]
        cleaned_data["location"] = Point(
            location.x, location.y, z_coord, srid=settings.SRID
        )
        return cleaned_data
Example #15
0
class InspectionForm(forms.ModelForm):
    "Validate and clean Durham's inspection data"

    score = forms.FloatField(required=False)
    date = forms.DateTimeField(input_formats=DATE_FORMATS)
    update_date = forms.DateTimeField(input_formats=DATE_FORMATS)

    class Meta:
        model = Inspection
        fields = "__all__"

    def clean_score(self):
        # Force empty score value to None so we save to DB as NULL
        score = self.cleaned_data['score']
        if not score:
            score = None
        return score

    def clean_description(self):
        # Force API sent description strings of "NULL" to empty string
        description = self.cleaned_data['description']
        if description == 'NULL':
            description = ''
        return description
Example #16
0
class ShopSearchForm(forms.Form):
    text = forms.CharField(required=False)
    lat = forms.FloatField(required=False)
    lng = forms.FloatField(required=False)