Skip to content

Commit

Permalink
OpenConceptLab/ocl_issues#1309 | fixing mappings importers query for …
Browse files Browse the repository at this point in the history
…existence check for special characters
  • Loading branch information
snyaggarwal committed Nov 7, 2022
1 parent 021c137 commit b24ee38
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 8 deletions.
13 changes: 9 additions & 4 deletions core/concepts/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -467,15 +467,20 @@ def get_base_queryset(cls, params): # pylint: disable=too-many-branches,too-man
)

if concept:
mnemonics = [concept, encode_string(concept, safe=' '), encode_string(concept, safe='+'),
encode_string(concept, safe='+%'), encode_string(concept, safe='% +'),
decode_string(concept), decode_string(concept, False)]
queryset = queryset.filter(mnemonic__in=mnemonics)
queryset = queryset.filter(mnemonic__in=cls.get_mnemonic_variations_for_filter(concept))
if concept_version:
queryset = queryset.filter(version=concept_version)

return cls.apply_attribute_based_filters(queryset, params)

@staticmethod
def get_mnemonic_variations_for_filter(mnemonic):
return [
mnemonic, encode_string(mnemonic, safe=' '), encode_string(mnemonic, safe='+'),
encode_string(mnemonic, safe='+%'), encode_string(mnemonic, safe='% +'),
decode_string(mnemonic), decode_string(mnemonic, False)
]

def clone(self):
concept_version = Concept(
mnemonic=self.mnemonic,
Expand Down
6 changes: 2 additions & 4 deletions core/importers/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -486,8 +486,7 @@ def get_queryset(self): # pylint: disable=too-many-branches
'map_type': self.get('map_type'),
}
if from_concept_code:
filters['from_concept_code'] = from_concept_code if is_url_encoded_string(
from_concept_code) else encode_string(from_concept_code, safe='')
filters['from_concept_code'] = Concept.get_mnemonic_variations_for_filter(from_concept_code)

versionless_from_concept_url = drop_version(from_concept_url)
from_concept = Concept.objects.filter(id=F('versioned_object_id'), uri=versionless_from_concept_url).first()
Expand Down Expand Up @@ -515,8 +514,7 @@ def get_queryset(self): # pylint: disable=too-many-branches
filters['to_source_url'] = to_source_uri

if to_concept_code:
filters['to_concept_code'] = to_concept_code if is_url_encoded_string(
to_concept_code) else encode_string(to_concept_code, safe='')
filters['to_concept_code__in'] = Concept.get_mnemonic_variations_for_filter(to_concept_code)

self.queryset = Mapping.objects.filter(**filters)

Expand Down

0 comments on commit b24ee38

Please sign in to comment.