def import_items(request): raw = request.POST.getlist('item') items = [] o={} o['imported_docs'] = [] o['existing_docs'] = [] for item in raw: items.append(json.loads(item,strict=False)) for doc_import in items: if not ZoteroLink.objects.filter(zotero_url=doc_import['url']): d = Document(creator=request.user, last_updater=request.user, description=doc_import['csl']) d.save() o['imported_docs'].append(d) link = ZoteroLink(zotero_data=json.dumps(doc_import['json']), zotero_url=doc_import['url'], doc_id=d.id) try: doc_import['date']['year'] link.date_information = json.dumps(doc_import['date']) except KeyError: pass link.save() else: existing_link = ZoteroLink.objects.filter(zotero_url=doc_import['url'])[0] o['existing_docs'].append(existing_link.doc) if doc_import['related_object'] == 'topic': related_topic = Topic.objects.get(id=int(doc_import['related_id'])) if TopicAssignment.objects.filter(document=d, topic=related_topic): pass else: new_assignment = TopicAssignment.objects.create(content_object=d, topic=related_topic, creator=request.user) new_assignment.save() return render_to_response( 'success.html', o, context_instance=RequestContext(request))
def import_items(request): if request.session.get('import_complete', False): return HttpResponse('Please only submit items once') item_data = request.POST.getlist('data') item_citations = request.POST.getlist('changed-citation') user = request.user o={} o['created_items'] = [] item_counter = 0 for item_data_string, updated_citation in zip(item_data, item_citations): item_counter += 1 action = request.POST.get('import-action-%s' % item_counter) if action not in ['create', 'update']: continue item_data = json.loads(item_data_string, object_pairs_hook=OrderedDict) if updated_citation: citation = updated_citation else: citation = item_data['citation'] if action == "create": d = Document(creator=user, last_updater=user, description=citation) d.save() elif action == "update": update_id = request.POST.get('item-update-%s' % item_counter) d = Document.objects.get(id=update_id) d.last_updated = datetime.datetime.now() d.last_updater = user d.save() if d.zotero_link(): d.zotero_link().delete() link = ZoteroLink(zotero_data=item_data['json'], zotero_url=item_data['url'], doc_id=d.id) try: item_data['date']['year'] link.date_information = json.dumps(item_data['date']) except KeyError: pass link.save() reltopic = request.GET.get('reltopic', False) if reltopic: related_topic = Topic.objects.get(id=int(reltopic)) new_assignment = TopicAssignment.objects.create( content_object=d, topic=related_topic, creator=user ) new_assignment.save() o['created_items'].append(d) request.session['import_complete'] = True redirect_url = request.GET.get('return_to', '/') return HttpResponseRedirect(redirect_url)
def update_link(request): if not request.is_ajax(): return HttpResponseBadRequest() doc_id = request.POST.get('doc_id') json_string = request.POST.get('zotero_info') doc_information = json.loads(json_string, strict=False) document = Document.objects.get(id=doc_id) if document.zotero_link(): document.zotero_link().delete() link = ZoteroLink(zotero_data=json.dumps(doc_information['json']), zotero_url=doc_information['url'], doc_id=document.id) try: doc_information['date']['year'] link.date_information = json.dumps(doc_information['date']) except KeyError: pass link.save() document.last_updated = datetime.datetime.now() document.save() return HttpResponse(document, mimetype='text/plain')