def delete_study(request, pk): try: study = Study.objects.get(pk=pk) except ObjectDoesNotExist: msg = "Error study matching query does not exist." messages.add_message(request, messages.ERROR, ugettext(msg)) return redirect('/lifespan/studies/') form = DeleteStudyForm(request.POST or None) if request.method == "POST" and form.is_valid: if 'cancel' in request.POST: return redirect('/lifespan/study/%s' % pk) else: with reversion.create_revision(): try: if 'delete_study' in request.POST: study.delete() if 'delete_reference' in request.POST: study.delete() study.reference.delete() except AttributeError: msg = "Error study did not have a reference associated." messages.add_message(request, messages.ERROR, ugettext(msg)) reversion.set_user(request.user) comment = request.POST['comment'] or "Deleted study" reversion.set_comment(comment) log(request, study, comment) return redirect('/lifespan/studies/') ctx = {'study': study, 'form': form} return render_to_response('lifespan/delete_study.html', ctx, context_instance=RequestContext(request))
def form_valid(self, form): with reversion.create_revision(): self.object = form.save(commit=False) if isinstance(self.request.user, AnonymousUser): self.request.user = User.objects.get(username='******') self.object.user = self.request.user comment = self.request.POST['comment'] or self.comment reversion.set_comment(comment) self.object.comment = comment self.object.save() log(self.request, self.object, comment, 1) comment = self.request.POST['comment'] or "Engaged quest" relation = Relation(fr=self.quest, to=self.object, be=Entry.objects.get(title='solved by')) relation.user = self.request.user relation.save() log(self.request, relation, comment, 1) reversion.set_user(self.request.user) form.save_m2m() self.success_url = self.success_url or self.object.get_absolute_url( ) messages.add_message(self.request, messages.SUCCESS, _(self.message % self.object)) return HttpResponseRedirect(self.get_success_url())
def edit(request, pk): if request.method == 'GET': post = Post.objects.get(pk__exact=pk) form = PostForm(instance=post) Post.text = post.text elif request.method == 'POST': post = Post.objects.get(pk__exact=pk) # Tracking changes: changes = [] if post.title != request.POST['title']: s1 = post.title s2 = request.POST['title'] changes.append( 'title (%s)' % "".join(["-"] + s1.split(s2) if len(s1) > len(s2) else ["+"] + s2.split(s1))) if post.text != request.POST['text']: changes.append('text') if set([tag.name for tag in post.tags.all()]) != set( request.POST['tags'].split(', ')): changes.append('tags') if "images" in request.POST: dict = {} dict.update(request.POST) pre_images = set(dict['images']) post_images = set( [unicode(image.pk) for image in post.images.all()]) if pre_images != post_images: changes.append('images (%s)' % "; ".join(pre_images - post_images)) if "published" in request.POST: if not post.published: changes.append('published to True') elif post.published: changes.append('published to False') form = PostForm(request.POST, instance=post) if form.is_valid(): if changes: with reversion.create_revision(): post = form.save(commit=False) post.updater = request.user form.save() reversion.set_user(request.user) comment = 'Changed %s. %s' % ( ', '.join(changes), request.POST['comment'] or '') reversion.set_comment(comment) log(request, post, comment) else: post = form.save(commit=False) post.updater = request.user form.save() return HttpResponseRedirect('/blog/%s' % pk) return render_to_response('blog/edit.html', {'form': form}, context_instance=RequestContext(request))
def edit_experiment(request, pk): experiment = Experiment.objects.get(pk=pk) form = ExperimentForm(request.POST or None, instance=experiment) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect("/lifespan/experiments/") with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST["comment"] or "Changed experiment" reversion.set_comment(comment) log(request, experiment, comment) return redirect("/lifespan/experiment/%s" % pk) ctx = {"experiment": experiment, "form": form} return render_to_response("lifespan/edit_experiment.html", ctx, context_instance=RequestContext(request))
def form_valid(self, form): with reversion.create_revision(): self.object = form.save(commit=False) if isinstance(self.request.user, AnonymousUser): self.request.user = User.objects.get(username="******") comment = self.request.POST["comment"] or self.comment reversion.set_comment(comment) self.object.comment = comment self.object.save() log(self.request, self.object, comment, 1) reversion.set_user(self.request.user) form.save_m2m() self.success_url = self.success_url or self.object.get_absolute_url() messages.add_message(self.request, messages.SUCCESS, _(self.message % self.object)) return HttpResponseRedirect(self.get_success_url())
def delete_intervention(request, pk): intervention = Intervention.objects.get(pk=pk) form = DeleteInterventionForm(request.POST or None) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect("/lifespan/intervention/%s" % pk) elif "delete" in request.POST: with reversion.create_revision(): intervention.delete() comment = request.POST["comment"] or "Delete intervention" reversion.set_comment(comment) log(request, intervention, comment) return redirect("/lifespan/interventions/") ctx = {"intervention": intervention, "form": form} return render_to_response("lifespan/delete_intervention.html", ctx, context_instance=RequestContext(request))
def edit_factor(request, pk): factor = Factor.objects.get(pk=pk) form = FactorForm(request.POST or None, instance=factor) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect("/lifespan/factor/%s" % pk) with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST["comment"] or "Changed factor" reversion.set_comment(comment) log(request, factor, comment) return redirect("/lifespan/factor/%s" % pk) ctx = {"factor": factor, "form": form, "action": "Edit"} return render_to_response("lifespan/factor_form.html", ctx, context_instance=RequestContext(request))
def delete(self, request, *args, **kwargs): #print("data.views.Delete.delete()") with reversion.create_revision(): self.object = self.get_object() if isinstance(self.request.user, AnonymousUser): self.request.user = User.objects.get(username='******') self.object.user = self.request.user comment = self.request.POST['comment'] or self.comment reversion.set_comment(comment) self.object.delete() log(self.request, self.object, comment, 3) reversion.set_user(self.request.user) self.success_url = self.success_url or self.object.get_absolute_url() messages.add_message(self.request, messages.SUCCESS, _(self.message % self.object)) return HttpResponseRedirect(self.get_success_url())
def edit_factor(request, pk): factor = Factor.objects.get(pk=pk) form = FactorForm(request.POST or None, instance=factor) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/lifespan/factor/%s' % pk) with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed factor" reversion.set_comment(comment) log(request, factor, comment) return redirect('/lifespan/factor/%s' % pk) ctx = {'factor': factor, 'form': form, 'action': 'Edit'} return render_to_response('lifespan/factor_form.html', ctx, context_instance=RequestContext(request))
def handlePopAdd(request, addForm, field, template="form/popadd.html"): if request.method == "POST": form = addForm(request.POST) if form.is_valid(): try: with reversion.create_revision(): newObject = form.save() reversion.set_user(request.user) comment = request.POST['comment'] or 'Added.' reversion.set_comment(comment) log(request, newObject, comment) except forms.ValidationError, error: newObject = None if newObject: return HttpResponse('<script type="text/javascript">opener.dismissAddAnotherPopup(window, "%s", "%s");</script>' %\ (escape(newObject._get_pk_val()), escape(newObject)))
def delete_intervention(request, pk): intervention = Intervention.objects.get(pk=pk) form = DeleteInterventionForm(request.POST or None) if request.method == "POST" and form.is_valid(): if 'cancel' in request.POST: return redirect('/lifespan/intervention/%s' % pk) elif 'delete' in request.POST: with reversion.create_revision(): intervention.delete() comment = request.POST['comment'] or "Delete intervention" reversion.set_comment(comment) log(request, intervention, comment) return redirect('/lifespan/interventions/') ctx = {'intervention': intervention, 'form': form} return render_to_response('lifespan/delete_intervention.html', ctx, context_instance=RequestContext(request))
def edit_tissue(request, pk): tissue = Tissue.objects.get(pk=pk) form = TissueForm(request.POST or None, instance=tissue) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/annotations/tissue/%s' % pk) with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed tissue." reversion.set_comment(comment) log(request, tissue, comment) return redirect('/annotations/tissue/%s' % pk) ctx = {'tissue': tissue, 'form': form, 'action': 'Edit'} return render_to_response('annotations/tissue_form.html', ctx, context_instance=RequestContext(request))
def edit_species(request, pk): species = Species.objects.get(pk=pk) form = SpeciesForm(request.POST or None, instance=species) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/annotations/species/%s' % pk) with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed tissue" reversion.set_comment(comment) log(request, species, comment) return redirect('/annotations/species/%s.html' % pk) ctx = {'species': species, 'form': form, 'action': 'Edit'} return render_to_response('annotations/species_form.html', ctx, context_instance=RequestContext(request))
def edit_experiment(request, pk): experiment = Experiment.objects.get(pk=pk) form = ExperimentForm(request.POST or None, instance=experiment) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/lifespan/experiments/') with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed experiment" reversion.set_comment(comment) log(request, experiment, comment) return redirect('/lifespan/experiment/%s' % pk) ctx = {'experiment': experiment, 'form': form} return render_to_response('lifespan/edit_experiment.html', ctx, context_instance=RequestContext(request))
def add_classification(request, template='annotations/classification_form.html'): form = ClassificationForm(request.POST or None) if request.method == "POST" and form.is_valid(): with reversion.create_revision(): classification = form.save(commit=False) form.save() if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) comment = request.POST['comment'] or "Added classification" reversion.set_comment(comment) log(request, classification, comment) msg = "Successfully added classification." messages.add_message(request, messages.SUCCESS, _(msg)) return redirect('/annotations/classification/%s' % classification.pk) return render(request, template, {'form': form, 'action': 'Add'})
def edit_classification(request, pk): classification = Classification.objects.get(pk=pk) form = ClassificationForm(request.POST or None, instance=classification) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/annotations/classifications/') with reversion.create_revision(): form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed classification" reversion.set_comment(comment) log(request, classification, comment) return redirect('/annotations/classification/%s' % pk) ctx = {'classification': classification, 'form': form, 'action': 'Edit'} return render_to_response('annotations/classification_form.html', ctx, context_instance=RequestContext(request))
def delete_experiment(request, pk): experiment = Experiment.objects.get(pk=pk) form = DeleteExperimentForm(request.POST or None) if request.method == "POST" and form.is_valid(): if 'cancel' in request.POST: return redirect('/lifespan/experiment/%s' % pk) elif 'delete_experiment' in request.POST: with reversion.create_revision(): experiment.delete() reversion.set_user(request.user) comment = request.POST['comment'] or "Deleted experiment" reversion.set_comment(comment) log(request, experiment, comment) return redirect('/lifespan/experiments/') ctx = {'experiment': experiment, 'form': form} return render_to_response('lifespan/delete_experiment.html', ctx, context_instance=RequestContext(request))
def delete(self, request, *args, **kwargs): #print("data.views.Delete.delete()") with reversion.create_revision(): self.object = self.get_object() if isinstance(self.request.user, AnonymousUser): self.request.user = User.objects.get(username='******') self.object.user = self.request.user comment = self.request.POST['comment'] or self.comment reversion.set_comment(comment) self.object.delete() log(self.request, self.object, comment, 3) reversion.set_user(self.request.user) self.success_url = self.success_url or self.object.get_absolute_url( ) messages.add_message(self.request, messages.SUCCESS, _(self.message % self.object)) return HttpResponseRedirect(self.get_success_url())
def add_factor(request): form = FactorForm(request.POST or None) if request.method == "POST" and form.is_valid(): with reversion.create_revision(): factor = form.save(commit=False) form.save() if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) comment = "Added factor. %s" % request.POST["comment"] or "" reversion.set_comment(comment) log(request, factor, comment) msg = "Successfully added factor." messages.add_message(request, messages.SUCCESS, ugettext(msg)) return redirect("/lifespan/factor/%s" % factor.pk) ctx = {"form": form, "action": "Add"} return render_to_response("lifespan/factor_form.html", ctx, context_instance=RequestContext(request))
def delete_classification(request, pk): classification = Classification.objects.get(pk=pk) form = DeleteClassificationForm(request.POST or None) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/annotations/classification/%s' % pk) elif "delete_classification" in request.POST: with reversion.create_revision(): classification.delete() reversion.set_user(request.user) comment = request.POST['comment'] or "Delete classification" log(request, classification, comment) msg = "Successfully deleted classification %s." % classification.title messages.add_message(request, messages.SUCCESS, _(msg)) return redirect('/annotations/classifications/') ctx = {'classification': classification, 'form': form} return render_to_response('annotations/delete_classification.html', ctx, context_instance=RequestContext(request))
def form_valid(self, form): with reversion.create_revision(): self.object = form.save(commit=False) print("self.object: %s" % self.object) if isinstance(self.request.user, AnonymousUser): self.request.user = User.objects.get(username='******') comment = self.request.POST['comment'] or self.comment reversion.set_comment(comment) self.object.comment = comment self.object.save() log(self.request, self.object, comment, 2) reversion.set_user(self.request.user) form.save_m2m() self.success_url = self.success_url or self.object.get_absolute_url( ) messages.add_message(self.request, messages.SUCCESS, _(self.message % self.object)) return HttpResponseRedirect(self.get_success_url())
def add_experiment(request, pk): form = ExperimentForm(request.POST or None, pk=pk) # A form bound to the POST data if request.method == "POST" and form.is_valid(): # All validation rules pass with reversion.create_revision(): experiment = form.save(commit=False) # print("Experiment id: %s" % experiment.id) # print form form.save() if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) comment = "Added experiment." reversion.set_comment(comment) log(request, experiment, comment) msg = "Successfully added experiment." messages.add_message(request, messages.SUCCESS, ugettext(msg)) return redirect("/lifespan/experiment/%s" % experiment.pk) return render_to_response("lifespan/add_experiment.html", {"form": form}, context_instance=RequestContext(request))
def add_intervention(request): form = InterventionForm(request.POST or None) if request.method == "POST" and form.is_valid(): with reversion.create_revision(): intervention = form.save(commit=False) form.save() if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) comment = "Added intervention. %s" % request.POST['comment'] or '' reversion.set_comment(comment) log(request, intervention, comment) msg = "Successfully added intervention." messages.add_message(request, messages.SUCCESS, ugettext(msg)) return redirect('/lifespan/intervention/%s' % intervention.pk) ctx = {'form': form, 'action': 'Add'} return render_to_response('lifespan/intervention_form.html', ctx, context_instance=RequestContext(request))
def add_tissue(request): form = TissueForm(request.POST or None) if request.method == "POST" and form.is_valid(): with reversion.create_revision(): tissue = form.save(commit=False) form.save() if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) comment = "Added tissue. %s" % request.POST['comment'] or '' reversion.set_comment(comment) log(request, tissue, comment) msg = "Successfully added tissue." messages.add_message(request, messages.SUCCESS, ugettext(msg)) return redirect('/annotations/tissue/%s' % tissue.pk) ctx = {'form': form, 'action': 'Add'} return render_to_response('annotations/tissue_form.html', ctx, context_instance=RequestContext(request))
def add(request): form = PostForm(request.POST or None) if request.POST and form.is_valid(): with reversion.create_revision(): post = form.save(commit=False) if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") post.creator = request.user post.updater = request.user form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Initial version." reversion.set_comment(comment) log(request, post, comment) return redirect('/blog/') #return render_to_response('blog/index.html', # context_instance=RequestContext(request)) return render_to_response('blog/add.html', {'form': form}, context_instance=RequestContext(request))
def delete_tissue(request, pk): tissue = Tissue.objects.get(pk=pk) form = DeleteTissueForm(request.POST or None) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/annotations/tissue/%s' % pk) elif "delete" in request.POST: #print tissue, form.is_valid() with reversion.create_revision(): tissue.delete() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed tissue" reversion.set_comment(comment) log(request, tissue, comment) return redirect('/annotations/tissues/') ctx = {'tissue': tissue, 'form': form} return render_to_response('annotations/delete_tissue.html', ctx, context_instance=RequestContext(request))
def delete_classification(request, pk): classification = Classification.objects.get(pk=pk) form = DeleteClassificationForm(request.POST or None) if request.method == "POST" and form.is_valid(): if "cancel" in request.POST: return redirect('/annotations/classification/%s' % pk) elif "delete_classification" in request.POST: with reversion.create_revision(): classification.delete() reversion.set_user(request.user) comment = request.POST['comment'] or "Delete classification" log(request, classification, comment) msg = "Successfully deleted classification %s." % \ classification.title messages.add_message(request, messages.SUCCESS, _(msg)) return redirect('/annotations/classifications/') ctx = {'classification': classification, 'form': form} return render_to_response('annotations/delete_classification.html', ctx, context_instance=RequestContext(request))
def add_experiment(request, pk): form = ExperimentForm(request.POST or None, pk=pk) # A form bound to the POST data if request.method == "POST" and form.is_valid( ): # All validation rules pass with reversion.create_revision(): experiment = form.save(commit=False) #print("Experiment id: %s" % experiment.id) #print form form.save() if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) comment = "Added experiment." reversion.set_comment(comment) log(request, experiment, comment) msg = "Successfully added experiment." messages.add_message(request, messages.SUCCESS, ugettext(msg)) return redirect('/lifespan/experiment/%s' % experiment.pk) return render_to_response('lifespan/add_experiment.html', {'form': form}, context_instance=RequestContext(request))
def edit_study(request, pk): study = Study.objects.get(pk=pk) if request.method == "GET": form = EditStudyForm(instance=study) elif request.method == "POST": if "cancel" in request.POST: return redirect("/lifespan/studies/") with reversion.create_revision(): form = EditStudyForm(request.POST, instance=study) if form.is_valid(): form.save() reversion.set_user(request.user) comment = request.POST["comment"] or "Changed study" reversion.set_comment(comment) log(request, study, comment) return redirect("/lifespan/study/%s" % pk) else: form = EditStudyForm(instance=study) ctx = {"form": form, "study": study} return render_to_response("lifespan/edit_study.html", ctx, context_instance=RequestContext(request))
def form_valid(self, form): with reversion.create_revision(): self.object = form.save(commit=False) if isinstance(self.request.user, AnonymousUser): self.request.user = User.objects.get(username='******') self.object.user = self.request.user comment = self.request.POST['comment'] or self.comment reversion.set_comment(comment) self.object.comment = comment self.object.save() log(self.request, self.object, comment, 1) comment = self.request.POST['comment'] or "Engaged quest" relation = Relation(fr=self.quest, to=self.object, be=Entry.objects.get(title='solved by')) relation.user = self.request.user relation.save() log(self.request, relation, comment, 1) reversion.set_user(self.request.user) form.save_m2m() self.success_url = self.success_url or self.object.get_absolute_url() messages.add_message(self.request, messages.SUCCESS, _(self.message % self.object)) return HttpResponseRedirect(self.get_success_url())
def edit_study(request, pk): study = Study.objects.get(pk=pk) if request.method == "GET": form = EditStudyForm(instance=study) elif request.method == "POST": if "cancel" in request.POST: return redirect('/lifespan/studies/') with reversion.create_revision(): form = EditStudyForm(request.POST, instance=study) if form.is_valid(): form.save() reversion.set_user(request.user) comment = request.POST['comment'] or "Changed study" reversion.set_comment(comment) log(request, study, comment) return redirect('/lifespan/study/%s' % pk) else: form = EditStudyForm(instance=study) ctx = {'form': form, 'study': study} return render_to_response('lifespan/edit_study.html', ctx, context_instance=RequestContext(request))
def add_studies(request): titles = request.POST['titles'].replace('\r', '').split('\n') pmids = request.POST['pmids'].replace('\r', '').split('\n') taxid = request.POST.get('species', None) if taxid: species = Species.objects.get(taxid=taxid) comment = request.POST['comment'] or "Adding studies" succieded = [] warned = [] failed = [] with reversion.create_revision(): #print "Titles", titles #print "pmids", pmids for title in titles: if not title: continue #print "Title:", title #study, created = Study.objects.get_or_create(title=title) study = Study(title=title) study.save() try: print vars(study) except UnicodeEncodeError as e: print e print study.reference_was_created if not study.reference_was_created:#study.reference.authors: warned.append(title) messages.add_message(request, messages.WARNING, ugettext("Already in db: %s" % title)) created = False else: created = True try: study_confirm = Study.objects.get(title__icontains=title) if study_confirm: succieded.append(title) print "Authors:", study.reference.authors messages.add_message(request, messages.SUCCESS, ugettext("Succeeded: %s" % title)) else: failed.append(title) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % title)) if taxid: study_confirm.species.add(species) print("Adding species") #study_confirm.save() except Exception as e: print e failed.append(title) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % title)) messages.add_message(request, messages.WARNING, ugettext("However added %s" % study.title)) if taxid: print("Adding species") try: study.species.add(species) except ValueError as e: #Exception Value: 'Study' instance needs to have a primary key value before a many-to-many relationship can be used. messages.add_message(request, messages.ERROR, ugettext("Error: %s" % e)) log(request, study, comment) for pmid in pmids: if not pmid: continue print "PMID:", pmid study = Study(pmid=pmid) study.save() #print "views.add.studies for pmid in pmids:", vars(study) if not study.reference_was_created: warned.append(pmid) messages.add_message(request, messages.WARNING, ugettext("Already in db: %s" % pmid)) created = False else: created = True try: study_confirm = Study.objects.get(pmid=pmid) if study_confirm: succieded.append(pmid) messages.add_message(request, messages.SUCCESS, ugettext("Succeeded: %s" % pmid)) else: failed.append(pmid) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % pmid)) if taxid: print("Adding species") study_confirm.species.add(species) except Exception as e: print e failed.append(pmid) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % pmid)) messages.add_message(request, messages.WARNING, ugettext("However added %s" % study.pmid)) if taxid: print("Adding species") try: study.species.add(species) except ValueError as e: messages.add_message(request, messages.ERROR, ugettext("Error: %s" % e)) log(request, study, comment) if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) reversion.set_comment(comment) if succieded: msg = "Successfully added the following %i studies: \n%s" % (len(succieded), "\n".join(succieded)) messages.add_message(request, messages.SUCCESS, ugettext(msg)) if warned: msg = "Found already in db the following %i studies: \n%s" % (len(warned), "\n".join(warned)) messages.add_message(request, messages.WARNING, ugettext(msg)) if failed: msg = "Failed to fetch information on the following %i studies: \n%s" % (len(failed), "\n".join(failed)) messages.add_message(request, messages.ERROR, ugettext(msg)) return HttpResponseRedirect('/lifespan/studies/')
def add_studies(request): titles = request.POST['titles'].replace('\r', '').split('\n') pmids = request.POST['pmids'].replace('\r', '').split('\n') taxid = request.POST.get('species', None) if taxid: species = Species.objects.get(taxid=taxid) comment = request.POST['comment'] or "Adding studies" succieded = [] warned = [] failed = [] with reversion.create_revision(): #print "Titles", titles #print "pmids", pmids for title in titles: if not title: continue #print "Title:", title #study, created = Study.objects.get_or_create(title=title) study = Study(title=title) study.save() try: print vars(study) except UnicodeEncodeError as e: print e print study.reference_was_created if not study.reference_was_created: #study.reference.authors: warned.append(title) messages.add_message(request, messages.WARNING, ugettext("Already in db: %s" % title)) created = False else: created = True try: study_confirm = Study.objects.get(title__icontains=title) if study_confirm: succieded.append(title) print "Authors:", study.reference.authors messages.add_message(request, messages.SUCCESS, ugettext("Succeeded: %s" % title)) else: failed.append(title) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % title)) if taxid: study_confirm.species.add(species) print("Adding species") #study_confirm.save() except Exception as e: print e failed.append(title) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % title)) messages.add_message( request, messages.WARNING, ugettext("However added %s" % study.title)) if taxid: print("Adding species") try: study.species.add(species) except ValueError as e: #Exception Value: 'Study' instance needs to have a primary key value before a many-to-many relationship can be used. messages.add_message(request, messages.ERROR, ugettext("Error: %s" % e)) log(request, study, comment) for pmid in pmids: if not pmid: continue print "PMID:", pmid study = Study(pmid=pmid) study.save() #print "views.add.studies for pmid in pmids:", vars(study) if not study.reference_was_created: warned.append(pmid) messages.add_message(request, messages.WARNING, ugettext("Already in db: %s" % pmid)) created = False else: created = True try: study_confirm = Study.objects.get(pmid=pmid) if study_confirm: succieded.append(pmid) messages.add_message(request, messages.SUCCESS, ugettext("Succeeded: %s" % pmid)) else: failed.append(pmid) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % pmid)) if taxid: print("Adding species") study_confirm.species.add(species) except Exception as e: print e failed.append(pmid) messages.add_message(request, messages.ERROR, ugettext("Failed: %s" % pmid)) messages.add_message(request, messages.WARNING, ugettext("However added %s" % study.pmid)) if taxid: print("Adding species") try: study.species.add(species) except ValueError as e: messages.add_message(request, messages.ERROR, ugettext("Error: %s" % e)) log(request, study, comment) if isinstance(request.user, AnonymousUser): request.user = User.objects.get(username="******") reversion.set_user(request.user) reversion.set_comment(comment) if succieded: msg = "Successfully added the following %i studies: \n%s" % ( len(succieded), "\n".join(succieded)) messages.add_message(request, messages.SUCCESS, ugettext(msg)) if warned: msg = "Found already in db the following %i studies: \n%s" % ( len(warned), "\n".join(warned)) messages.add_message(request, messages.WARNING, ugettext(msg)) if failed: msg = "Failed to fetch information on the following %i studies: \n%s" % ( len(failed), "\n".join(failed)) messages.add_message(request, messages.ERROR, ugettext(msg)) return HttpResponseRedirect('/lifespan/studies/')