def save(self, commit=True): instance = super(LocationForm, self).save(commit=False) location_data = reverse_geocode(instance.lat, instance.lng) for attr in ["country", "region", "city", "address"]: setattr(instance, attr, location_data.get(attr, "")) if commit: instance.save() return instance
def save(self, commit=True): instance = super(LocationForm, self).save(commit=False) location_data = reverse_geocode(instance.lat, instance.lng) for attr in ['country', 'region', 'city', 'address']: setattr(instance, attr, location_data.get(attr, '')) if commit: instance.save() return instance
def edit_contribution(request, contribution_pk=None, clone=False): """Edit a single contribution.""" user = request.user if request.is_ajax(): lat = request.GET.get('latitude') lng = request.GET.get('longitude') data = {'country': None, 'currency': None} location_data = reverse_geocode(lat, lng) country_code = location_data.get('country') if country_code: data['country'] = country_code country_name = dict(countries)[country_code] for currency, currency_data in moneyed.CURRENCIES.items(): if country_name.upper() in currency_data.countries: data['currency'] = currency break return JsonResponse(data) is_fxos = True other_device = None if not contribution_pk: activity = Activity.objects.get(name=FFXOS_ACTIVITY_NAME) contribution = Contribution(activity=activity, user=user) location = None extra = 1 else: if clone: contribution = get_object_or_404(Contribution, pk=contribution_pk) else: contribution = get_object_or_404(Contribution, pk=contribution_pk, user=user) location = contribution.location extra = 0 is_fxos = contribution.device.is_fxos other_device = model_to_dict(contribution.device) if not is_fxos else None location_form = forms.LocationForm(request.POST or None, instance=location) PlanFormset = inlineformset_factory(Contribution, Plan, formset=forms.BasePlanFormset, extra=extra, can_delete=False) device_form = DeviceForm(request.POST or None, initial=other_device) contribution_form = forms.ContributionForm(request.POST or None, is_fxos=is_fxos, instance=contribution, clone=clone) plan_formset = PlanFormset(request.POST or None, instance=contribution, clone=clone) if location_form.is_valid() and plan_formset.is_valid() and device_form.is_valid(): is_fxos = device_form.cleaned_data['is_fxos'] contribution_form = forms.ContributionForm(request.POST, instance=contribution, is_fxos=is_fxos, clone=clone) if contribution_form.is_valid(): location = location_form.save() obj = contribution_form.save(commit=False) obj.location = location if clone: obj.user = user if not is_fxos: device = device_form.save() obj.device = device obj.save() plan_formset.save() messages.success(request, 'Contribution successfully saved') contribution_form = forms.ContributionForm() location_form = forms.LocationForm() plan_formset = PlanFormset() return redirect(reverse('main:list_my_contributions')) return render(request, 'fxosprice_new.html', {'contribution_form': contribution_form, 'device_form': device_form, 'location_form': location_form, 'plan_formset': plan_formset, 'mapbox_id': settings.MAPBOX_MAP_ID, 'mapbox_token': settings.MAPBOX_TOKEN})
def edit_contribution(request, contribution_pk=None, clone=False): """Edit a single contribution.""" user = request.user if request.is_ajax(): lat = request.GET.get('latitude') lng = request.GET.get('longitude') data = {'country': None, 'currency': None} location_data = reverse_geocode(lat, lng) country_code = location_data.get('country') if country_code: data['country'] = country_code country_name = dict(countries)[country_code] for currency, currency_data in moneyed.CURRENCIES.items(): if country_name.upper() in currency_data.countries: data['currency'] = currency break return JsonResponse(data) is_fxos = True other_device = None if not contribution_pk: activity = Activity.objects.get(name=FFXOS_ACTIVITY_NAME) contribution = Contribution(activity=activity, user=user) location = None extra = 1 else: if clone: contribution = get_object_or_404(Contribution, pk=contribution_pk) else: contribution = get_object_or_404(Contribution, pk=contribution_pk, user=user) location = contribution.location extra = 0 is_fxos = contribution.device.is_fxos other_device = model_to_dict( contribution.device) if not is_fxos else None location_form = forms.LocationForm(request.POST or None, instance=location) PlanFormset = inlineformset_factory(Contribution, Plan, formset=forms.BasePlanFormset, extra=extra, can_delete=False) device_form = DeviceForm(request.POST or None, initial=other_device) contribution_form = forms.ContributionForm(request.POST or None, is_fxos=is_fxos, instance=contribution, clone=clone) plan_formset = PlanFormset(request.POST or None, instance=contribution, clone=clone) if location_form.is_valid() and plan_formset.is_valid( ) and device_form.is_valid(): is_fxos = device_form.cleaned_data['is_fxos'] contribution_form = forms.ContributionForm(request.POST, instance=contribution, is_fxos=is_fxos, clone=clone) if contribution_form.is_valid(): location = location_form.save() obj = contribution_form.save(commit=False) obj.location = location if clone: obj.user = user if not is_fxos: device = device_form.save() obj.device = device obj.save() plan_formset.save() messages.success(request, 'Contribution successfully saved') contribution_form = forms.ContributionForm() location_form = forms.LocationForm() plan_formset = PlanFormset() return redirect(reverse('main:list_my_contributions')) return render( request, 'fxosprice_new.html', { 'contribution_form': contribution_form, 'device_form': device_form, 'location_form': location_form, 'plan_formset': plan_formset, 'mapbox_id': settings.MAPBOX_MAP_ID, 'mapbox_token': settings.MAPBOX_TOKEN })