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')