def upload(req): r = HttpResponse() f = req.FILES["file"] id_ensemble = req.GET["id_ensemble"] id_source = req.GET["id_source"] id_folder = req.GET.get("id_folder", None) uid = UR.getUserId(req); logging.info("upload uid=%s, id_source=%s, id_ensemble=%s, id_folder=%s" % (uid,id_source,id_ensemble,id_folder)) url = "http://%s:%s/%s?id_ensemble=%s" %("localhost", "8080",f.name, id_ensemble) payload = {"url": url, "id_source": id_source, "id_folder": id_folder } if auth.canInsertFile(uid, id_ensemble, id_folder): #the followong data will be deleted in utils_pdf if an PDF error happens later... annotations.createSource(uid, payload) annotations.addOwnership(id_source, id_ensemble, id_folder) REPOSITORY_DIR = "%s/%s" % (settings.HTTPD_MEDIA, "/pdf/repository") f2 = open("%s/%s" % (REPOSITORY_DIR, id_source,),"wb") f2.write(f.read()) f2.close() basedir = dirname(dirname(abspath(__file__))) #do the rest in the background, so server remains responsive cmd = "(cd %s; python -m upload.jobs file_img %s >/tmp/uploadscript_%s.log 2>&1 &)" %(basedir, id_source, id_log ) logging.info(cmd) os.system(cmd) r.content = UR.prepare_response({}) else: r.content = UR.prepare_response({}, 1, "NOT ALLOWED to insert a file to this group") return r
def ondemand(req, ensemble_id): url = req.GET.get("url", None) if url: try: source_info = M.OnDemandInfo.objects.get(url=url, ensemble_id=ensemble_id) return HttpResponseRedirect("/f/%s" % (source_info.source_id, )) except M.OnDemandInfo.DoesNotExist: ensemble = None try: ensemble = M.Ensemble.objects.get(pk=ensemble_id) except M.Ensemble.DoesNotExist: return HttpResponse("No such ensemble: %s " % (ensemble_id, )) if not ensemble.allow_ondemand: return HttpResponse( "ondemand uplaod not allowed for that ensemble: %s " % (ensemble_id, )) import urllib2 from upload.views import insert_pdf_metadata f = urllib2.urlopen(url) s = None try: s = f.read() f.close() source = M.Source() uid = UR.getUserId(req) source.submittedby_id = uid source.title = url.rpartition("/")[2] source.save() sid = source.id annotations.addOwnership(sid, ensemble_id) REPOSITORY_DIR = "%s/%s" % (settings.HTTPD_MEDIA, "/pdf/repository") f2 = open("%s/%s" % ( REPOSITORY_DIR, sid, ), "wb") f2.write(s) f2.close() insert_pdf_metadata(sid, REPOSITORY_DIR) info = M.OnDemandInfo() info.url = url info.ensemble_id = ensemble_id info.source_id = sid info.save() return HttpResponseRedirect("/f/%s" % (sid, )) except Exception as e: return HttpResponse("URL Read Error: %s, %s " % (url, e)) else: return HttpResponse("Missing parameter: url")
def ondemand(req, ensemble_id): url = req.GET.get("url", None) if url: try: source_info = M.OnDemandInfo.objects.get(url=url, ensemble_id=ensemble_id) return HttpResponseRedirect("/f/%s" % (source_info.source_id,)) except M.OnDemandInfo.DoesNotExist: ensemble = None try: ensemble = M.Ensemble.objects.get(pk=ensemble_id) except M.Ensemble.DoesNotExist: return HttpResponse("No such ensemble: %s " % (ensemble_id,)) if not ensemble.allow_ondemand: return HttpResponse("ondemand uplaod not allowed for that ensemble: %s " % (ensemble_id,)) import urllib2 from upload.views import insert_pdf_metadata f = urllib2.urlopen(url) s = None try: s = f.read() f.close() source = M.Source() uid = UR.getUserId(req) source.submittedby_id = uid source.title = url.rpartition("/")[2] source.save() sid = source.id annotations.addOwnership(sid, ensemble_id) REPOSITORY_DIR = "%s/%s" % (settings.HTTPD_MEDIA, "/pdf/repository") f2 = open("%s/%s" % (REPOSITORY_DIR, sid), "wb") f2.write(s) f2.close() insert_pdf_metadata(sid, REPOSITORY_DIR) info = M.OnDemandInfo() info.url = url info.ensemble_id = ensemble_id info.source_id = sid info.save() return HttpResponseRedirect("/f/%s" % (sid,)) except Exception as e: return HttpResponse("URL Read Error: %s, %s " % (url, e)) else: return HttpResponse("Missing parameter: url")
def upload(req): try: r = HttpResponse() f = req.FILES["file"] id_ensemble = req.GET["id_ensemble"] id_source = req.GET["id_source"] id_folder = req.GET.get("id_folder", None) uid = UR.getUserId(req) except UnreadablePostError: #most likely a canceled upload r.content = UR.prepare_response({}, 1, "unreadable post") return r except MultiValueDictKeyError: #most likely no file submitted r.content = UR.prepare_response({}, 1, "no file submitted") return r logging.info("upload uid=%s, id_source=%s, id_ensemble=%s, id_folder=%s" % (uid, id_source, id_ensemble, id_folder)) url = "http://%s:%s/%s?id_ensemble=%s" % ("localhost", "8000", f.name, id_ensemble) payload = {"url": url, "id_source": id_source, "id_folder": id_folder} if auth.canInsertFile(uid, id_ensemble, id_folder): #the followong data will be deleted in utils_pdf if an PDF error happens later... annotations.createSource(uid, payload) ownership = annotations.addOwnership(id_source, id_ensemble, id_folder) source = ownership.source #bug? before it was %s/%s which produced // REPOSITORY_DIR = "%s%s" % (settings.HTTPD_MEDIA, "/pdf/repository") print REPOSITORY_DIR f2 = open("%s/%s" % ( REPOSITORY_DIR, id_source, ), "wb") f2.write(f.read()) f2.close() if insert_pdf_metadata(id_source, REPOSITORY_DIR): V = { "reply_to": settings.SMTP_REPLY_TO, "email": source.submittedby.email, "title": source.title, "submitted": ownership.published, "protocol": settings.PROTOCOL, "hostname": settings.HOSTNAME, "id_source": id_source, "firstname": source.submittedby.firstname } msg = render_to_string("email/msg_pdfdone", V) email = EmailMessage( "The PDF file that you've submitted is now ready on NB.", msg, settings.EMAIL_FROM, (V["email"], settings.SMTP_CC_USER), (settings.EMAIL_BCC, )) email.send() else: #send email that stg didn't work and remove that document. V = { "reply_to": settings.SMTP_REPLY_TO, "email": source.submittedby.email, "source_id": id_source, "title": source.title, "submitted": ownership.published, "support": settings.SUPPORT_LINK, "contact_email": settings.NBTEAM_EMAIL, "firstname": source.submittedby.firstname } ownership.delete() source.delete() msg = render_to_string("email/msg_pdferror", V) email = EmailMessage( "NB was unable to read a PDF file that you've submitted", msg, settings.EMAIL_FROM, (V["email"], settings.SMTP_CC_PDFERROR), (settings.EMAIL_BCC, )) email.send() r.content = UR.prepare_response({}) else: r.content = UR.prepare_response( {}, 1, "NOT ALLOWED to insert a file to this group") return r
def upload(req): try: r = HttpResponse() f = req.FILES["file"] id_ensemble = req.GET["id_ensemble"] id_source = req.GET["id_source"] id_folder = req.GET.get("id_folder", None) uid = UR.getUserId(req); except UnreadablePostError: #most likely a canceled upload r.content = UR.prepare_response({},1,"unreadable post") return r except MultiValueDictKeyError: #most likely no file submitted r.content = UR.prepare_response({},1,"no file submitted") return r logging.info("upload uid=%s, id_source=%s, id_ensemble=%s, id_folder=%s" % (uid,id_source,id_ensemble,id_folder)) url = "http://%s:%s/%s?id_ensemble=%s" %("localhost", "8000",f.name, id_ensemble) payload = {"url": url, "id_source": id_source, "id_folder": id_folder } if auth.canInsertFile(uid, id_ensemble, id_folder): #the followong data will be deleted in utils_pdf if an PDF error happens later... annotations.createSource(uid, payload) ownership = annotations.addOwnership(id_source, id_ensemble, id_folder) source = ownership.source #bug? before it was %s/%s which produced // REPOSITORY_DIR = "%s%s" % (settings.HTTPD_MEDIA, "/pdf/repository") print REPOSITORY_DIR f2 = open("%s/%s" % (REPOSITORY_DIR, id_source,),"wb") f2.write(f.read()) f2.close() if insert_pdf_metadata(id_source, REPOSITORY_DIR): V = {"reply_to": settings.SMTP_REPLY_TO, "email": source.submittedby.email, "title": source.title, "submitted": ownership.published, "protocol": settings.PROTOCOL, "hostname": settings.HOSTNAME, "id_source": id_source, "firstname": source.submittedby.firstname } msg = render_to_string("email/msg_pdfdone",V) email = EmailMessage( "The PDF file that you've submitted is now ready on NB.", msg, settings.EMAIL_FROM, (V["email"], settings.SMTP_CC_USER ), (settings.EMAIL_BCC, )) email.send() else: #send email that stg didn't work and remove that document. V = {"reply_to": settings.SMTP_REPLY_TO, "email": source.submittedby.email, "source_id": id_source, "title": source.title, "submitted": ownership.published, "support": settings.SUPPORT_LINK, "contact_email": settings.NBTEAM_EMAIL, "firstname": source.submittedby.firstname } ownership.delete() source.delete() msg = render_to_string("email/msg_pdferror",V) email = EmailMessage( "NB was unable to read a PDF file that you've submitted", msg, settings.EMAIL_FROM, (V["email"], settings.SMTP_CC_PDFERROR ), (settings.EMAIL_BCC, )) email.send() r.content = UR.prepare_response({}) else: r.content = UR.prepare_response({}, 1, "NOT ALLOWED to insert a file to this group") return r