def save(self, *args, **kwargs): """Check whether study is already in references and fetches annotation. 1. Whether reference nor study exist. 2. reference exist but not study. 3. reference does not exit but study 4. Both reference and study exist.""" if self.title: kwargs['title'] = self.title if self.pmid: kwargs['pmid'] = self.pmid if self.link: kwargs['link'] = self.link if self.pmid: reference, created = Reference.objects.get_or_create( pmid=self.pmid, defaults=kwargs) #print "models.Study.save() if self.pmid:", reference, created self.reference_was_created = created elif self.title: try: #print "TRRRRRRRRRRRRRRRYL reference, creating" try: reference, created = Reference.objects.get_or_create( title__icontains=self.title, defaults=kwargs) except MultipleObjectsReturned as e: references = Reference.objects.filter( title__icontains=self.title) #, defaults=kwargs) for reference in references: if reference.pmid: break created = False except Exception as e: print e #print "TRRRRRRRRRRRRRRRYL reference, created", created #print reference, created self.reference_was_created = created #print "self.reference_was_created", self.reference_was_created self.reference = reference #print self.reference #super(Study, self).save() #print "Saved!" #print "Post save: ", self.reference except IntegrityError: return None #reference = Reference(**kwargs) #created = False else: reference = Reference(**kwargs) created = False #if not created and self.title: #reference.__dict__.update(#**kwargs) #reference.save() #print reference self.pmid = reference.pmid self.title = reference.title self.reference = reference try: super(Study, self).save() except IntegrityError as e: print e
def duplicates(request): dups = Reference.duplicates() return render_to_response('datasets/reference_archive.html', {'references': dups}, context_instance=RequestContext(request))
def update_references(request): Reference.update() render_to_response('datasets/index.html', context_instance=RequestContext(request))