def create_venue_submission(): # validate form form = VenueForm(request.form) if not form.validate(): return render_template('forms/new_venue.html', form=form) # create venue error = False try: venue = Venue() venue.set_data(form_data=request.form) db.session.add(venue) db.session.commit() except: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash('An error occurred. Venue ' + request.form.get('name', '') + ' could not be listed.') else: flash('Venue ' + request.form.get('name', '') + ' was successfully listed!') return render_template('pages/home.html')
def create_venue_submission(): form = VenueForm(request.form) if form.validate_phone(form.phone): try: new_venue = Venue( name=form.name.data, city=form.city.data, state=form.state.data, address=form.address.data, phone=form.phone.data, genres=form.genres.data, facebook_link=form.facebook_link.data, image_link=form.image_link.data, website=form.website.data, seeking_talent=form.seeking_talent.data, seeking_description=form.seeking_description.data) Venue.create(new_venue) flash( 'Venue ' + request.form['name'] + ' was successfully listed!', "success") except: flash( 'Error occurred. Venue ' + form.name + ' could not be listed.', "danger") else: flash("Phone number is not valid", 'warning') return render_template('pages/home.html')
def create_venue_submission(): form = VenueForm() if form.validate_on_submit(): data = request.form try: is_seeking_talent = True if data['seeking_description'].strip( ) else False venue = Venue(name=data['name'], city=data['city'], state=data['state'], address=data['address'], genres=request.form.getlist('genres'), phone=data['phone'], image_link=data['image_link'], facebook_link=data['facebook_link'], website=data['website'], seeking_talent=is_seeking_talent, seeking_description=data['seeking_description']) db.session.add(venue) db.session.commit() flash(f'Venue {data["name"]} was successfully listed!') except: db.session.rollback() flash( f'An error occurred. Venue {data["name"]} could not be listed.' ) finally: db.session.close() return render_template('pages/home.html') # Flashing current errors for input, errors in form.errors.items(): flash(f'Invalid value for "{input}". {"".join(errors)}') return render_template('forms/new_venue.html', form=form)
def create_venue_submission(): form = VenueForm() if form.validate_on_submit(): try: venue = Venue( name=form.name.data, city=form.city.data, state=form.state.data, address=form.address.data, phone=form.phone.data, image_link=form.image_link.data if form.image_link.data else None, facebook_link=form.facebook_link.data if form.facebook_link.data else None, genres=form.genres.data, website=form.website.data if form.website.data else None, seeking_talent=True if form.seeking_talent_description.data else False, seeking_description=form.seeking_talent_description.data if form.seeking_talent_description.data else None) db.session.add(venue) db.session.commit() flash('Venue ' + form.name.data + ' was successfully listed!') return render_template('pages/home.html') except Exception: db.session.rollback() print(sys.exc_info()) flash('An error occurred. Venue ' + form.name.data + ' could not be listed.') return render_template('pages/home.html') finally: db.session.close() else: return render_template('forms/new_venue.html', form=form)
def create_venue(): """Either load the blank form or submit a filled form to create a new venue.""" form = VenueForm(request.form) if request.method == 'POST': if form.validate_on_submit(): venue = Venue(name=form.name.data, genres=json.dumps(form.genres.data), city=form.city.data, state=form.state.data, address=form.address.data, phone=form.phone.data, facebook_link=form.facebook_link.data, website=form.website.data, seeking_talent=form.seeking_talent.data, seeking_description=form.seeking_description.data, email=form.email.data) try: db.session.add(venue) db.session.commit() message = f'Venue {venue.name} was successfully listed!', 'info' except Exception as e: app.logger.error(e) db.session.rollback() message = f'An error occurred. Venue {venue.name} could not be listed.', 'danger' flash(*message) return redirect(url_for('index')) else: errors = form.errors for e in errors: flash(f'{e}: {errors[e][0]}', 'danger') return render_template('forms/new_venue.html', form=form)
def create_venue_submission(): error = False form = VenueForm() try: if form.validate_on_submit(): venue = Venue(name=form.name.data, city=form.city.data, state=form.state.data, address=form.address.data, phone=form.phone.data, image_link='', facebook_link=form.facebook_link.data, genres=form.genres.data, website=form.website.data, seeking_talent=form.seeking_talent.data, seeking_description=form.seeking_description.data) db.session.add(venue) db.session.commit() flash('Venue {} was successfully listed!'.format(form.name.data)) return redirect(url_for('index')) flash('An error occurred. Venue {} could not be listed. {}'.format( form.name.data, form.errors)) except (): db.session.rollback() error = True print(sys.exc_info()) finally: db.session.close() if error: abort(500) flash('There was an error, please try again.') return render_template('forms/new_venue.html')
def create_venue_submission(): venue = Venue() form = VenueForm() if not form.validate_on_submit(): flash('Invalid value found in ' + ', '.join(form.errors.keys()) + ' field(s).') return render_template('forms/new_venue.html', form=form) else: error = False try: form.populate_obj(venue) venue.phone = format_phone(venue.phone) db.session.add(venue) db.session.flush() venue_id = venue.id db.session.commit() except: error = True db.session.rollback() finally: db.session.close() if error: flash('An error occurred. Venue ' + venue.name + ' could not be listed.') return redirect(url_for('index')) else: flash('Venue ' + request.form['name'] + ' was successfully listed!') return redirect(url_for('show_venue', venue_id=venue_id))
def create_venue_submission(): # TODO: insert form data as a new Venue record in the db, instead # TODO: modify data to be the data object returned from db insertion # TODO: on unsuccessful db insert, flash an error instead. # e.g., flash('An error occurred. Venue ' + data.name + ' could not be listed.') # # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/ form = VenueForm(request.form, meta = {'csrf': False}) if form.validate(): try: venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except ValueError as e: print(e) flash('Error in listing venue. Please try again.') db.session.rollback() finally: db.session.close() else: err_msg = [] for field, err in form.errors.items(): err_msg.append(field + '-' + '|'.join(err)) flash('Errors: ' + str(err_msg)) return render_template('pages/home.html')
def create_venue_submission(): form = VenueForm() if form.validate_on_submit(): try: venue = Venue() venue.name = request.form['name'] venue.city = request.form['city'] venue.state = request.form['state'] venue.address = request.form['address'] venue.phone = request.form['phone'] venue.image_link = request.form['image_link'] venue.genres = request.form.getlist('genres') venue.facebook_link = request.form['facebook_link'] venue.website = request.form['website'] venue.seeking_talent = True if 'seeking_talent' in request.form else False venue.seeking_description = request.form['seeking_description'] db.session.add(venue) db.session.commit() except Exception as e: db.session.rollback() flash( 'An error occurred. Venue {} Could not be listed!, {}'.format( request.form['name'], str(e))) finally: db.session.close() flash('Venue {} was successfully listed!'.format( request.form['name'])) return redirect(url_for('venues')) return render_template('forms/new_venue.html', form=form)
def create_venue_submission(): # TODO: insert form data as a new Venue record in the db, instead # TODO: modify data to be the data object returned from db insertion form = VenueForm() name = form.name.data created = False if form.validate_on_submit(): try: attrs = {attr: getattr(form, attr).data for attr in VENUE_SIMPLE_ATTRS} genres = ",".join(x for x in form.genres.data) new_venue = Venue(**attrs, genres=genres) db.session.add(new_venue) db.session.commit() # on successful db insert, flash success created = True flash("Venue " + name + " was successfully listed!") except: print(sys.exc_info()) finally: db.session.close() if created: return redirect(url_for("index")) # TODO: on unsuccessful db insert, flash an error instead. # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/ flash("An error occurred. Venue " + name + " could not be listed.") return render_template("forms/new_venue.html", form=form)
def edit_venue_submission(venue_id): # TODO: take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes form = VenueForm(request.form) try: form.validate() venue = Venue.query.filter(Venue.id == venue_id).first() venue.name = form.name.data venue.city = form.city.data venue.state = form.state.data.name venue.address = form.address.data venue.genres = [genre.name for genre in form.genres.data] venue.phone = form.phone.data venue.image_link = form.image_link.data venue.facebook_link = form.facebook_link.data venue.website = form.website.data venue.seeking_talent = form.seeking_talent.data venue.seeking_description = form.seeking_description.data db.session.commit() except Exception as e: print(e) db.session.rollback() finally: db.session.close() return redirect(url_for('show_venue', venue_id=venue_id))
def create_venue_submission(): """ Submit callback for venue create form """ # Get the form data name = request.form['name'] city = request.form['city'] state = request.form['state'] address = request.form['address'] phone = request.form['phone'] image_link = request.form['image_link'] facebook_link = request.form['facebook_link'] website = request.form['website'] seeking_talent = request.form['seeking_talent'] == 'Yes' seeking_description = request.form['seeking_description'] # genres is a list genres = request.form.getlist('genres') error = False form = VenueForm() # Validate form data if not form.validate_on_submit(): flash(form.errors) # Redirect to the new_venue.html page with the error message in the above line return redirect(url_for('create_venue_submission')) try: # Create a venue instance using form data venue = Venue( name=name, city=city, state=state, address=address, phone=phone, image_link=image_link, facebook_link=facebook_link, website=website, seeking_talent=seeking_talent, seeking_description=seeking_description ) db.session.add(venue) # Creating Venue generes instances and assigning using backref for genre in genres: new_genre = VenuesGenres(genre=genre) new_genre.venue = venue # backref db.session.add(new_genre) db.session.commit() except Exception as err: print(err) db.session.rollback() error = True finally: db.session.close() if error: flash(f'An error occurred. Venue {name} could not be listed.') abort(500) flash(f'Venue {name} listed successfully') return render_template('pages/home.html')
def create_venue_submission(): # insert form data as a new Venue record in the db, instead # modify data to be the data object returned from db insertion # see: http://flask.pocoo.org/docs/1.0/patterns/flashing/ form = VenueForm(request.form, meta={"csrf": False}) if form.validate_on_submit(): try: venue: Venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() # on successful db insert, flash success flash(f"Venue {request.form['name']} was successfully listed!") except ValueError as e: print(sys.exc_info()) db.session.rollback() # on unsuccessful db insert, flash an error instead. flash(f"An error occurred: {str(e)}") finally: db.session.close() else: error_msg = [] for field, error in form.errors.items(): error_msg.append(f"{field}: {str(error)}") flash(f"Error occurred: {str(error_msg)}") return render_template('pages/home.html')
def edit_venue_submission(venue_id): try: request_data = {**request.form} request_data['genres'] = ','.join(request.form.getlist('genres') or []) request_data['seeking_talent'] = (request_data.get('seeking_talent') or '').lower() == 'y' form = VenueForm(**request_data) if not form.validate_on_submit(): venue = Venue.query.filter_by(id=venue_id).first() return render_template('forms/edit_venue.html', form=form, venue=venue) request_data.pop('csrf_token', None) Venue.query.filter_by(id=venue_id).update(request_data) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully updated!') except: flash('Venue ' + request.form['name'] + ' was not updated!') db.session.rollback() finally: db.session.close() return redirect(url_for('show_venue', venue_id=venue_id))
def edit_venue_submission(venue_id): venue = Venue.query.get(venue_id) if venue is None: abort(404) name = venue.name form = VenueForm() if not form.validate_on_submit(): flash('Invalid value found in ' + ', '.join(form.errors.keys()) + ' field(s).') return render_template('forms/edit_venue.html', form=form, venue=venue) else: error = False try: edited = Venue() form.populate_obj(edited) for col in Venue.__table__.columns.keys(): if col != 'id': setattr(venue, col, getattr(edited, col)) name = venue.name venue.phone = format_phone(venue.phone) db.session.commit() except: error = True db.session.rollback() finally: db.session.close() if error: flash('An error occurred. Venue ' + name + ' could not be updated.') return redirect(url_for('index')) else: flash('Venue ' + name + ' was successfully updated!') return redirect(url_for('show_venue', venue_id=venue_id))
def edit_venue_submission(venue_id): form = VenueForm() if form.validate_on_submit(): data = request.form try: is_seeking_talent = True if data['seeking_description'].strip( ) else False venue = Venue.query.get(venue_id) venue.name = data['name'] venue.city = data['city'] venue.state = data['state'] venue.address = data['address'] venue.genres = request.form.getlist('genres') venue.phone = data['phone'] venue.image_link = data['image_link'] venue.facebook_link = data['facebook_link'] venue.website = data['website'] venue.seeking_talent = is_seeking_talent venue.seeking_description = data['seeking_description'] db.session.commit() flash(f'Venue {data["name"]} was successfully edited!') except: db.session.rollback() flash( f'An error occurred. Venue {data["name"]} could not be edited.' ) finally: db.session.close() # Flashing form validation errors for input, errors in form.errors.items(): flash(f'Invalid value for "{input}". {"".join(errors)}') return redirect(url_for('show_venue', venue_id=venue_id))
def create_venue_submission(): form = VenueForm(request.form) if form.validate(): try: venue = Venue() form.populate_obj(venue) db.session.add(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except ValueError as e: flash('An error occurred. Venue ' + request.form['name'] + ' could not be listed.') db.session.rollback() print(e) finally: db.session.close() else: #Get validation messages message = [] for field, err in form.errors.items(): message.append(field + '' + '|'.join(err)) flash('Errors ' + str(message)) return render_template('pages/home.html')
def edit_venue_submission(venue_id): form = VenueForm(request.form) # TODO: take values from the form submitted, and update existing if form.validate_on_submit(): try: a = db.session.query(Venue).get(venue_id) a.name = form.name.data a.city = form.city.data a.state = form.state.data a.phone = form.phone.data a.address = form.address.data a.facebook_link = form.facebook_link.data a.genres = form.genres.data a.image_link = form.image_link.data a.website = form.website.data a.seeking_talent = bool(form.seeking_talent.data) a.seeking_description = form.seeking_description.data db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully updated!') # TODO: on unsuccessful db insert, flash an error instead. except: flash('An error occurred. Venue ' + form.name.data + ' could not be updated.') db.session.rollback() print(sys.exc_info()) finally: db.session.close() return redirect(url_for('show_venue', venue_id=venue_id)) else: print(form.errors) return render_template('forms/edit_venue.html', form=form)
def edit_venue_submission(venue_id): # TODO: take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes error = False form = VenueForm() venue = Venue.query.get(venue_id) if venue is None: abort(404) try: if form.validate_on_submit(): form.populate_obj(venue) venue.genres = ','.join(form.genres.data) db.session.commit() else: error = True for fieldName, errorMessages in form.errors.items(): for err in errorMessages: print(err, file=sys.stdout) except: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash('Error!') return render_template('forms/edit_venue.html', form=form, venue=venue) else: flash('Venue Id : ' + str(venue_id) + ' edited!') return redirect(url_for('show_venue', venue_id=venue_id))
def edit_venue(venue_id): vn = Venue.query.get(venue_id) venue = { "id": vn.id, "name": vn.name, "address": vn.address, "city": vn.city, "state": vn.state, "phone": vn.phone, "website": vn.website, "facebook_link": vn.facebook_link, "seeking_talent": vn.seeking_talent, "seeking_description": vn.seeking_description, "image_link": vn.image_link, "genres": [g.id for g in vn.genres] } form = VenueForm(**venue) error_msg = '' form.validate() for key, val in form.errors.items(): if key != 'csrf_token': error_msg += key + ": " + ';'.join(val) if error_msg: flash( 'There are few errors in the old venue info. Please fix them first! ' + error_msg) return render_template('forms/edit_venue.html', form=form, venue=venue)
def create_venue_submission(): error = False form = VenueForm() # Form validation if not form.validate(): for fieldName, errorMessages in form.errors.items(): show_form_errors(fieldName, errorMessages) return redirect(url_for('create_venue_form')) # Get data name = request.form['name'] city = request.form['city'] state = request.form['state'] address = request.form['address'] phone = request.form['phone'] genres = request.form.getlist('genres') image_link = request.form['image_link'] facebook_link = request.form['facebook_link'] website = request.form['website'] seeking_talent = True if 'seeking_talent' in request.form else False seeking_description = request.form['seeking_description'] try: # Create model venue = Venue( name=name, city=city, state=state, address=address, phone=phone, genres=genres, image_link=image_link, facebook_link=facebook_link, website=website, seeking_talent=seeking_talent, seeking_description=seeking_description, ) # Update DB db.session.add(venue) db.session.commit() except Exception: error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() # Show banner if error: abort(400) flash('An error occurred. Venue ' + name + ' could not be listed.', 'danger') if not error: flash('Venue ' + name + ' was successfully listed!', 'success') return render_template('pages/home.html')
def edit_venue(venue_id): venue = Venue.query.get(venue_id) form = VenueForm(obj=venue) if form.validate(): form.populate_obj(venue) # TODO: populate form with values from venue with ID <venue_id> return render_template("forms/edit_venue.html", form=form, venue=venue)
def edit_venue(venue_id): form = VenueForm() venue = Venue.find(venue_id) if venue is None: return abort(404) else: form = VenueForm(data=venue) return render_template('forms/edit_venue.html', form=form, venue=venue)
def create_venue_submission(): # TODO: insert form data as a new Venue record in the db, instead # TODO: modify data to be the data object returned from db insertion form = VenueForm() if form.validate_on_submit(): form = VenueForm() if bool( VenueLocation.query.filter_by( city=request.form['city']).first()) == False: city = request.form['city'] state = request.form['state'] try: location = VenueLocation(state=state, city=city) db.session.add(location) db.session.commit() except: db.session.rollback() flash('Oops! incorrect city/state value. Venue ' + request.form['name'] + ' could not be listed.') finally: db.session.close() try: name = request.form['name'] genres = form.genres.data city = request.form['city'] address = request.form['address'] phone = request.form['phone'] image_link = "https://i.ibb.co/31v1Gfq/no-image.png" if form.image_link.data == '' else request.form[ 'image_link'] website = request.form['website'] facebook_link = request.form['facebook_link'] seeking_talent = True if form.seeking_talent.data == 'Yes' else False seeking_description = request.form['seeking_description'] venue = Venue(name=name, genres=genres, city=city, address=address, phone=phone, image_link=image_link, website=website, facebook_link=facebook_link, seeking_talent=seeking_talent, seeking_description=seeking_description) db.session.add(venue) db.session.commit() flash('Venue ' + request.form['name'] + ' was successfully listed!') except: db.session.rollback() flash('Oops! An error ' + str(sys.exc_info()[0]) + ' ocurred. Venue ' + request.form['name'] + ' could not be listed.') finally: db.session.close() return render_template('pages/home.html') else: return render_template('forms/new_venue.html', form=form)
def edit_venue_submission(venue_id): # LASTXX: take values from the form submitted, and update existing # venue record with ID <venue_id> using the new attributes form = VenueForm() name = form.name.data city = form.city.data state = form.state.data address = form.address.data phone = form.phone.data genres = form.genres.data facebook_link = form.facebook_link.data image_link = form.image_link.data web_site = form.web_site.data seeking_talent = True if form.seeking_talent.data == 'Yes' else False seeking_description = form.seeking_description.data if not form.validate(): flash(form.errors) return redirect(url_for('edit_venue_submission', venue_id=venue_id)) else: error_in_update = False try: venue = Venue.query.get(venue_id) venue.name = name venue.city = city venue.state = state venue.address = address venue.phone = phone venue.seeking_talent = seeking_talent venue.seeking_description = seeking_description venue.image_link = image_link venue.web_site = web_site venue.facebook_link = facebook_link venue.genres = [] for genre in genres: venue.genres.append(genre) db.session.commit() except Exception: error_in_update = True print(f'Exception "{Exception}" in edit_venue_submission()') db.session.rollback() finally: db.session.close() if not error_in_update: # on successful db update, flash success flash('Venue ' + request.form['name'] + ' was successfully updated!') return redirect(url_for('show_venue', venue_id=venue_id)) else: flash('An error occurred. Venue ' + name + ' could not be updated.') print("Error in edit_venue_submission()") return render_template('errors/500.html')
def addvenue(): form = VenueForm() if form.validate_on_submit(): add_venue('aditya166', str(form.venue_name.data), form.venue_open.data, form.venue_close.data, str(form.zip_code.data), str(form.city.data), str(form.address.data)) flash(f'Venue has been successfully added', 'success') return redirect(url_for('about')) return render_template('addvenue.html', title='Add Venue', form=form)
def edit_place(request, place_id=None): # if place_id: # place = if request.method == "POST": form = VenueForm(request.POST) if form.is_valid(): pass else: form = VenueForm() return render_to_response("accounts/makeplace.html", {"form": form}, context_instance=RequestContext(request))
def new_venue(): """createVenue view.""" form = VenueForm() if form.validate_on_submit(): venue = models.Venue(postcode=form.postcode.data, city=form.city.data, name=form.name.data, description=form.description.data, venueId=form.venueId.data, street=form.street.data, number=form.number.data, lat=form.lat.data, long=form.long.data, location = db.GeoPt(float(form.lat.data), float(form.long.data))) venue.update_location() venue = venue.put() flash('Venue saved.') return redirect(url_for('list_venues')) return render_template('create_venue.html', form=form)
def edit_venue_submission(venue_id): venue = Venue.query.get(venue_id) form = VenueForm(request.form) # maybe need obj=venue param? form.populate_obj(venue) db.session.add(venue) db.session.commit() flash("Venue " + request.form["name"] + " was successfully updated!") return redirect(url_for("show_venue", venue_id=venue_id))
def edit_venue_submission(venue_id): form = VenueForm(request.form) # fix to get all selected values from form. data = request.form error = False print(json.dumps(data, indent=4)) if form.validate_on_submit(): # Get City info city_name = data.get('city') city_state = data.get('state', 'AL') city_id = City.get_id(city_state=city_state, city_name=city_name) if city_id is None: error = True # Get other fields name = data.get('name') address = data.get('address') phone = format_phone_number(data.get('phone')) image_link = data.get('image_link') genres = format_genres(data) facebook_link = data.get('facebook_link') website = data.get('website') seeking_talent = True if data.get('seeking_talent') else False seeking_description = data.get('seeking_description') try: venue = Venue.query.get(venue_id) venue.name = name venue.city_id = city_id venue.address = address venue.phone = phone venue.image_link = image_link venue.genres = genres venue.facebook_link = facebook_link venue.website = website venue.seeking_talent = seeking_talent venue.seeking_description = seeking_description db.session.commit() flash('Venue ' + name + ' was successfully updated!') except: db.session.rollback() print(sys.exc_info()) flash('An error occurred. Venue ' + name + ' could not be updated.') error = True finally: db.session.close() else: error = True if error: return abort(500) else: return redirect(url_for('show_venue', venue_id=venue_id))
def create_venue_submission(): """Creates a new venue in the db from a form submission. Returns: The template for a list of all venues """ form = VenueForm() if not form.validate(): flash( list(form.errors.values())[0][0], "error", ) return redirect(url_for("create_venue_form")) error = False try: venue_name = request.form.get("name") city = request.form.get("city") state = request.form.get("state") venue = Venue( name=venue_name, genres=get_genres(request.form.getlist("genres")), address=request.form.get("address"), area_id=get_area_id(city, state), phone=request.form.get("phone"), website=request.form.get("website"), facebook_link=request.form.get("facebook_link"), seeking_talent=bool(request.form.get("seeking_talent")), seeking_description=request.form.get("seeking_description"), image_link=request.form.get("image_link"), ) db.session.add(venue) db.session.commit() venue_id = venue.id except Exception: # pylint: disable=broad-except error = True db.session.rollback() print(sys.exc_info()) finally: db.session.close() if error: flash(f"Venue {venue_name} was unable to be listed!", "error") abort(500) flash(f"Venue {venue_name} was successfully listed!") return redirect(url_for("show_venue", venue_id=venue_id))
def create_venue(request): if request.POST: form = VenueForm(request.POST) if form.is_valid(): form.save() return HttpResponseRedirect('/') else: form = VenueForm() args = {} args.update(csrf(request)) args['form'] = form return render_to_response('create_venue.html', args)
def expert_settings(request): user = request.user places = user.place.all() try: expert = user.expert.all()[0] except: expert = None if request.method == "POST": from accounts.forms import VenueForm from places.models import Place post_data = request.POST place_form = VenueForm(post_data) form = ExpertForm(request.POST, instance=expert) if form.is_valid(): if post_data["place"] == "-1": if place_form.is_valid(): place = place_form.save(request) else: raise Exception("place not valid?") else: place = Place.objects.get(pk=int(post_data["place"])) expert = form.save(commit=False) expert.user = user expert.place = place if post_data.get("active", False): expert.privacy = "a" expert.save() return HttpResponseRedirect("/users/%s/expert" % (request.user.username)) else: form = ExpertForm(instance=expert) return render_to_response( "accounts/expert_settings.html", {"expert": expert, "form": form, "places": places}, context_instance=RequestContext(request), )