def main():
    mb = LocalClient('datacommons')
    
    sys.stdout.write("""<?xml version="1.0" encoding="utf-8"?>\n<sphinx:docset>\n""")
    
    for doc in mb.search(**{'_type': 'politician'}):
        
        data = {
            'id': doc['_suid'],
            'name': xmlclean(doc['name']),
            'type': doc['_type'],
        }
        
        if 'aliases' in doc:
            data['aliases'] = ', '.join((xmlclean(a) for a in doc['aliases']))
        else:
            data['aliases'] = ''
        
        content = """\t<sphinx:document id="%(id)s">\n\t\t<entity>%(name)s</entity>\n\t\t<aliases>%(aliases)s</aliases>\n\t\t<type>%(type)s</type>\n\t</sphinx:document>\n""" % data
        sys.stdout.write(content)
        
    sys.stdout.write("""</sphinx:docset>""")
def entity(request, uid=None):
    data = None
    if request.method == 'POST':
        if uid:
            key = client.update(uid,  **_querydict_to_dict(request.POST))
        else:
            try:
                key = client.insert(_querydict_to_dict(request.POST))
            except TypeError, e:
                return HttpResponseBadRequest(str(e))
        data = {'id':key}
    elif request.method == 'GET':
        if uid:
            data = client.get(uid)
        else:
            data = list(client.search(**_querydict_to_dict(request.GET)))

    return HttpResponse(json.dumps(_jsonize(data)))

@require_POST
def make_merge(request):
    name = request.POST.get('name')
    ids = request.POST.getlist('id')
    source = request.POST.get('source')
    _type = request.POST.get('type')

    if not name:
        return HttpResponseBadRequest('missing required parameter "name"')
    if not ids or len(ids) < 2:
        return HttpResponseBadRequest('must specify two or more id parameters to merge')