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
Beispiel #2
0
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"))