Skip to content

Commit

Permalink
Added assigned_group default value.
Browse files Browse the repository at this point in the history
default_value decorator didn't worked. Schema defaultFactory is used but is called also in view mode when field is None and can't be less easily overrided !
  • Loading branch information
sgeulette committed Oct 30, 2015
1 parent 06b50c8 commit 622350e
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 7 deletions.
3 changes: 3 additions & 0 deletions CHANGES.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ Changelog
[sgeulette]
- Added assigned_group and due_date indexes. Added indexer methods avoiding acquisition for children. Do not store None in catalog
[sgeulette]
- Added assigned_group default value. default_value decorator didn't worked.
Schema defaultFactory is used but is called also in view mode when field is None and can't be less easily overrided !
[sgeulette]
- Changed workflow to use 'Request review' guard permission to differentiate Reviewer and editor transitions (like in plone workflows)
[sgeulette]
- Added item_view as default: use simple item view on task content
Expand Down
23 changes: 18 additions & 5 deletions src/collective/task/behaviors.py
Original file line number Diff line number Diff line change
@@ -1,15 +1,17 @@
# -*- coding: utf-8 -*-
"""Behaviors."""
from zope.component import getUtility
from zope.interface import alsoProvides, Interface
from zope.interface import alsoProvides, Interface, provider
from zope import schema
from zope.schema.interfaces import IContextAwareDefaultFactory
from zope.schema.interfaces import IVocabularyFactory
from zope.schema.vocabulary import SimpleVocabulary, SimpleTerm

from Products.CMFPlone.utils import base_hasattr
from plone import api
from plone.app.textfield import RichText
from plone.autoform.interfaces import IFormFieldProvider
from plone.directives.form.value import default_value
from plone.directives.form import default_value
from plone.supermodel import model
from plone.supermodel.directives import fieldset

Expand Down Expand Up @@ -47,6 +49,17 @@ def get_users_vocabulary(group):
return SimpleVocabulary(terms)


@provider(IContextAwareDefaultFactory)
def get_parent_assigned_group(context):
""" If parent has assigned_group, set it as default value """
# Are we in add form ?
if not context.REQUEST.get('PATH_INFO', '/').split('/')[-1].startswith('++add++'):
return None
if base_hasattr(context, 'assigned_group') and context.assigned_group:
return context.assigned_group
return None


class ITaskContainer(Interface):

"""Marker interface for task containers."""
Expand All @@ -73,7 +86,8 @@ class ITask(model.Schema):
'vocab_method': get_users_vocabulary,
'control_param': 'group',
},
)
),
defaultFactory=get_parent_assigned_group
)

assigned_user = LocalRoleField(
Expand Down Expand Up @@ -125,8 +139,7 @@ def get_current_user_id(data):
current_user = api.user.get_current()
if current_user:
return current_user.getId()

return ""
return None


alsoProvides(ITask, IFormFieldProvider)
Expand Down
4 changes: 2 additions & 2 deletions src/collective/task/interfaces.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
from zope import schema
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
from plone.app.dexterity import PloneMessageFactory as _PMF
from plone.dexterity.content import IDexterityContainer
from plone.supermodel import model


class ICollectiveTaskLayer(IDefaultBrowserLayer):
"""Marker interface that defines a browser layer."""


class ITaskContent(IDexterityContainer):
class ITaskContent(model.Schema):
""" Interface for task content type """

title = schema.TextLine(
Expand Down

0 comments on commit 622350e

Please sign in to comment.