diff --git a/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml b/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml index 8fcd484f1324d03fb51897f699c72954b4222cb9..c52655ce75df4c2517040d006e46e251b6192a75 100644 --- a/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml +++ b/bt5/erp5_ingestion/SkinTemplateItem/portal_skins/erp5_ingestion/Document_getPropertyDictFromUserLogin.xml @@ -56,11 +56,22 @@ User would be usually the current user, but sometimes the name has to be given e if e.g. the doc is contributed by email, and the script is run by zope user.\n """\n assignment_dict = context.ERP5Site_getPersonAssignmentDict(user_name=user_name)\n +group_list = assignment_dict[\'group_list\']\n \n -# XXX: make list of properties configurable through preferences\n -return {\'group_list\': assignment_dict[\'group_list\'],\n - \'site_list\': assignment_dict[\'site_list\'],\n - \'function_list\': assignment_dict[\'function_list\']}\n +if group_list:\n + group_level_dict = {}\n + for group in group_list:\n + group_level = len(group.split("/"))\n + group_level_dict[group] = group_level\n + \n + #Get the highest levels groups of the assignments\n + ##if group_list = [\'g1\', \'g1/g1.1\', \'g1/g1.2\'] returns [\'g1\']\n + ##if group_list = [\'g1/g1.1\', \'g1/g1.2\'] returns [\'g1/g1.1\', \'g1/g1.2\']\n + highest_level_group_value = min(group_level_dict.itervalues())\n + highest_level_group_list = [k for k in group_level_dict if group_level_dict[k] == highest_level_group_value]\n + return {\'group_list\': highest_level_group_list}\n +\n +return {}\n </string> </value> </item> <item> diff --git a/product/ERP5OOo/tests/testIngestion.py b/product/ERP5OOo/tests/testIngestion.py index 1a92a25396fe5f11fbaa5f1c777b216f44dd5d65..ec93954fda01c840944b7557cf93524be07f88a7 100644 --- a/product/ERP5OOo/tests/testIngestion.py +++ b/product/ERP5OOo/tests/testIngestion.py @@ -187,6 +187,12 @@ class TestIngestion(ERP5TypeTestCase): ,{'path' : 'group/anybody' ,'title': 'Anybody' } + ,{'path' : 'group/anybody/a1' + ,'title': 'Anybody 1' + } + ,{'path' : 'group/anybody/a2' + ,'title': 'Anybody 2' + } ,{'path' : 'publication_section/cop' ,'title': 'COPs' } @@ -1464,9 +1470,36 @@ class TestIngestion(ERP5TypeTestCase): document.discoverMetadata(document.getFilename(), 'contributor1') self.tic() self.assertEqual(document.getFilename(), 'TEST-en-002.doc') - self.assertEqual('musician/wind/saxophone', document.getFunction()) self.assertEqual('anybody', document.getGroup()) - self.assertEqual('arctic/spitsbergen', document.getSite()) + self.assertEqual(None, document.getFunction()) + self.assertEqual(None, document.getSite()) + + def test_TestMetadataDiscoveryFromUserLoginHigherGroup(self): + portal = self.portal + contribution_tool = getToolByName(portal, 'portal_contributions') + + user = self.createUser(reference='contributor3') + self.createUserAssignment(user, dict(group='anybody/a1',)) + self.createUserAssignment(user, dict(group='anybody/a2',)) + self.createUserAssignment(user, dict(group='anybody',)) + + other_user = self.createUser(reference='contributor2') + self.createUserAssignment(other_user, dict(group='anybody/a1',)) + self.createUserAssignment(other_user, dict(group='anybody/a2',)) + + portal.document_module.manage_setLocalRoles('contributor2', ['Assignor',]) + self.tic() + file_object = makeFileUpload('TEST-en-002.doc') + document = contribution_tool.newContent(file=file_object) + + # We only consider the higher group of assignments + document.discoverMetadata(document.getFilename(), user.getReference()) + self.tic() + self.assertEqual(document.getFilename(), 'TEST-en-002.doc') + self.assertEqual(['anybody'], document.getGroupList()) + + document.discoverMetadata(document.getFilename(), other_user.getReference()) + self.assertEqual(['anybody/a1', 'anybody/a2'], document.getGroupList()) def test_IngestionConfigurationByTypeBasedMethod_usecase1(self): """How to configure meta data discovery so that each time a file