Skip to content
Snippets Groups Projects
Forked from DM / dm-docs
261 commits behind, 854 commits ahead of the upstream repository.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
getProposalCli.py 1.41 KiB
#!/usr/bin/env python

from dm.common.exceptions.invalidRequest import InvalidRequest
from dm.common.cli.dmCli import DmCli
from dm.aps_bss.api.apsBssApi import ApsBssApi

class GetProposalCli(DmCli):
    def __init__(self):
        DmCli.__init__(self)
        self.addOption('', '--id', dest='proposalId', help='Proposal id.')
        self.addOption('', '--run', dest='runName', help='Run name. If not provided, current run will be used.')
        self.addOption('', '--bss-login-file', dest='bssLoginFile', help='BSS login file. Login file  may also be specified via environment variable DM_BSS_LOGIN_FILE.')

    def checkArgs(self):
        if not self.options.proposalId:
            raise InvalidRequest('Missing proposal id.')

    def runCommand(self):
        self.parseArgs(usage="""
    dm-get-proposal --id=PROPOSALID
        [--run=RUNNAME]
        [--bss-login-file=BSSLOGINFILE]

Description:
    Retrieves beamline proposal for the given id.
        """)
        self.checkArgs()
        proposalId = int(self.options.proposalId)
        api = ApsBssApi(loginFile=self.options.bssLoginFile)
        proposal = api.getBeamlineProposal(proposalId=proposalId, runName=self.options.runName)
        print proposal.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())

#######################################################################
# Run command.
if __name__ == '__main__':
    cli = GetProposalCli()
    cli.run()