def test_sharing(self):
     """
     saving, loading and sharing semantics
     """
     def _menu(cred, private=[], unit=[], public=[], quick=[]):
         opts = reports.ReportMenu(cred, 2, 'line').by_sharing
         self.assertEqual([i.label for i in opts['private']], private)
         self.assertEqual([i.label for i in opts['unit']], unit)
         self.assertEqual([i.label for i in opts['public']], public)
         self.assertEqual([i.label for i in opts['quick']], quick)
     cred_user = testcommon.DummyCredentials()
     cred_unit = testcommon.DummyCredentials(user_id=2)
     cred_other = testcommon.DummyCredentials(user_id=2,unit_id=2)
     params = reports.new_report(2, 'line')
     params.label = 'Test Save'
     # Only visible to us
     params.sharing = 'private'
     params.save(cred_user)
     _menu(cred_user, private=['Test Save'])
     _menu(cred_unit)
     _menu(cred_other)
     # Visible to our unit
     params.sharing = 'unit'
     params.save(cred_user)
     _menu(cred_user, unit=['Test Save'])
     _menu(cred_unit, unit=['Test Save'])
     _menu(cred_other)
     # Visible to all
     params.sharing = 'public'
     params.save(cred_user)
     _menu(cred_user, public=['Test Save'])
     _menu(cred_unit, public=['Test Save'])
     _menu(cred_other, public=['Test Save'])
     # Visible to all & on home page (quick reports)
     reports.reports_cache.load()
     qr = reports.reports_cache.get_synd_unit(2, 1)
     self.assertEqual([r.label for r in qr], [])
     params.sharing = 'quick'
     params.save(cred_user)
     _menu(cred_user, quick=['Test Save'])
     _menu(cred_unit, quick=['Test Save'])
     _menu(cred_other, quick=['Test Save'])
     reports.reports_cache.load()
     qr = reports.reports_cache.get_synd_unit(2, 1)
     self.assertEqual([r.label for r in qr], ['Test Save'])
     # Loading
     loaded_params = reports.load(params.loaded_from_id, cred_user)
     self.failIf(loaded_params.check().have_errors())
     reports.delete(loaded_params.loaded_from_id)
     _menu(cred_user)
     _menu(cred_unit)
     _menu(cred_other)
     # "last" autosave
     params.autosave(cred_user)
     _menu(cred_user, private=['Most recent: Test Save']) 
     _menu(cred_unit)
     _menu(cred_other)
def main(args):
    optp = OptionParser(usage=usage)
    cmdcommon.opt_user(optp)
    cmdcommon.opt_outfile(optp)
    options, args = optp.parse_args(args)
    if len(args) != 1:
        optp.usage()

    report_id = cmdcommon.get_report_id(args[0])

    cred = cmdcommon.user_cred(options)

    params = reports.load(report_id, cred)
    cmdcommon.safe_overwrite(options, params.xmlsave, cmdcommon.OUTFILE)
def main(args):
    optp = OptionParser(usage=usage)
    cmdcommon.opt_user(optp)
    cmdcommon.opt_outfile(optp)
    options, args = optp.parse_args(args)
    if len(args) != 1:
        optp.usage()

    report_id = cmdcommon.get_report_id(args[0]) 

    cred = cmdcommon.user_cred(options)

    params = reports.load(report_id, cred)
    cmdcommon.safe_overwrite(options, params.xmlsave, cmdcommon.OUTFILE)
def main(args):
    optp = OptionParser(usage=usage)
    cmdcommon.opt_user(optp)
    cmdcommon.opt_outfile(optp)
    cmdcommon.opt_syndrome(optp)
    optp.add_option('--csv', action='store_true',
            help='For line report, use CSV format (default)')
    optp.add_option('--html', action='store_true',
            help='For line report, use HTML format')
    optp.add_option('-p', '--param-file', metavar='FILENAME',
                    help='Read report parameters from FILENAME')
    options, args = optp.parse_args(args)
    if options.param_file and args:
        optp.error('Specify a parameter file OR report name, not both')

    cred = cmdcommon.user_cred(options)

    if args:
        if len(args) > 1:
            optp.error('Specify only one report name')
        report_id = cmdcommon.get_report_id(args[0]) 
        params = reports.load(report_id, cred)
    elif options.param_file:
        if not options.syndrome:
            optp.error('Specify a syndrome')
        syndrome_id = cmdcommon.get_syndrome_id(options.syndrome)
        try:
            f = open(options.param_file, 'rU')
        except EnvironmentError, (eno, estr):
            cmdcommon.abort('%s: %s' % (options.param_file, estr))
        try:
            try:
                params = reports.parse_file(syndrome_id, f)
            finally:
                f.close()
        except reports.Error, e:
            cmdcommon.abort('%s: %s' % (options.param_file, e))
 def do_edit(self, ctx, report_id):
     if 'EXPORT' in ctx.locals._credentials.rights:
         reportparams = reports.load(int(report_id),
                                     ctx.locals._credentials)
         ctx.push_page('report_edit', reportparams)
 def do_report(self, ctx, report_id):
     if ctx.locals._credentials.rights.any('EXPORT', 'PUBREP'):
         reportparams = reports.load(int(report_id),
                                     ctx.locals._credentials)
         report_ops.run_report(ctx, reportparams)
 def do_report(self, ctx, report_id, syndrome_id):
     if ctx.locals._credentials.rights.any('EXPORT', 'PUBREP'):
         reportparams = reports.load(int(report_id),
                                     ctx.locals._credentials)
         report_ops.run_report(ctx, reportparams)