Exemplo n.º 1
0
 def test_passing_map_attrs(self):
     field = LocationField(map_attrs={
         "some": "value",
         "and some": "cool value"
     })
     self.assertEqual(field.widget.map_attrs, {
         "some": "value",
         "and some": "cool value"
     })
Exemplo n.º 2
0
class AlumniSignUpForm(UserCreationForm):
    first_name = forms.CharField()
    last_name = forms.CharField(max_length=100)
    college = forms.ModelChoiceField(queryset=College.objects.all(),
                                     required=True)
    unique_id = forms.CharField(max_length=200)
    email = forms.EmailField()
    image = forms.ImageField()
    location = LocationField()
    phone = forms.CharField(max_length=20)

    class Meta(UserCreationForm.Meta):
        model = User

    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_alumni = True
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.full_name = self.cleaned_data[
            'first_name'] + " " + self.cleaned_data['last_name']
        user.email = self.cleaned_data['email']
        user.college = College.objects.get(name=self.cleaned_data['college'])
        user.profile_photo = self.cleaned_data['image']
        user.location = self.cleaned_data['location']
        user.phone = self.cleaned_data['phone']
        user.save()
        unique_id = self.cleaned_data['unique_id']
        first_name = self.cleaned_data['first_name']
        last_name = self.cleaned_data['last_name']
        email_address = self.cleaned_data['email']
        system_date_joined = datetime.datetime.now()

        alumni = Alumni.objects.create(
            user=user,
            unique_id=unique_id,
        )
        return user
Exemplo n.º 3
0
    def __init__(self, *args, **kwargs):
        super(HoDanForm, self).__init__(*args, **kwargs)
        self.fields["tinh"].queryset = Tinh.objects.order_by("name")

        self.fields['volunteer'] = ModelChoiceField(queryset=TinhNguyenVien.objects.all(), widget=Select2(), required=False)
        self.fields['cuuho'] = ModelChoiceField(queryset=CuuHo.objects.all(), widget=Select2(), required=False)

        self.fields['volunteer'].label_from_instance = self.label_from_volunteer
        self.fields['volunteer'].label = 'Tình nguyện viên'

        self.fields['cuuho'].label_from_instance = self.label_from_cuuho
        self.fields['cuuho'].label = 'Đội cứu hộ'

        self.fields["tinh"].label = "Tỉnh"
        self.fields["tinh"].help_text = "Nhấn vào để chọn tỉnh"

        self.fields["huyen"].label = "Huyện"
        self.fields["huyen"].help_text = "Bạn phải chọn tỉnh trước"

        self.fields["xa"].label = "Xã"
        self.fields["xa"].help_text = "Bạn phải chọn tỉnh, và huyện trước"

        self.fields['geo_location'] = LocationField(
            required=False,
            map_attrs={
                "style": "mapbox://styles/mapbox/outdoors-v11",
                "zoom": 10,
                "center": [106.507467036133, 17.572843459110928],
                "cursor_style": 'pointer',
                "marker_color": "red",
                "rotate": False,
                "geocoder": True,
                "fullscreen_button": True,
                "navigation_buttons": True,
                "track_location_button": True,
                "readonly": True,
                "placeholder": "Chọn một địa điểm trên bản đồ",
            }
        )
Exemplo n.º 4
0
class HoDanLocationForm(ModelForm):
    class Meta:
        model = HoDan
        fields = "__all__"
        exclude = ('thon',)

    geo_location = LocationField(
        required=False,
        map_attrs={
            "style": "mapbox://styles/mapbox/outdoors-v11",
            "zoom": 10,
            "center": [106.507467036133, 17.572843459110928],
            "cursor_style": 'pointer',
            "marker_color": "red",
            "rotate": False,
            "geocoder": True,
            "fullscreen_button": True,
            "navigation_buttons": True,
            "track_location_button": True,
            "readonly": True,
            "placeholder": "Chọn một địa điểm",
        }
    )
Exemplo n.º 5
0
class HoDanForm(ModelForm):
    class Meta:
        model = HoDan
        fields = "__all__"
        exclude = ('thon', ),
        labels = {
            "name": "Tiêu đề",
            "phone": "Số điện thoại",
        }
        widgets = {
            'note':
            Textarea(
                attrs={
                    'placeholder':
                    'Ví dụ:\n17:00 23/10: Có người lớn bị cảm cúm.\n20:39 23/10: Đã gọi xác minh bệnh.\n'
                }),
            'name':
            TextInput(attrs={'size': 50}),
            'phone':
            TextInput(attrs={'size': 50})
        }

    def __init__(self, *args, **kwargs):
        super(HoDanForm, self).__init__(*args, **kwargs)
        self.fields["tinh"] = ModelChoiceField(
            queryset=Tinh.objects.order_by("name"),
            widget=ModelSelect2Widget(
                model=Tinh,
                search_fields=['name__unaccent__icontains'],
                attrs={
                    'style': 'min-width:250px',
                    'data-minimum-input-length': 0
                }),
            required=False)

        self.fields["huyen"] = ModelChoiceField(
            queryset=Huyen.objects.order_by("name"),
            widget=ModelSelect2Widget(
                model=Huyen,
                search_fields=['name__unaccent__icontains'],
                dependent_fields={'tinh': 'tinh'},
                attrs={
                    'style': 'min-width:250px',
                    'data-minimum-input-length': 0
                }),
            required=False)

        self.fields["xa"] = ModelChoiceField(
            queryset=Xa.objects.order_by("name"),
            widget=ModelSelect2Widget(
                model=Xa,
                search_fields=['name__unaccent__icontains'],
                dependent_fields={'huyen': 'huyen'},
                attrs={
                    'style': 'min-width:250px',
                    'data-minimum-input-length': 0
                }),
            required=False)

        self.fields['volunteer'] = ModelChoiceField(
            queryset=TinhNguyenVien.objects.all(),
            widget=Select2(),
            required=False)
        self.fields['cuuho'] = ModelChoiceField(queryset=CuuHo.objects.all(),
                                                widget=Select2(),
                                                required=False)

        self.fields[
            'volunteer'].label_from_instance = self.label_from_volunteer
        self.fields['volunteer'].label = 'Tình nguyện viên'

        self.fields['cuuho'].label_from_instance = self.label_from_cuuho
        self.fields['cuuho'].label = 'Đội cứu hộ'

        self.fields["tinh"].label = "Tỉnh"
        self.fields["tinh"].help_text = "Nhấn vào để chọn tỉnh"

        self.fields["huyen"].label = "Huyện"
        self.fields["huyen"].help_text = "Bạn phải chọn tỉnh trước"

        self.fields["xa"].label = "Xã"
        self.fields["xa"].help_text = "Bạn phải chọn tỉnh, và huyện trước"

        self.fields['geo_location'] = LocationField(
            required=False,
            map_attrs={
                "style": "mapbox://styles/mapbox/outdoors-v11",
                "zoom": 10,
                "center": [106.507467036133, 17.572843459110928],
                "cursor_style": 'pointer',
                "marker_color": "red",
                "rotate": False,
                "geocoder": True,
                "fullscreen_button": True,
                "navigation_buttons": True,
                "track_location_button": True,
                "readonly": True,
                "placeholder": "Chọn một địa điểm trên bản đồ",
            })

    @staticmethod
    def label_from_volunteer(obj):
        status = _display_choices(TINHNGUYEN_STATUS, obj.status)
        return f"{obj.name} | {obj.phone} | {status}"

    @staticmethod
    def label_from_cuuho(obj):
        status = _display_choices(CUUHO_STATUS, obj.status)
        return f"{obj.name} | {obj.phone} | {status}"

    volunteer = ModelChoiceField(queryset=TinhNguyenVien.objects.all(),
                                 widget=Select2(),
                                 required=False,
                                 help_text="Tên | Số điện thoại | Trạng thái")
    cuuho = ModelChoiceField(queryset=CuuHo.objects.all(),
                             widget=Select2(),
                             required=False,
                             help_text="Tên | Số điện thoại | Trạng thái")

    geo_location = LocationField(required=False,
                                 map_attrs={
                                     "style":
                                     "mapbox://styles/mapbox/outdoors-v11",
                                     "zoom":
                                     10,
                                     "center":
                                     [106.507467036133, 17.572843459110928],
                                     "cursor_style":
                                     'pointer',
                                     "marker_color":
                                     "red",
                                     "rotate":
                                     False,
                                     "geocoder":
                                     True,
                                     "fullscreen_button":
                                     True,
                                     "navigation_buttons":
                                     True,
                                     "track_location_button":
                                     True,
                                     "readonly":
                                     True,
                                     "placeholder":
                                     "Chọn một địa điểm",
                                 })
Exemplo n.º 6
0
 def test_clean(self):
     field = LocationField()
     self.assertEqual("11,12", field.clean("12, 11"))
Exemplo n.º 7
0
 def test_error_messages(self):
     field = LocationField()
     self.assertEqual(field.error_messages["required"],
                      "Please pick a location, it's required")
Exemplo n.º 8
0
 def test_widget(self):
     field = LocationField()
     self.assertEqual(field.widget.__class__, MapInput().__class__)
Exemplo n.º 9
0
class ShopForm(forms.ModelForm):
    def clean_photo(self):
        photo = self.cleaned_data['photo']
        if photo is None:
            raise forms.ValidationError("Siusplau, afegeix una fotografia")
        size = getattr(photo, '_size', 0)
        if size > settings.MAX_UPLOAD_SIZE:
            raise forms.ValidationError(
                "Siusplau, la foto ha de tenir un tamany inferior a %s. Actualment %s"
                % (filesizeformat(
                    settings.MAX_UPLOAD_SIZE), filesizeformat(size)))
        return photo

    CIF = ESIdentityCardNumberField(
        only_nif=False,
        label='',
        widget=forms.TextInput(attrs={'placeholder': 'CIF'}))
    secondaryCategories = SelectCategoryField(
        queryset=models.SecondaryCategory.objects.all(),
        placeholder='Busca una categoria ...',
        is_loading=False,
        title="Filtra per categoria:")
    services = SelectCategoryField(queryset=models.Service.objects.all(),
                                   placeholder='Busca un servei ...',
                                   is_loading=False,
                                   title="Filtra per servei:",
                                   required=False)

    meanTime = RangeSliderField(
        label="",
        minimum=0,
        maximum=60,
        step=5,
        name="Quant temps passen els teus usuaris de mitjana?")

    map = LocationField(label='Mapa',
                        map_attrs={
                            "center": [2.1589899, 41.3887901],
                            "marker_color": "#ba6b6c",
                            'zoom': 10,
                            'placeholder': 'Tria una localització a sota'
                        })

    class Meta:
        model = models.Shop
        fields = [
            'CIF', 'name', 'description', 'meanTime', 'services',
            'secondaryCategories', 'photo'
        ]

        labels = {'name': '', 'description': '', 'photo': 'Foto'}

        help_text = {
            'CIF': 'CIF',
            'name': 'Name',
        }

        exclude = ['latitude', 'longitude']

        widgets = {
            'name':
            forms.TextInput(attrs={'placeholder': 'Nom de la botiga'}),
            'description':
            forms.Textarea(attrs={
                'rows': 4,
                'placeholder': 'Descripció'
            }),
            'photo':
            forms.FileInput(),
        }

    def clean(self):
        map = self.cleaned_data['map']
        if map is None:
            raise forms.ValidationError("Necesites unes coordenades")
        elif float(map.split(',')[0]) <= -180 or float(
                map.split(',')[0]) >= 180:
            raise forms.ValidationError("Longitude fora de rang")
        elif float(map.split(',')[1]) < -90 or float(map.split(',')[1]) >= 90:
            raise forms.ValidationError("Latitude fora de rang")
        else:
            pass
        return self.cleaned_data

    def is_add_shop(self):
        return True