コード例 #1
0
 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')
コード例 #2
0
ファイル: views.py プロジェクト: tituomin/city-feedback-hub
    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})
コード例 #3
0
ファイル: views.py プロジェクト: hep7agon/city-feedback-hub
    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})