diff --git a/SciXPipelineUtils/scix_id.py b/SciXPipelineUtils/scix_id.py index a7ccff8..dffa5be 100644 --- a/SciXPipelineUtils/scix_id.py +++ b/SciXPipelineUtils/scix_id.py @@ -209,14 +209,21 @@ def generate_bib_data_hash(hash_data, strip_characters=True, user_fields=None): "copyright", ] - if user_fields: - unique_fields = user_fields + hash_data_fields = list(hash_data.keys()) - for field in unique_fields: - try: - hash_data.pop(field) - except Exception: - continue + if user_fields: + for field in hash_data_fields: + if field not in user_fields: + try: + hash_data.pop(field) + except Exception: + continue + else: + for field in unique_fields: + try: + hash_data.pop(field) + except Exception: + continue if strip_characters and hash_data.get("abs"): hash_data["abs"][0] = re.sub("<[^<]+?>", "", hash_data.get("abs")[0]) diff --git a/tests/test_scix_id.py b/tests/test_scix_id.py index 3b72cfb..ee23e5b 100644 --- a/tests/test_scix_id.py +++ b/tests/test_scix_id.py @@ -81,7 +81,7 @@ def test_generate_scix_id_user_fields(self): user_fields = ["id"] scix_id = scixid.generate_scix_id(test_bib_data, user_fields=user_fields) scix_id_2 = scixid.generate_scix_id(test_bib_data) - self.assertEqual(scix_id, "3YG1-418S-68AF") + self.assertEqual(scix_id, "44GP-FCA0-SEWD") self.assertNotEqual(scix_id, scix_id_2) def test_generate_scix_id_special_characters_true(self):