Пример #1
0
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()
Пример #2
0
 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)
Пример #3
0
 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)
Пример #4
0
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()
Пример #5
0
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()
Пример #6
0
class Form2(form.EditForm):
    form_fields = form.fields(IIntTest2)
Пример #7
0
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)
Пример #11
0
class Form(form.EditForm):
    form_fields = form.fields(IRadioTest)
Пример #12
0
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
Пример #14
0
class Form(form.EditForm):
    form_fields = form.fields(IBoolTest)
Пример #15
0
class Form(form.EditForm):
    form_fields = form.fields(IFloatTest)