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 birthdays(request): months = map(_, MONTHS_ABBR) by_month = defaultdict(list) contacts = request.db.contacts.find().sort('birth_day') for contact in contacts: m = contact['birth_month'] url = request.route_url('view', contact_id=contact['_id']) item = {'name': get_full_name(contact), 'url': url, 'birthdate': get_birthdate(contact, request)} if not m: by_month['unknown'].append(item) else: by_month[m].append(item) return {'api': TemplateAPI(request, _('Birthdays')), 'by_month': by_month, 'months': months}