def add_question(request, slug): city = get_object_or_404(City, slug=slug) if request.method == 'POST': form = AddQuestionForm(request.POST) if form.is_valid(): laowai = request.user.get_profile() slug = get_slugify(form.cleaned_data['question']) while(NewQuestion.objects.filter(slug__iexact=slug).count()): current_number_suffix_match = re.search("\d+$", slug) current_number_suffix = current_number_suffix_match and current_number_suffix_match.group() or 0 next = str(int(current_number_suffix) +1) slug = re.sub("(\d+)?$", next, slug) creation_args = { 'question': form.cleaned_data['question'], 'description': form.cleaned_data['description'], 'owner': laowai, 'slug': slug, 'city': form.cleaned_data['city'], } question = NewQuestion.objects.create(**creation_args) url = reverse('question', args=[question.city.slug, question.slug]) return HttpResponseRedirect(url) else: form = AddQuestionForm() return render(request, "questions/forms/add_question.html", locals())
def add_place(request, slug): city = get_object_or_404(City, slug=slug) if request.method == "POST": form = AddPlaceForm(request.POST) if form.is_valid(): laowai = get_object_or_404(Laowai, user=request.user) slug = get_slugify(form.cleaned_data["name"]) while Place.objects.filter(slug__iexact=slug).count(): current_number_suffix_match = re.search("\d+$", slug) current_number_suffix = current_number_suffix_match and current_number_suffix_match.group() or 0 next = str(int(current_number_suffix) + 1) slug = re.sub("(\d+)?$", next, slug) if not form.cleaned_data["longitude"]: longitude = None else: longitude = form.cleaned_data["longitude"] if not form.cleaned_data["latitude"]: latitude = None else: latitude = form.cleaned_data["latitude"] creation_args = { "name": form.cleaned_data["name"], "chinese_name": form.cleaned_data["chinese_name"], "description": form.cleaned_data["description"], "location": form.cleaned_data["location"], "city": form.cleaned_data["city"], "owner": laowai, "slug": slug, "category": form.cleaned_data["category"], "longitude": longitude, "latitude": latitude, } place = NewPlace.objects.create(**creation_args) message = '%s has been added! You can <a href="%s">view it here</a>' % ( place.name, place.get_absolute_url(), ) set_message(request, message) redirect_url = reverse("places", args=[city.slug]) return HttpResponseRedirect(redirect_url) # if errors... else: form = AddPlaceForm(request.POST) return render(request, "places/forms/add_place.html", locals()) else: form = AddPlaceForm() return render(request, "places/forms/add_place.html", locals())