Пример #1
0
def edit_fulladdress(request):
    print "edit full"
    user_profile = request.user.user_profile
    saved = False
    new_address_parts = {
        'city': False,
        'address': False
    }

    if request.method == 'POST':
        print "Request method is PPOST"
        form = FullAddressForm(request.POST)

        if form.is_valid():
            print "Form is valid"
            # Address : address and city
            city_data = {
                'name': form.cleaned_data['city'],
                'zipcode': form.cleaned_data['zipcode'],
                'country': form.cleaned_data['country']
            }

            # Check if we can get this city
            # If the city doesn't exist, we try to create it, but data may be incomplete
            try:
                city = City.objects.get(**city_data)
            except ObjectDoesNotExist:
                try:
                    city = CityForm(data=city_data).save()
                    if city is not None:
                        new_address_parts['city'] = True
                        new_address_parts['city_name'] = city.__str__()
                except ValueError:
                    city = None

            if city is not None:
                address_data = {
                    'num': form.cleaned_data['num'],
                    'street': form.cleaned_data['street'],
                    'city': city.pk,
                }

                try:
                    address = Address.objects.get(**address_data)
                except ObjectDoesNotExist:
                    try:
                        address = AddressForm(data=address_data).save()
                        print "SAVe address"
                        new_address_parts['address'] = True
                    except ValueError:
                        address = None
            else:
                address = None

            user_profile.address = address
            user_profile.save()
            saved = True

        else:
            return render(request, 'forms/self_edit/address.html',
                          {'form': form})

    init_data = {}

    if user_profile.address is not None:
        user_address = Address.objects.get(pk=user_profile.address.pk)
        user_city = City.objects.get(pk=user_address.city.pk)
        init_data.update({
            'num': user_address.num,
            'street': user_address.street,
            'city': user_city.name,
            'zipcode': user_city.zipcode,
            'country': user_city.country,
        })

        return render(request, 'forms/self_edit/address.html',
                      {
                          'form': FullAddressForm(initial=init_data),
                          'notice_saved': saved,
                          'new_address_parts': new_address_parts
                      })
    else:
        return render(request, 'forms/self_edit/address.html',
                      {
                          'form': FullAddressForm(),
                          'notice_saved': False
                      })