def view(request, form=None): obj_id = ObjectId(request.matchdict.get('contact_id')) contact = request.db.contacts.find_one({'_id': obj_id}) full_name = get_full_name(contact) birthdate = get_birthdate(contact, request) links = {} linked_contacts = [] for linked_id in get_linked_contact_ids(request.db, obj_id): linked_contact = request.db.contacts.find_one({'_id': linked_id}) linked_contacts.append(linked_contact) links[str(linked_id)] = get_full_name(linked_contact) if form is None: action = request.route_url('edit', contact_id=obj_id) contact['links'] = links.keys() form_data = contact.copy() form_data['coord'] = ', '.join(map(str, form_data['coord'])) form = make_edit_form(request, action) form = form.render(form_data) edit_error = False else: form = form.render() edit_error = True label_of = lambda field_name: ContactSchema()[field_name].title return {'api': TemplateAPI(request, full_name), 'contact': contact, 'get_full_name': get_full_name, 'birthdate': birthdate, 'links': linked_contacts, 'form': form, 'edit_error': edit_error, 'label_of': label_of}
def edit(request): obj_id = ObjectId(request.matchdict.get('contact_id')) action = request.route_url('edit', contact_id=obj_id) form = make_edit_form(request, action) try: data = form.validate(request.POST.items()) except ValidationFailure, e: return view(request, e)