コード例 #1
0
    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
コード例 #2
0
ファイル: acct.py プロジェクト: atsareg/BESDIRAC
  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
コード例 #3
0
ファイル: webBase.py プロジェクト: nikolalazovski/DIRACWeb
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)
コード例 #4
0
ファイル: diset.py プロジェクト: acasajus/DIRACWeb
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
コード例 #5
0
 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
コード例 #6
0
ファイル: diset.py プロジェクト: msapunov/DIRACWeb
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
コード例 #7
0
    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
コード例 #8
0
ファイル: diset.py プロジェクト: DIRACGrid/DIRACWeb
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
コード例 #9
0
ファイル: webBase.py プロジェクト: msapunov/DIRACWeb
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)
コード例 #10
0
ファイル: WebAPI.py プロジェクト: apuignav/WebAPIDIRAC
  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" )
コード例 #11
0
ファイル: webBase.py プロジェクト: atsareg/DIRACWeb
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 )
コード例 #12
0
ファイル: OAuth2.py プロジェクト: acasajus/RESTDIRAC
  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" )
コード例 #13
0
ファイル: webBase.py プロジェクト: msapunov/DIRACWeb
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 )
コード例 #14
0
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 )