def add(request): try: extra_hours = int(request.GET["eh"]) except: extra_hours = 7 HourFormSet = formset_factory(HourForm, extra=extra_hours) if request.method == "POST": form = RestaurantForm(request.POST) hfs = HourFormSet(request.POST) slug = slugify(form.data.get("name")) original = None try: original = Restaurant.objects.all().get(slug=slug) except: pass if original: #Add an error to the name field. form.errors["name"] = ErrorList(["Name has already been taken"]) if form.is_valid() and hfs.is_valid() and original != None: model = form.save(commit=False) model.slug = slugify(model.name) model.user = request.user model.save() for hour in hfs.forms: hmodel = hour.save(commit=False) if not hmodel.open_time: continue hmodel.restaurant = model hmodel.save() return HttpResponseRedirect(model.get_absolute_url()) else: form = RestaurantForm() hfs = HourFormSet() return render_to_response("restaurants/add.html", {'form': form, 'hfs':hfs, 'extra_hours':extra_hours+1}, context_instance=RequestContext(request))
def post(self, request, *args, **kwargs): restaurant_form = RestaurantForm(request.POST, request.FILES, prefix='restaurant') address_form = AddressForm(request.POST, prefix='address') if not (restaurant_form.is_valid() and address_form.is_valid()): return render(request, 'business/signup.html', {'restaurant_form': restaurant_form, 'address_form': address_form}) restaurant = restaurant_form.save(commit=False) restaurant.baseUser = request.user restaurant.save() address = address_form.save(commit=False) address.restaurant = restaurant address.save() return HttpResponseRedirect(reverse('business:RestaurantPage'))