def __getUniqueKeyValues(self, typeName): userGroup = getSelectedGroup() if 'NormalUser' in CS.getPropertiesForGroup(userGroup): cacheKey = (getUsername(), userGroup, getSelectedSetup(), typeName) else: cacheKey = (userGroup, getSelectedSetup(), typeName) data = AccountingplotsController.__keysCache.get(cacheKey) if not data: rpcClient = getRPCClient("Accounting/ReportGenerator") retVal = rpcClient.listUniqueKeyValues(typeName) if 'rpcStub' in retVal: del (retVal['rpcStub']) if not retVal['OK']: return retVal #Site ordering based on TierLevel / alpha if 'Site' in retVal['Value']: siteLevel = {} for siteName in retVal['Value']['Site']: sitePrefix = siteName.split(".")[0].strip() level = gConfig.getValue( "/Resources/Sites/%s/%s/MoUTierLevel" % (sitePrefix, siteName), 10) if level not in siteLevel: siteLevel[level] = [] siteLevel[level].append(siteName) orderedSites = [] for level in sorted(siteLevel): orderedSites.extend(sorted(siteLevel[level])) retVal['Value']['Site'] = orderedSites data = retVal AccountingplotsController.__keysCache.add(cacheKey, 300, data) return data
def __getUniqueKeyValues( self, typeName ): userGroup = getSelectedGroup() if 'NormalUser' in CS.getPropertiesForGroup( userGroup ): cacheKey = ( getUsername(), userGroup, getSelectedSetup(), typeName ) else: cacheKey = ( userGroup, getSelectedSetup(), typeName ) data = AcctController.__keysCache.get( cacheKey ) if not data: rpcClient = getRPCClient( "Accounting/ReportGenerator" ) retVal = rpcClient.listUniqueKeyValues( typeName ) if 'rpcStub' in retVal: del( retVal[ 'rpcStub' ] ) if not retVal[ 'OK' ]: return retVal #Site ordering based on TierLevel / alpha if 'Site' in retVal[ 'Value' ]: siteLevel = {} for siteName in retVal[ 'Value' ][ 'Site' ]: sitePrefix = siteName.split( "." )[0].strip() level = gConfig.getValue( "/Resources/Sites/%s/%s/MoUTierLevel" % ( sitePrefix, siteName ), 10 ) if level not in siteLevel: siteLevel[ level ] = [] siteLevel[ level ].append( siteName ) orderedSites = [] for level in sorted( siteLevel ): orderedSites.extend( sorted( siteLevel[ level ] ) ) retVal[ 'Value' ][ 'Site' ] = orderedSites data = retVal AcctController.__keysCache.add( cacheKey, 300, data ) return data
def htmlSetups(): selectedSetup = "<strong>%s</strong>" % credentials.getSelectedSetup() availableSetups = [ (setupName, diracURL(controller="web/userdata", action="changeSetup", id=setupName)) for setupName in gWebConfig.getSetups() ] return yuiWidgets.dropDownMenu("UserSetupPos", selectedSetup, availableSetups)
def __prepareArgs(kwargs): if credentials.getUserDN(): kwargs["delegatedGroup"] = str(credentials.getSelectedGroup()) kwargs["delegatedDN"] = str(credentials.getUserDN()) kwargs["useCertificates"] = True kwargs["setup"] = credentials.getSelectedSetup() return kwargs
def getSandbox( self ): """ Get job sandbox """ if 'jobID' not in request.params: c.error = "Maybe you forgot the jobID ?" return render( "/error.mako" ) jobID = int(request.params['jobID']) sbType = 'Output' if 'sandbox' in request.params: sbType = str(request.params['sandbox']) client = SandboxStoreClient(useCertificates=True, delegatedDN=str( credentials.getUserDN() ), delegatedGroup=str( credentials.getSelectedGroup() ), setup = credentials.getSelectedSetup() ) result = client.downloadSandboxForJob(jobID,sbType,inMemory=True) if not result['OK']: c.error = "Error: %s" % result['Message'] return render( "/error.mako" ) data = result['Value'] fname = "%s_%sSandbox.tar" % (str(jobID),sbType) response.headers['Content-type'] = 'application/x-tar' response.headers['Content-Disposition'] = 'attachment; filename="%s"' % fname response.headers['Content-Length'] = len( data ) return data
def __prepareArgs(kwargs): if credentials.getUserDN(): kwargs['delegatedGroup'] = str(credentials.getSelectedGroup()) kwargs['delegatedDN'] = str(credentials.getUserDN()) kwargs['useCertificates'] = True kwargs['setup'] = credentials.getSelectedSetup() return kwargs
def getSandbox(self): """ Get job sandbox """ if 'jobID' not in request.params: c.error = "Maybe you forgot the jobID ?" return render("/error.mako") jobID = int(request.params['jobID']) sbType = 'Output' if 'sandbox' in request.params: sbType = str(request.params['sandbox']) client = SandboxStoreClient(useCertificates=True, delegatedDN=str(credentials.getUserDN()), delegatedGroup=str( credentials.getSelectedGroup()), setup=credentials.getSelectedSetup()) result = client.downloadSandboxForJob(jobID, sbType, inMemory=True) if not result['OK']: c.error = "Error: %s" % result['Message'] return render("/error.mako") data = result['Value'] fname = "%s_%sSandbox.tar" % (str(jobID), sbType) response.headers['Content-type'] = 'application/x-tar' response.headers[ 'Content-Disposition'] = 'attachment; filename="%s"' % fname response.headers['Content-Length'] = len(data) return data
def __prepareArgs( kwargs ): if ( 'static' not in kwargs or not kwargs[ 'static' ] ) and credentials.getUserDN(): kwargs[ 'delegatedGroup' ] = str( credentials.getSelectedGroup() ) kwargs[ 'delegatedDN' ] = str( credentials.getUserDN() ) kwargs[ 'useCertificates' ] = True kwargs[ 'setup' ] = credentials.getSelectedSetup() return kwargs
def htmlSetups(): selectedSetup = "<strong>%s</strong>" % credentials.getSelectedSetup() availableSetups = [(setupName, diracURL(controller='web/userdata', action='changeSetup', id=setupName)) for setupName in gWebConfig.getSetups()] return yuiWidgets.dropDownMenu("UserSetupPos", selectedSetup, availableSetups)
def authorizeRequest( self ): #Check the setup is allright if 'setup' in request.params: requestedSetup = request.params[ 'setup' ] result = gConfig.getSections( "/DIRAC/Setups" ) if not result[ 'OK' ]: c.error( "Oops: %s" % result[ 'Value' ] ) return render( "/error.mako" ) knownSetups = result[ 'Value' ] if requestedSetup not in knownSetups: c.error = "Unknown %s setup" % requestedSetup return render( "/error.mako" ) if getSelectedSetup() != requestedSetup: return self.__changeSetupAndRedirect( requestedSetup ) params = {} for key in request.params: params[ key ] = request.params[ key ] gOAManager.parse( method = request.method, url = request.url, headers = request.headers, parameters = params, query_string = request.query_string ) if not gOAData.token: c.error = "Dude! You shouldn't be here without a request token :P" return render( "/error.mako" ) if not getUserDN() or getSelectedGroup() == "visitor": c.error = "Please log in with your certificate" return render( "/error.mako" ) result = gOAManager.credentials.getRequestData( gOAData.token ) if not result[ 'OK' ]: c.error = result[ 'Message' ] return render( "/error.mako" ) reqData = result[ 'Value' ] consData = reqData[ 'consumer' ] result = gOAManager.credentials.generateVerifier( consData[ 'key' ], reqData[ 'request' ], c.userDN, c.userGroup ) if not result[ 'OK' ]: c.error = result[ 'Message' ] return render( "/error.mako" ) verifier = result[ 'Value' ] c.consName = consData[ 'name' ] c.consImg = consData[ 'icon' ] c.userDN = getUserDN() c.userGroup = getSelectedGroup() c.request = gOAData.token c.verifier = verifier c.consumerKey = consData[ 'key' ] c.callback = gOAData.callback or reqData[ 'callback' ] c.callback = urllib.quote_plus( c.callback ) return render( "/WebAPI/authorizeRequest.mako" )
def getJSPageData(): pageData = [] pageData.append( "navMenu : %s" % getSchemaContents() ) pageData.append( "setupMenu : %s" % getSetups() ) pageData.append( "selectedSetup : '%s'" % credentials.getSelectedSetup() ) pageData.append( "pagePath : %s" % pagePath() ) pageData.append( "pageName : %s" % pageName() ) pageData.append( "userData : %s" % getUserData() ) pageData.append( "docs : %s" % getDoc() ) # by Matvey pageData.append( "helpURL : '%s'" % getHelpForPage() ) # by Matvey pageData.append( "logoURL : '%s'" % getLogoForPortal() ) # by Matvey return "{%s}" % ",".join( pageData )
def authorizeCode( self ): #Check the setup is allright if 'setup' in request.params: requestedSetup = request.params[ 'setup' ] result = gConfig.getSections( "/DIRAC/Setups" ) if not result[ 'OK' ]: c.error( "Oops: %s" % result[ 'Value' ] ) return render( "/error.mako" ) knownSetups = result[ 'Value' ] if requestedSetup not in knownSetups: c.error = "Unknown %s setup" % requestedSetup return render( "/error.mako" ) if getSelectedSetup() != requestedSetup: return self.__changeSetupAndRedirect( requestedSetup ) try: cid = str( request.params[ 'client_id' ] ) except KeyError: c.error = "Dude! You shouldn't be here without a client_id :P" return render( "/error.mako" ) if not getUserDN() or getSelectedGroup() == "visitor": c.error = "Please log in with your certificate" return render( "/error.mako" ) result = self.__oaToken.getClientDataByID( cid ) if not result[ 'OK' ]: c.error = "Unknown originating client" return render( "/error.mako" ) cData = result[ 'Value' ] try: redirect = str( request.params[ 'redirect_uri' ] ) except KeyError: redirect = "" c.cName = cData[ 'Name' ] c.cImg = cData[ 'Icon' ] c.cID = cid if redirect: c.redirect = base64.urlsafe_b64encode( redirect ) c.userDN = getUserDN() c.userGroup = getSelectedGroup() for k in ( 'scope', 'state' ): if k in request.params: setattr( c, k, str( request.params[k] ) ) else: setattr( c, k, False ) return render( "/OAuth2/authorizeCode.mako" )
def getJSPageData(): pageData = [] pageData.append( "navMenu : %s" % getSchemaContents() ) pageData.append( "setupMenu : %s" % getSetups() ) pageData.append( "selectedSetup : '%s'" % credentials.getSelectedSetup() ) pageData.append( "pagePath : %s" % pagePath() ) pageData.append( "pageName : %s" % pageName() ) pageData.append( "userData : %s" % getUserData() ) pageData.append( "docs : %s" % getDoc() ) # by Matvey pageData.append( "helpURL : '%s'" % getHelpForPage() ) # by Matvey voIcon = gWebConfig.getIconLocation() if voIcon: pageData.append( "voIcon : '%s'" % voIcon ) pageData.append( "voURL : '%s'" % gWebConfig.getIconURL() ) return "{%s}" % ",".join( pageData )