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()