Example #1
0
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}
Example #2
0
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}