Personal tools
Skip to content. | Skip to navigation
Integration testing framework for CMF CMFTestCase is a thin layer on top of the ZopeTestCase package. It has been developed to simplify testing of CMF-based applications and products.
This product declares a topic content type for the Zope Content Management Framework (CMF).
The Zope ClockServer product provides a mechanism for users to call Zope object methods without the use of an external clock source (e.g. cron/wget). It operates by acting as a medusa "server", essentially coopting Zope's asyncore mainloop and injecting "fake" requests into Zope's ZPublisher. Despite the complicated description, it's rather easy to use.
Provides a archetypes field validator for content types of files
A Plone product that enables you to add portlets to the central column in a page
This product provides fully customizable workflows for the CMF portal_workflow tool. Developing a workflow ===================== This tool is easiest to use if you draw a state diagram first. Your diagram should have: - States (bubbles) - Transitions (arrows) - Variables (both in states and transitions) Remember to consider all the states your content can be in. Consider the actions users will perform to make the transitions between states. And consider not only who will be allowed to perform what functions, but also who will be *required* to perform certain functions. On the "States" tab, add a state with a simple ID for each state on your diagram. On the "Transitions" tab, add a transition with a simple ID for each group of arrows that point to the same state and have similar characteristics. Then for each state choose which transitions are allowed to leave that state. Variables are useful for keeping track of things that aren't very well represented as separate states, such as counters or information about the action that was last performed. You can create variables that get stored alongside the workflow state and you can make those variables available in catalog searches. Some variables, such as the review history, should not be stored at all. Those variables are accessible through the getInfoFor() interface. Worklists are a way to make people aware of tasks they are required to perform. Worklists are implemented as a catalog query that puts actions in the actions box when there is some task the user needs to perform. Most of the time you just need to enter a state ID, a role name, and the information to put in the actions box. You can manage all of the actions a user can perform on an object by setting up permissions to be managed by the workflow. Using the "Permissions" tab, select which permissions should be state-dependent. Then in each state, using the "permissions" tab, set up the role to permission mappings appropriate for that state. Finally, you can extend the workflow with scripts. Scripts can be External Methods, Python Scripts, DTML methods, or any other callable Zope object. They are accessible by name in expressions. Scripts are invoked with a state_change object as the first argument; see expressions.stx. Once you've crafted your workflow, you hook it up with a content type by using the portal_workflow top-level "Workflows" tab. Specify the workflow name in the target content type's box.
DCWorkflowGraph is a DCWorkflow graphic viewer now. It uses Graphviz. I want to make it a graphic editor for DCWorkflow, just like what OpenFlowEditor does.
A Zope 2 catalog index with support for indexing of recurring events, following the icalendar standard. It is a drop-in replacement for the Zope2 DateIndex and will produce the same results for non-recurring dates. The DateRecurringIndex accepts following parameters: id Required. The name of the field or object attribute to be indexed. recurdef Required. The name of the object attribute, which returns the icalendar rrule (recurrence rule) string. until Optional. The name of the objects attribute, which returns the date, until the recurrence should happen. The recurrence definition can also contain an UNTIL component. If both are defined, the recurrence calculation stops whenever the first until-date is met. If not given at all, there is a MAXCOUNT ceiling constant, defined in plone.event.recurrence, which defines the maximum number of occurences. Datetime.DateTime vs. datetime.datetime Inside Zope2 everybody uses DateTime.DateTime or iow the Zope-DateTime. At time of writing Zope-DateTime (around 1998) there was no good date/time implementation in python. But these days we have a better implementation. Even if the pythons datetime implementation has its problems, together with pytz for timezone handling it is very mature. So, why is it covered here? Just because dst-handling over recurring events works only if the start and until values are non-naive python datetimes. Just keep it in mind when using this index: If you use recurring dates and you want dst-adjust make sure your implementation returns a python datetime. And also keep in mind: If youre i.e. in Austria with CET timezone, add a recurring date: it will look fine to you, every day at 11:00am, doesnt matter if DST or not, your event happens. If you go international and your event is shown in a different timezone - or in the same in a country without DST at all - it might differ and is not always at the the time.
This product adds a hook so that a deadlocked Zope process can be debugged, by dumping a traceback of all running python processes. The dump is sent to the event log (at the DEBUG level) and returned to the browser (even though the Zope is deadlocked and doesn't answer any other requests!). DeadlockDebugger can of course also be used to debug Zope in non-deadlock situations, when a Zope process is taking a long time and you wish to know what code is being executed. The standard way to call it is to go to the URL:: http://yourzopesite:8080/manage_debug_threads?sesame This will return a dump, and also send this dump to the event log.
EasyNewsletter is a simple but powerful newsletter/mailing product for Plone. Features Support Text and HTML Newsletter (including images) Support manual written Newsletters/Mailings Plonish (can use Plone's Collections to collect content) Variable templates to generate newsletter content Subscribing / Unsubscribing and can use Plone Members/Groups as receivers (works also with Membrane) support for external subscriber sources (configured through a Zope utility) support for external delivery services (other than Plone MailHost) TTW customizeable output Template to generate nice HTML Newsletter Support personalized mails Support for sending daily issues automatically, based on collections (by cron or clock-server) mass import/export subscribers via csv support external filtering/manipulation (filter out or add more subscribers) plugins