Beispiel #1
0
 def get_report_template_path(self):
     sitting = removeSecurityProxy(self.context)
     # !+ReportXHTMLTemplateFactory
     vocab = vocabulary.report_xhtml_template_factory(sitting)
     #!+report_templates(mr, aug-2014) externalize logic off feature parameter
     report_type = "sitting_agenda"
     #!+TAGS(mb, Feb-2013) Deprecate with tags. Configure as wf/feature.
     if "minutes" in sitting.status:
         report_type = "sitting_minutes"
     try:
         report_template_path = vocab.getTermByToken(report_type).value
     except LookupError:
         vtokens = [t.token for t in vocab._terms]
         log.warning(
             "Sitting %s Workflow Transition Handler - "
             "entry for report type %r NOT found in vocabulary: %s - "
             "proceeding with the template for first entry found: %r ",
             sitting, report_type, vtokens, vtokens[0])
         report_template_path = vocab._terms[0].value
     return report_template_path
Beispiel #2
0
def default_reports(sitting, event):
    #!+REPORTS(mb, Feb-2013) - remove this handler for workflow events:
    # EITHER a publish_report action, maybe configure this as a workflow action 
    # (so not hardwired to status/workflow event) 
    # OR make it part of sitting feature options e.g. publish state and report 
    # template.
    if "published" in sitting.status:
        sitting = removeSecurityProxy(sitting)
        report_type = "sitting_agenda"
        report_title = _("report_title_order_of_the_day", 
            default=u"Order of the day")
        if "minutes" in sitting.status:
            report_type = "sitting_minutes"
            report_title =  _("report_title_votes_and_proceedings", 
                default=u"Votes and Proceedings")
        sittings = [ExpandedSitting(sitting)]
        report = domain.Report()
        session = Session()
        # !+GROUP_AS_OWNER(mr, apr-2012) we assume for now that the "owner" of
        # the report is the currently logged in user.
        report.owner_id = get_login_user().user_id
        report.created_date = datetime.datetime.now()
        report.group_id = sitting.group_id
        # !+ReportXHTMLTemplateFactory
        # generate using html template in bungeni_custom
        vocab = vocabulary.report_xhtml_template_factory(sitting)
        try:
            report_template_path = vocab.getTermByToken(report_type).value
        except LookupError:
            vtokens = [ t.token for t in vocab._terms ]
            # first check if we have any values in the reports vocab for this context
            if not vtokens:
                log.error("Sitting %s Workflow Transition Handler - "
                    "entry for report type %r NOT found in EMPTY vocabulary: %s", 
                        sitting, report_type, vtokens)
                raise
            # ok, as a tmp workaround, pick off the first term value in the reports vocab
            log.warning("Sitting %s Workflow Transition Handler - "
                "entry for report type %r NOT found in vocabulary: %s - "
                "proceeding with the template for first entry found: %r ",
                    sitting, report_type, vtokens, vtokens[0])
            report_template_path = vocab._terms[0].value
        generator = generators.ReportGeneratorXHTML(report_template_path)
        generator.title = report_title
        report_title_i18n = translate(report_title, 
            target_language=generator.language)
        report_context = ReportContext(sittings=sittings, 
            title=report_title_i18n)
        generator.context = report_context
        report.title = report_title_i18n
        report.language = generator.language
        report.body = generator.generate_report(common.get_request())
        session.add(report)
        session.flush()
        notify(ObjectCreatedEvent(report))
        sr = domain.SittingReport()
        sr.report = report
        sr.sitting = sitting
        session.add(sr)
        session.flush()
        notify(ObjectCreatedEvent(sr))
Beispiel #3
0
def default_reports(sitting, event):
    #!+REPORTS(mb, Feb-2013) - remove this handler for workflow events:
    # EITHER a publish_report action, maybe configure this as a workflow action
    # (so not hardwired to status/workflow event)
    # OR make it part of sitting feature options e.g. publish state and report
    # template.
    if "published" in sitting.status:
        sitting = removeSecurityProxy(sitting)
        report_type = "sitting_agenda"
        report_title = _("report_title_order_of_the_day",
                         default=u"Order of the day")
        if "minutes" in sitting.status:
            report_type = "sitting_minutes"
            report_title = _("report_title_votes_and_proceedings",
                             default=u"Votes and Proceedings")
        sittings = [ExpandedSitting(sitting)]
        report = domain.Report()
        session = Session()
        # !+GROUP_AS_OWNER(mr, apr-2012) we assume for now that the "owner" of
        # the report is the currently logged in user.
        report.owner_id = get_login_user().user_id
        report.created_date = datetime.datetime.now()
        report.group_id = sitting.group_id
        # !+ReportXHTMLTemplateFactory
        # generate using html template in bungeni_custom
        vocab = vocabulary.report_xhtml_template_factory(sitting)
        try:
            report_template_path = vocab.getTermByToken(report_type).value
        except LookupError:
            vtokens = [t.token for t in vocab._terms]
            # first check if we have any values in the reports vocab for this context
            if not vtokens:
                log.error(
                    "Sitting %s Workflow Transition Handler - "
                    "entry for report type %r NOT found in EMPTY vocabulary: %s",
                    sitting, report_type, vtokens)
                raise
            # ok, as a tmp workaround, pick off the first term value in the reports vocab
            log.warning(
                "Sitting %s Workflow Transition Handler - "
                "entry for report type %r NOT found in vocabulary: %s - "
                "proceeding with the template for first entry found: %r ",
                sitting, report_type, vtokens, vtokens[0])
            report_template_path = vocab._terms[0].value
        generator = generators.ReportGeneratorXHTML(report_template_path)
        generator.title = report_title
        report_title_i18n = translate(report_title,
                                      target_language=generator.language)
        report_context = ReportContext(sittings=sittings,
                                       title=report_title_i18n)
        generator.context = report_context
        report.title = report_title_i18n
        report.language = generator.language
        report.body = generator.generate_report(common.get_request())
        session.add(report)
        session.flush()
        notify(ObjectCreatedEvent(report))
        sr = domain.SittingReport()
        sr.report = report
        sr.sitting = sitting
        session.add(sr)
        session.flush()
        notify(ObjectCreatedEvent(sr))