class ScheduleEventEditView(CalendarEventView, form.Form): title = _("Modify meeting information") form_fields = form.fields( HtmlFragment(__name__='description', title=_("Description"), required=False)) template = ViewPageTemplateFile("templates/schedule_event_edit.pt") def setUpWidgets(self, ignore_request=False): self.widgets = form.setUpEditWidgets(self.form_fields, self.prefix, self.context, self.request, ignore_request=ignore_request) def __init__(self, context, request): form.Form.__init__(self, context, request) CalendarEventView.__init__(self, context, request) def redirect_to_parent(self): url = absoluteURL(self.context.__parent__, self.request) self.request.response.redirect(url) return '' @form.action(_("Apply")) def handle_edit_action(self, action, data): self.context.description = data['description'] return self.redirect_to_parent() @form.action(_("Cancel"), condition=form.haveInputWidgets) def handle_cancel_action(self, action, data): return self.redirect_to_parent()
def __init__(self, context, request): self.context = context self.request = request interface.declarations.alsoProvides(removeSecurityProxy(self.context), IWorkspaceReportGeneration) self.form_fields = form.fields(self.IReportBuilder) self.form_fields["start_date"].custom_widget = widgets.SelectDateWidget super(ReportBuilder, self).__init__(context, request)
def __init__(self, context, request): self.context = context self.request = request interface.declarations.alsoProvides(removeSecurityProxy(self.context), IWorkspaceReportGeneration ) self.form_fields = form.fields(self.IReportBuilder) self.form_fields["start_date"].custom_widget = widgets.SelectDateWidget super(ReportBuilder, self).__init__(context, request)
class ReportBuilder(form.Form, DateTimeFormatMixin): template = namedtemplate.NamedTemplate("alchemist.form") form_fields = form.fields(IReportBuilder) form_fields["start_date"].custom_widget = widgets.SelectDateWidget sittings = [] publication_date = datetime.datetime.today().date() publication_number = "" title = _(u"Report Title") generated_content = None show_preview = False language = None def __init__(self, context, request): self.context = context self.request = request interface.declarations.alsoProvides(removeSecurityProxy(self.context), IWorkspaceReportGeneration) if IWorkspaceUnderConsideration.providedBy(self.context): #change the vocabulary self.form_fields["report_type"].field.vocabulary=\ vocabulary.document_xhtml_template_factory super(ReportBuilder, self).__init__(context, request) def get_end_date(self, start_date, hours): end_date = start_date + datetime.timedelta(seconds=hours * 3600) return end_date def buildSittings(self): if ISitting.providedBy(self.context): trusted = removeSecurityProxy(self.context) order = "real_order" trusted.item_schedule.sort(key=operator.attrgetter(order)) self.sittings.append(trusted) else: sittings = ISchedulingContext(self.context).get_sittings( self.start_date, self.end_date).values() self.sittings = map(removeSecurityProxy, sittings) self.sittings = [ExpandedSitting(sitting) for sitting in self.sittings] def buildContext(self): if IWorkspaceScheduling.providedBy(self.request): self.buildSittings() elif IWorkspaceUnderConsideration.providedBy(self.context): default_filters = { 'sort_dir': u'asc', 'filter_status_date': u'%s->%s' % (self.start_date.isoformat(), self.end_date.isoformat()), 'sort_on': u'status_date', 'filter_type': u'', } doc_container = self.context.publishTraverse( self.request, "documents") for type_key, ti in capi.iter_type_info(): workflow = ti.workflow if workflow and workflow.has_feature("workspace"): #add generators of various doctypes container_name = naming.plural(type_key) filters = dict(default_filters) filters['filter_type'] = type_key setattr(self, container_name, doc_container.query(**filters)[0]) def generateContent(self, data): self.start_date = (data.get("start_date") or datetime.datetime.today().date()) generator = generators.ReportGeneratorXHTML(data.get("report_type")) self.language = generator.language self.title = generator.title self.language = generator.language self.publication_number = data.get("publication_number") self.end_date = self.get_end_date(self.start_date, generator.coverage) self.buildContext() generator.context = self return generator.generateReport() @form.action(_(u"Preview"), name="preview") def handle_preview(self, action, data): """Generate preview of the report """ self.show_preview = True self.generated_content = self.generateContent(data) self.status = _(u"See the preview of the report below") return self.template() @form.action(_("publish_report", default=u"Publish"), name="publish") def handle_publish(self, action, data): self.generated_content = self.generateContent(data) if IWorkspaceScheduling.providedBy(self.request): if not hasattr(self.context, "group_id"): context_group_id = ISchedulingContext(self.context).group_id else: context_group_id = self.context.group_id else: #get the chamber id context_group_id = get_chamber_for_context( self.context).parliament_id report = domain.Report( title=self.title, start_date=self.start_date, end_date=self.end_date, body=self.generated_content, owner_id=get_login_user().user_id, # !+GROUP_AS_OWNER language=self.language, group_id=context_group_id) session = Session() session.add(report) session.flush() notify(ObjectCreatedEvent(report)) self.status = _(u"Report has been processed and saved") return self.template()
class ReportBuilder(form.Form, DateTimeFormatMixin): template = namedtemplate.NamedTemplate("alchemist.form") form_fields = form.fields(IReportBuilder) form_fields["start_date"].custom_widget = widgets.SelectDateWidget sittings = [] publication_date = datetime.datetime.today().date() publication_number = "" title = _(u"Report Title") generated_content = None show_preview = False language = None def __init__(self, context, request): self.context = context self.request = request interface.declarations.alsoProvides(removeSecurityProxy(self.context), IWorkspaceReportGeneration) super(ReportBuilder, self).__init__(context, request) def get_end_date(self, start_date, hours): end_date = start_date + datetime.timedelta(seconds=hours * 3600) return end_date def buildSittings(self, start_date, end_date): if IGroupSitting.providedBy(self.context): trusted = removeSecurityProxy(self.context) order = "real_order" trusted.item_schedule.sort(key=operator.attrgetter(order)) self.sittings.append(trusted) else: sittings = ISchedulingContext(self.context).get_sittings( start_date, end_date).values() self.sittings = map(removeSecurityProxy, sittings) self.sittings = [ExpandedSitting(sitting) for sitting in self.sittings] def generateContent(self, data): self.start_date = (data.get("start_date") or datetime.datetime.today().date()) generator = generators.ReportGeneratorXHTML(data.get("report_type")) self.language = generator.language self.title = generator.title self.language = generator.language self.publication_number = data.get("publication_number") self.end_date = self.get_end_date(self.start_date, generator.coverage) self.buildSittings(self.start_date, self.end_date) generator.context = self return generator.generateReport() @form.action(_(u"Preview")) def handle_preview(self, action, data): """Generate preview of the report """ self.show_preview = True self.generated_content = self.generateContent(data) self.status = _(u"See the preview of the report below") return self.template() @form.action(_(u"Publish")) def handle_publish(self, action, data): self.generated_content = self.generateContent(data) if not hasattr(self.context, "group_id"): context_group_id = ISchedulingContext(self.context).group_id else: context_group_id = self.context.group_id report = domain.Report(short_name=self.title, start_date=self.start_date, end_date=self.end_date, body_text=self.generated_content, owner_id=get_db_user_id(), language=self.language, group_id=context_group_id) session = Session() session.add(report) session.flush() self.status = _(u"Report has been processed and saved") return self.template()
class Form2(form.EditForm): form_fields = form.fields(IIntTest2)
class Form(form.EditForm): form_fields = form.fields(ITextTest)
class Form(form.EditForm): form_fields = form.fields(IDatetimeTest)
class Form(form.EditForm): form_fields = form.fields(IDecimalTest)
class Form(form.EditForm): form_fields = form.fields(ITestContact)
class Form(form.EditForm): form_fields = form.fields(IRadioTest)
class Form(form.EditForm): form_fields = form.fields(IFileTest) form_fields['f1'].custom_widget = FileWidget form_fields['f2'].custom_widget = FileWidget
class Form(form.EditForm): form_fields = form.fields(IFoo) form_fields['bar'].custom_widget = BooleanRadioWidget
class Form(form.EditForm): form_fields = form.fields(IBoolTest)
class Form(form.EditForm): form_fields = form.fields(IFloatTest)