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