def handle(self, *args, **options): feedbacks = Feedback.objects.filter(Q(address_string__isnull=True) | Q(address_string__exact='')) for f in feedbacks: if f.lat == 0 or f.lon == 0: continue address = reverse_geocode(f.lat, f.lon) f.address_string = address f.save() logger.info('reverse geocoding complete')
def done(self, form_list, form_dict, **kwargs): # Just a small thing, but you could save a lot of typing by # just using a dict literal below. That is, instead of the empty # # data = {} # # just include all the known data points directly in the original # initialization: # data = { # 'status': 'moderation', # 'title': ... # ... # } # # At least I find it a lot more readable. # You can still put in the optional data using the data[key] = value syntax. # data = {} data["status"] = "moderation" data["title"] = form_dict["basic_info"].cleaned_data["title"] data["description"] = form_dict["basic_info"].cleaned_data["description"] data["service_code"] = form_dict["category"].cleaned_data["service_code"] data["service_name"] = Service.objects.get(service_code=data["service_code"]).service_name latitude = form_dict["closest"].cleaned_data["latitude"] longitude = form_dict["closest"].cleaned_data["longitude"] data["location"] = GEOSGeometry('SRID=4326;POINT(' + str(longitude) + ' ' + str(latitude) + ')') data["address_string"] = reverse_geocode(latitude, longitude) data["first_name"] = form_dict["contact"].cleaned_data["first_name"] data["last_name"] = form_dict["contact"].cleaned_data["last_name"] data["email"] = form_dict["contact"].cleaned_data["email"] data["phone"] = form_dict["contact"].cleaned_data["phone"] service_object_id = form_dict["closest"].cleaned_data["service_object_id"] if service_object_id: data["service_object_id"] = service_object_id data["service_object_type"] = "http://www.hel.fi/servicemap/v2" form_id = form_dict["closest"].cleaned_data["form_id"] new_feedback = Feedback(**data) fixing_time = calc_fixing_time(data["service_code"]) waiting_time = timedelta(milliseconds=fixing_time) if waiting_time.total_seconds() >= 0: new_feedback.expected_datetime = new_feedback.requested_datetime + waiting_time new_feedback.save() # Attach media urls to the feedback files = MediaFile.objects.filter(form_id=form_id) if files: attach_files_to_feedback(self.request, new_feedback, files) return render(self.request, 'feedback_form/done.html', {'form_data': [form.cleaned_data for form in form_list], 'waiting_time': waiting_time})
def done(self, form_list, form_dict, **kwargs): data = { "status": "moderation", "title": form_dict["basic_info"].cleaned_data["title"], "description": form_dict["basic_info"].cleaned_data["description"], "service_code": form_dict["category"].cleaned_data["service_code"], "first_name": form_dict["contact"].cleaned_data["first_name"], "last_name": form_dict["contact"].cleaned_data["last_name"], "email": form_dict["contact"].cleaned_data["email"], "phone": form_dict["contact"].cleaned_data["phone"] } data["service_name"] = Service.objects.get(service_code=data["service_code"]).service_name latitude = form_dict["closest"].cleaned_data["latitude"] longitude = form_dict["closest"].cleaned_data["longitude"] data["location"] = GEOSGeometry('SRID=4326;POINT(' + str(longitude) + ' ' + str(latitude) + ')') data["address_string"] = reverse_geocode(latitude, longitude) service_object_id = form_dict["closest"].cleaned_data["service_object_id"] if service_object_id: data["service_object_id"] = service_object_id data["service_object_type"] = "http://www.hel.fi/servicemap/v2" form_id = form_dict["closest"].cleaned_data["form_id"] new_feedback = Feedback(**data) fixing_time = calc_fixing_time(data["service_code"]) waiting_time = timedelta(milliseconds=fixing_time) if waiting_time.total_seconds() >= 0: new_feedback.expected_datetime = new_feedback.requested_datetime + waiting_time new_feedback.save() # Attach media urls to the feedback files = MediaFile.objects.filter(form_id=form_id) if files: attach_files_to_feedback(self.request, new_feedback, files) return render(self.request, 'feedback_form/done.html', {'form_data': [form.cleaned_data for form in form_list], 'waiting_time': waiting_time})