#!/usr/bin/env python

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

class ListProposalsCli(DmCli):
    def __init__(self):
        DmCli.__init__(self)
        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. It may be provided via environment variable DM_BSS_LOGIN_FILE.')

    def checkArgs(self):
        pass

    def runCommand(self):
        self.parseArgs(usage="""
    dm-list-proposals 
        [--run=RUNNAME]
        [--bss-login-file=BSSLOGINFILE]

Description:
    Retrieves list of beamline proposals for the given run.
        """)
        self.checkArgs()
        api = ApsBssApi(loginFile=self.options.bssLoginFile)
        proposals = api.listBeamlineProposals(runName=self.options.runName)
        for proposal in proposals:
            print proposal.getDisplayString(self.getDisplayKeys(), self.getDisplayFormat())

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