Plone as 'task management' (?)


I have been asked if I can make a kind of 'task management' system for a local football (soccer) club (it is not a 'commercial club', basically the parents are doing the work, also the 'coaching').

Basically, they have teams they shall be able to send in a 'request for material' or 'something that has to be fixed' (see screenshot). Filling out the request does not require user to be logged in .

After the request has been made, there will be a workflow.

I am thinking about
Making an EasyForm that adds content of type 'MaterialRequest' or similar and having a mail rule that sends message to admin which then assigns the task to someone. When the task has been completed ( in the case of the screenshot, when the footballs are ready to be collected in the 'club house'), we change the workflow state to 'finished' and an email is sent to the 'requester' ('Your material is ready to be picked up')

Everybody should be able to see the 'open requests' (so if a team has 2 coaches, the other coach / parents etc can see 'what is the state of the request).

Any thoughts or/and advice about doing this in Plone?

Upload of image just spinning, I put it here:

You could try Products.Poi, which is the issue tracker that was used on itself many years ago. I have maintained it for years, but am not maintaining or using it anymore. It was updated to Plone 5.0 and 5.1 by some people from Six Feet Up, including moving to Dexterity. Two years ago they were working on moving it to Plone 5.2, but I do not see progress.

I tried to get it working in Plone 5.2 a little ago, but had no success.

So doy think it will be 'much better than the approach I described' ? (and what would be better).

So you cobble things together with a simple TTW content type and some content rules? I never use the content rules, but that should work yes, and require less programming.

Maybe using this product?

1 Like

Thanks. Yes, I was thinking about that approach (have creating content with PloneFormGen many years ago, hopefully this is similar).

Hmm. not sure if it works with Python 3, because I get startswith first arg must be bytes or a tuple of bytes, not str. If I remember right, that comes from some change 2.7 to 3

if you refer to the tests, the code with startswith works on both python2 and python3. tox.ini refers to python3 explicity:

Can you post the traceback?

Using the code from GitHub works. Looks like I had a typo in 'src', so it used that instead.

So far, so good.
There is only one thing I can not figure out:

If I want the title of the Dexterity content type to be set by a 'unchangeable field'.
How can I do that?

For example: is it possible to use the title field or a label field ?
Did try mapping for example

title title
mylabel title

without any luck

Well you could generate the title yourself (so no title field on the schema):

class MyItem(Item):
    """Object instance."""

    def title(self):
        return self.generate_title()

    def Title(self):  # noqa: N802
        return self.generate_title()

I used this pattern for an autogenerated title. If you rely on the title to be indexed, ensure that you re-index your content when the data for you generated title changes.

If you want the title to be addable when you create the object use permissions and only allow it for the add form.

1 Like

Can't you can use the workflow state to make the field editable only by manager on a particular state? Defining something always readonly or autogenerated sometimes gives you too much limitations.

Maybe that could work, if I set a default value, or maybe do the same and set it to hidden (?)

UPDATE: This would technically work perfectly OK, but I find the UI to use it to be very 'unfriendly'.
To tell users that they need to click on the 'advanced tab', and then write something like 'string:something' will not work.

It is a pitty that the default value can not be set from the 'Edit field' default tab…

If I (could) save the UID of the EasyForm, I could use that to generate (or show) the title so that could be an option.

This can easily be done by modifying collective.easyformplugin.createdx , but I would prefer a solution that could keep as many add-ons as possible 'unmodified'.

Maybe it would be OK to always save a reference to the form that created the (Dexterity) Content (object) @agitator @jensens ?

UPDATE: In fact, it might be useful if there was a way to somehow map 'several fields to one', for example:

firstname,lastname fullname