def _get_resource( self, qstring, referrer ): """ Gets or creates resource entry and returns id. Called by make_permalink() """ try: rsc = Resource.objects.get( query=qstring, referrer=referrer ) log.debug( 'rsc found' ) except: log.debug( 'rsc not found' ) rsc = Resource() rsc.query = qstring rsc.referrer = referrer rsc.save() log.debug( 'rsc.__dict__, ```%s```' % pprint.pformat(rsc.__dict__) ) return rsc.id
def update_db(request): import ast user_ip = request.META['REMOTE_ADDR'] print 'x'*20 print request.POST print 'x'*20 b64_enc_token = request.POST['token'] enc_token = base64.decodestring(b64_enc_token) expected_token = settings.TOKEN obj=DES.new(settings.ENCRYPTION_KEY, DES.MODE_ECB) decrypted_token = obj.decrypt(enc_token) if decrypted_token == expected_token: print 'token looks good' uploads = request.POST['uploads'] ddd = json.loads(uploads) #dd = ast.literal_eval(uploads) print 'Y'*100 print ddd print 'Y'*100 for item in ddd['uploaded_objects']: print 'try to add: %s' % item for email in item['owners']: try: user = User.objects.get(email=email) except User.DoesNotExist: user = User.objects.create_user(email, email, settings.DEFAULT_PWD) user.first_name = '' user.last_name = '' user.save() # see if the bucket exists. If not, create one try: bucket = Bucket.objects.get(name=item['bucket_name']) print 'Bucket existed' except ObjectDoesNotExist: print 'Bucket did not exist. Create one' bucket = Bucket(name=item['bucket_name']) bucket.save() bucket.owners.add(user) public_link = settings.LINK_ROOT % (bucket.name,item['basename']) try: # if it exists already we update the upload date resource = Resource.objects.get(bucket = bucket, basename = item['basename']) print 'Resource was already there' resource.upload_date = datetime.datetime.now() resource.resource_title = item['resource_title'] resource.save() except ObjectDoesNotExist: print 'Resource DID NOT exist.' resource = Resource(basename=item['basename'], bucket = bucket, public_link = public_link, resource_title = item['resource_title'], upload_date = datetime.datetime.now()) resource.save() return HttpResponse('Database updated.') else: return HttpResponse('', status=403)
for item in all_contents: acl = item.acl entity = acl.user(user.email) entity.grant_read() acl.save() # normally we supply the Resource "title" when we update, so make some up here resource_types = { 'FastQ Sequence Files':'fastq.gz',\ 'FastQC Reports':'zip' } for item in all_contents: print 'Add resource: %s' % item.name public_link = settings.LINK_ROOT % (google_bucket.name, item.name) resource_title = '' for title, suffix in resource_types.items(): if os.path.basename(item.name)[-len(suffix):] == suffix: resource_title = title break try: resource = Resource.objects.get(bucket = bucket, basename =os.path.basename(item.name)) resource.resource_title = resource_title resource.upload_date = datetime.datetime.now() except ObjectDoesNotExist: resource = Resource(basename=os.path.basename(item.name), \ bucket = bucket, \ public_link = public_link, \ resource_title = resource_title, \ upload_date = datetime.datetime.now()) resource.save()
def test_make_permalink__resource_found(self): """ Checks permalink creation. """ rsc = Resource() rsc.query = "foo" rsc.referrer = "bar" rsc.save() good_qstring = "sid=FirstSearch%3AWorldCat&genre=journal&issn=0017-811X&eissn=2161-976X&title=Harvard+law+review.&date=1887&id=doi%3A&pid=<accession+number>1751808<%2Faccession+number><fssessid>0<%2Ffssessid>&url_ver=Z39.88-2004&rfr_id=info%3Asid%2Ffirstsearch.oclc.org%3AWorldCat&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&req_dat=<sessionid>0<%2Fsessionid>&rfe_dat=<accessionnumber>1751808<%2Faccessionnumber>&rft_id=info%3Aoclcnum%2F1751808&rft_id=urn%3AISSN%3A0017-811X&rft.jtitle=Harvard+law+review.&rft.issn=0017-811X&rft.eissn=2161-976X&rft.aucorp=Harvard+Law+Review+Publishing+Association.%3BHarvard+Law+Review+Association.&rft.place=Cambridge++Mass.&rft.pub=Harvard+Law+Review+Pub.+Association&rft.genre=journal&checksum=059306b04e1938ee38f852a498bea79e&title=Brown%20University&linktype=openurl&detail=RBN" good_referrer = "info:sid/firstsearch.oclc.org:WorldCat" rsc2 = Resource() rsc2.id = 12345678 rsc2.query = good_qstring rsc2.referrer = good_referrer rsc2.save() data_dct = self.helper.make_permalink( referrer=good_referrer, qstring=good_qstring, scheme="https", host="the_host", path="/easyaccess/find/" ) self.assertEqual("https://the_host/easyaccess/find/permalink/pnfq/", data_dct["permalink"]) self.assertEqual("info:sid/firstsearch.oclc.org:WorldCat", data_dct["referrer"]) self.assertEqual(good_qstring, data_dct["querystring"]) self.assertEqual(12345678, data_dct["resource_id"]) self.assertEqual("pnfq", data_dct["permastring"]) self.assertEqual(12345678, baseconv.base62.to_decimal("pnfq"))