Skip to content

Commit 026c245

Browse files
authored
Merge pull request #8232 from 4teamwork/ran/TI-3178/dossier-resolve-end
Add automatically set end date feature
2 parents d244e06 + 7b8ca5e commit 026c245

10 files changed

Lines changed: 40 additions & 2 deletions

File tree

changes/TI-3178.feature

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Implement automatically set dossier end date during resolve feature flag. [ran]

opengever/api/tests/test_config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ def test_config_contains_features(self, browser):
6666
u'activity': False,
6767
u'archival_file_conversion': False,
6868
u'archival_file_conversion_blacklist': [],
69+
u'automatically_set_end_date': False,
6970
u'changed_for_end_date': True,
7071
u'classic_ui_enabled': True,
7172
u'contacts': 'plone',

opengever/base/configuration.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,6 +196,7 @@ def get_features(self):
196196
interface=IOfficeConnectorSettings
197197
)
198198
features['sign'] = is_sign_feature_enabled()
199+
features['automatically_set_end_date'] = api.portal.get_registry_record('automatically_set_end_date', interface=IDossierResolveProperties) # noqa
199200

200201
return features
201202

opengever/base/tests/test_configuration_adapter.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ def test_configuration(self):
112112
('multiple_dossier_types', False),
113113
('oc_plugin_check_enabled', False),
114114
('sign', False),
115+
('automatically_set_end_date', False),
115116
])),
116117
('root_url', 'http://nohost/plone'),
117118
('portal_url', 'http://nohost/portal'),

opengever/core/upgrades/20260316153724__add_automatically_set_end_date_feature_flag/__init__.py

Whitespace-only changes.
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<registry>
2+
<records interface="opengever.dossier.interfaces.IDossierResolveProperties">
3+
<value key="automatically_set_end_date">False</value>
4+
</records>
5+
</registry>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from ftw.upgrade import UpgradeStep
2+
3+
4+
class addAutomaticallySetEndDate(UpgradeStep):
5+
"""Add automactically set end date feature flag.
6+
"""
7+
8+
def __call__(self):
9+
self.install_upgrade_profile()

opengever/dossier/interfaces.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,14 @@ class IDossierResolveProperties(Interface):
264264
default=True
265265
)
266266

267+
automatically_set_end_date = schema.Bool(
268+
title=u"Set earliest possible end date if original end date is too early",
269+
description=u'When True, if invalid end date is set, it is automatically '
270+
'corrected to earliest possible end date. If set to False, the '
271+
'resolve operation will throw invalid end date error.',
272+
default=False
273+
)
274+
267275

268276
class IDossierType(Interface):
269277
"""plone.app.registry schema for the dossier types setting."""

opengever/dossier/resolve.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,12 @@ def is_archive_form_needed(dossier):
8989
return True
9090

9191

92+
def is_automatically_set_end_date_enabled():
93+
return api.portal.get_registry_record(
94+
'automatically_set_end_date',
95+
IDossierResolveProperties)
96+
97+
9298
class ValidResolverNamesVocabularyFactory(object):
9399
"""Return a vocabulary that contains the names of all named-adapters
94100
registered as IDossierResolver for IDossierMarker.
@@ -341,7 +347,11 @@ def resolve(self, end_date=None, auto_close_tasks=False, **kwargs):
341347
elif is_archive_form_needed(self.context) and not end_date:
342348
raise TypeError
343349

344-
end_date = end_date or self.context.earliest_possible_end_date()
350+
if end_date is None:
351+
end_date = self.context.earliest_possible_end_date()
352+
elif is_automatically_set_end_date_enabled():
353+
end_date = max(end_date, self.context.earliest_possible_end_date())
354+
345355
self._recursive_resolve(
346356
self.context, end_date, triggering_dossier=True, **kwargs)
347357

@@ -607,7 +617,8 @@ def _recursive_date_validation(self, dossier):
607617
# invalid. In this case, should allow the resolving the main dossier
608618
# anyway, and correct the invalid end date during dossier resolution.
609619
if not dossier.is_resolved() and not dossier.has_valid_enddate():
610-
self._invalid_dates.append(dossier.title)
620+
if not is_automatically_set_end_date_enabled():
621+
self._invalid_dates.append(dossier.title)
611622

612623
# recursively check subdossiers
613624
subdossiers = dossier.get_subdossiers(depth=1)

opengever/testing/integration_test_case.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@
7171
'bumblebee-open-pdf-new-tab': 'opengever.bumblebee.interfaces.IGeverBumblebeeSettings.open_pdf_in_a_new_window',
7272
'bumblebee-auto-refresh': 'opengever.bumblebee.interfaces.IGeverBumblebeeSettings.is_auto_refresh_enabled',
7373
'changed_for_end_date': 'opengever.dossier.interfaces.IDossierResolveProperties.use_changed_for_end_date',
74+
'automatically_set_end_date': 'opengever.dossier.interfaces.IDossierResolveProperties.automatically_set_end_date',
7475
'disposition-disregard-retention-period': 'opengever.disposition.interfaces.IDispositionSettings.disregard_retention_period', # noqa
7576
'doc-properties': 'opengever.dossier.interfaces.ITemplateFolderProperties.create_doc_properties',
7677
'docugate': 'opengever.docugate.interfaces.IDocugateSettings.is_feature_enabled',

0 commit comments

Comments
 (0)