if request.POST.has_key('source'): context["source"] = request.POST.get("source") try: src= SourceInfo.objects.get(source=context["source"]) context["activate"] = src.activate src.delete() if context["activate"]: user_name = settings.get("main:granary.uri_root_name") password = settings.get("main:granary.uri_root_pass") datastore = HTTPRequest(endpointhost=settings.get("main:granary.host")) datastore.setRequestUserPass(endpointuser=user_name, endpointpass=password) fields = [] files =[] (reqtype, reqdata) = SparqlQueryTestCase.encode_multipart_formdata(fields, files) (resp,respdata) = datastore.doHTTP_DELETE(resource= "/" + context["source"] + "/admin") if resp.status== 200: context['message']="Thanks, the registered source: "+ context["source"] +" has been successfully deleted." context['status']="success" return redirect("/admin?message="+context['message']+"&status="+context['status']) else: context['message']="Oops, an error occurred, sorry..." + str(resp.status) context['status']="error" return redirect("/admin?"+"message="+context['message']+"&status="+context['status']) context['message']="Thanks, the unregistered source: "+ context["source"] +" has been successfully deleted." context['status']="success" return redirect("/admin?message="+"&message="+context['message']+"&status="+context['status']) except SourceInfo.DoesNotExist,e: context['message']="Sorry, that user doesn't exist."
def sourceinfo(request, source): # A user needs to be authenticated and authorized to be able to administer the DataFinder # Test if the user is now a university authenticated user if 'DF_USER_SSO_ID' not in request.session: return redirect("/login?redirectPath=admin") # Test if the user is Data Finder authorised user if request.session['DF_USER_ROLE'] != "admin" : return redirect("/") context = { #'DF_VERSION':settings.DF_VERSION, #'STATIC_URL': settings.STATIC_URL, 'silo_name':"", 'ident' : "", 'id':"", 'path' :"", 'q':"", 'src':settings.get("main:granary.uri_root"), 'host':settings.get("main:granary.host"), 'typ':"", 'message':"", 'silo':"", 'source_infos':{}, 'header':"", 'activate':"", 'unregistered_sources':[], 'kw':{}, 'sourceinfo':SourceInfo(), 'roles':[], 'source':"" } # if not request.environ.get('repoze.who.identity'): # abort(401, "Not Authorised") # if not ag.granary.issilo(silo): # abort(404) # ident = request.environ.get('repoze.who.identity') # c.ident = ident # c.silo = silo # silos = ag.authz(ident, permission=['administrator', 'manager']) # if not silo in silos: # abort(403, "Do not have administrator or manager credentials for silo %s"%silo) # user_groups = list_user_groups(ident['user'].user_name) # if ('*', 'administrator') in user_groups: # #User is super user # c.roles = ["admin", "manager", "user"] # elif (silo, 'administrator') in user_groups: # c.roles = ["admin", "manager", "user"] # elif (silo, 'manager') in user_groups: # c.roles = ["manager", "user"] # else: # abort(403, "Do not have administrator or manager credentials for silo %s"%silo) http_method = request.environ['REQUEST_METHOD'] ## hardcoded for now context['roles'] = ["admin", "manager", "user"] ##c.kw = ag.granary.describe_silo(source) user_name = 'admin' password = '******' datastore = HTTPRequest(endpointhost=context['host']) datastore.setRequestUserPass(endpointuser=user_name, endpointpass=password) context['source'] = source state_info = None # try: # c.kw = { 'silo':src.silo, # 'title':src.title, # 'description':src.description, # 'notes':src.notes, # 'users':src.users, # 'disk_allocation':src.disk_allocation, # 'activate':src.activate # } # s_q= meta.Session.query(SourceInfo).filter(SourceInfo.silo == c.source).filter(SourceInfo.activate == False) # s_q.one() # return render("/admin_sourceview.html") # except orm.exc.NoResultFound: # sourceinfo.activate = False # meta.Session.add(sourceinfo) # meta.Session.commit() # pass # except IntegrityError: # meta.Session.rollback() # return False ## If the source is not activated only then get the source information from the registered information area (resp, respdata) = datastore.doHTTP_GET(resource='/' + source + '/states', expect_type="application/JSON") state_info = json.loads(respdata) ##print json.loads(respdata) context['kw']=state_info print "http_method = " print http_method if http_method == "GET": return render_to_response('admin_sourceinfo.html', context, context_instance=RequestContext(request)) elif http_method == "POST": ##silo = request.REQUEST.get('silo', None) title = request.REQUEST.get('title', '') description = request.REQUEST.get('description', '') notes = request.REQUEST.get('notes', '') administrators = request.REQUEST.get('administrators', '') managers = request.REQUEST.get('managers', '') users = request.REQUEST.get('users', '') disk_allocation = request.REQUEST.get('disk_allocation', 0) fields = \ [ ("silo", source), ("title", title), ("description", description), ("notes", notes), ("administrators", administrators), ("managers", managers), ("users", users), ("disk_allocation", disk_allocation) ] print fields files =[] (reqtype, reqdata) = SparqlQueryTestCase.encode_multipart_formdata(fields, files) (resp,respdata) = datastore.doHTTP_POST(reqdata, reqtype, resource='/' + source + "/admin", expect_type="application/JSON") resource ='/' + source + "/admin" print 'respdata', respdata print 'msg', resp.msg print 'reason', resp.reason print 'status',resp.status print resp.read() ## print "response data for update metadata" if resp.status== 204 : context['source'] = source context['message'] = "Metadata updated" (resp, respdata) = datastore.doHTTP_GET(resource='/' + source + '/states', expect_type="application/JSON") state_info = json.loads(respdata) context['kw']=state_info print "before reloading" print state_info return render_to_response('admin_sourceinfo.html', context, context_instance=RequestContext(request)) else: context['source'] = source context['message'] = "Metadata not updated: " + str(resp.status) print "metadata not updated: " + str(resp.status) #abort(resp.status, respdata ) return render_to_response('admin_sourceinfo.html', context, context_instance=RequestContext(request)) elif http_method == "DELETE": ##fields = [("silo", source)] ##print fields ##files =[] ##(reqtype, reqdata) = SparqlQueryTestCase.encode_multipart_formdata(fields, files) ##(resp,respdata) = datastore.doHTTP_DELETE(reqdata, reqtype, resource='/' + source + "/admin", expect_type="application/JSON") (resp,respdata) = datastore.doHTTP_DELETE(resource='/' + source + "/admin") resource ='/' + source + "/admin" print resp.read() print "Response Status = " print resp.status if resp.status== 200: #Modify the source entry in the sqllite database in the data finder. Change activate = False. try: s_q = SourceInfo.objects.filter(silo = source) for src in s_q: src.activate = False src.save() print "after save" context['message'] = "Metadata deleted" except Exception, e: print "Exception" + str(e) context['message'] = str(e) else: context['message'] = "Metadata could not be deleted" abort(resp.status, respdata ) return render_to_response('list_of_sources.html', context, context_instance=RequestContext(request))
def sourceinfo(self, source): c.silo_name = '' c.ident = '' c.id ="" c.path ="" c.user_logged_in_name="" c.q="" c.typ="" c.src = ag.root # if not request.environ.get('repoze.who.identity'): # abort(401, "Not Authorised") # if not ag.granary.issilo(silo): # abort(404) # ident = request.environ.get('repoze.who.identity') # c.ident = ident # c.silo = silo # silos = ag.authz(ident, permission=['administrator', 'manager']) # if not silo in silos: # abort(403, "Do not have administrator or manager credentials for silo %s"%silo) # user_groups = list_user_groups(ident['user'].user_name) # if ('*', 'administrator') in user_groups: # #User is super user # c.roles = ["admin", "manager", "user"] # elif (silo, 'administrator') in user_groups: # c.roles = ["admin", "manager", "user"] # elif (silo, 'manager') in user_groups: # c.roles = ["manager", "user"] # else: # abort(403, "Do not have administrator or manager credentials for silo %s"%silo) http_method = request.environ['REQUEST_METHOD'] ## hardcoded for now c.roles = ["admin", "manager", "user"] ##c.kw = ag.granary.describe_silo(source) c.host = ag.host c.silo="" user_name = 'admin' password = '******' datastore = HTTPRequest(endpointhost=c.host) datastore.setRequestUserPass(endpointuser=user_name, endpointpass=password) c.source = source c.message ="" state_info = None print "source requested: " print c.source c.kw={} # try: # c.kw = { 'silo':src.silo, # 'title':src.title, # 'description':src.description, # 'notes':src.notes, # 'users':src.users, # 'disk_allocation':src.disk_allocation, # 'activate':src.activate # } # s_q= meta.Session.query(SourceInfo).filter(SourceInfo.silo == c.source).filter(SourceInfo.activate == False) # s_q.one() # return render("/admin_sourceview.html") # except orm.exc.NoResultFound: # sourceinfo.activate = False # meta.Session.add(sourceinfo) # meta.Session.commit() # pass # except IntegrityError: # meta.Session.rollback() # return False ## If the source is not activated only then get the source information from the registered information area (resp, respdata) = datastore.doHTTP_GET(resource='/' + c.source + '/states', expect_type="application/JSON") state_info = json.loads(respdata) ##print json.loads(respdata) c.kw=state_info print "http_method = " print http_method if http_method == "GET": return render("/admin_sourceinfo.html") elif http_method == "POST": ##silo = request.params.get('silo', None) title = request.params.get('title', '') description = request.params.get('description', '') notes = request.params.get('notes', '') administrators = request.params.get('administrators', '') managers = request.params.get('managers', '') users = request.params.get('users', '') disk_allocation = request.params.get('disk_allocation', '') fields = \ [ ("silo", source), ("title", title), ("description", description), ("notes", notes), ("administrators", administrators), ("managers", managers), ("users", users), ("disk_allocation", disk_allocation) ] print fields files =[] (reqtype, reqdata) = SparqlQueryTestCase.encode_multipart_formdata(fields, files) (resp,respdata) = datastore.doHTTP_POST(reqdata, reqtype, resource='/' + source + "/admin", expect_type="application/JSON") resource ='/' + source + "/admin" print 'respdata', respdata print 'msg', resp.msg print 'reason', resp.reason print 'status',resp.status print resp.read() ## print "response data for update metadata" if resp.status== 204: c.message = "Metadata updated" return render("/admin_sourceinfo.html") else: abort(resp.status, respdata ) elif http_method == "DELETE": ##fields = [("silo", source)] ##print fields ##files =[] (reqtype, reqdata) = SparqlQueryTestCase.encode_multipart_formdata(fields, files) ##(resp,respdata) = datastore.doHTTP_DELETE(reqdata, reqtype, resource='/' + source + "/admin", expect_type="application/JSON") (resp,respdata) = datastore.doHTTP_DELETE(resource='/' + source + "/admin") resource ='/' + source + "/admin" print resp.read() print "Response Status = " print resp.status if resp.status== 200: #Modify the source entry in the sqllite database in the data finder. Change activate = False. try: s_q= meta.Session.query(SourceInfo).filter(SourceInfo.silo == source) s_q.one() s_q.update({ 'title':title, 'description':description, 'notes':notes, 'administrators':administrators, 'managers':managers, 'users':users, 'disk_allocation':disk_allocation, 'activate':False }) meta.Session.commit() except orm.exc.NoResultFound: sourceinfo.activate = False meta.Session.add(sourceinfo) meta.Session.commit() pass except IntegrityError: #log.error('Error adding user %s'%user_details['username']) #print traceback.format_exc() meta.Session.rollback() return False c.message = "Metadata deleted" return True else: print "Failure" abort(resp.status, respdata )