def form_valid(self, form, *args, **kwargs): """ Submits the validated form data: A new Concept Mapping """ # Prepare the data form submission, incl. renaming fields as needed mapping_destination = form.cleaned_data.get('is_internal_or_external') from_concept_url = ('/' + self.owner_type + '/' + self.owner_id + '/sources/' + self.source_id + '/concepts/' + self.concept_id + '/') base_data = { 'from_concept_url': from_concept_url, 'map_type': form.cleaned_data.get('map_type', ''), 'external_id': form.cleaned_data.get('external_id', '') } if mapping_destination == 'Internal': base_data['to_concept_url'] = form.cleaned_data.get( 'internal_to_concept_url') elif mapping_destination == 'External': base_data['to_source_url'] = form.cleaned_data.get( 'external_to_source_url') base_data['to_concept_code'] = form.cleaned_data.get( 'external_to_concept_code') base_data['to_concept_name'] = form.cleaned_data.get( 'external_to_concept_name') # Create the mapping api = OclApi(self.request, debug=True) result = api.create_mapping(self.owner_type, self.owner_id, self.source_id, base_data) if result.ok: messages.add_message(self.request, messages.INFO, _('Mapping created.')) if self.from_org: return redirect( reverse('concept-mappings', kwargs={ 'org': self.owner_id, 'source': self.source_id, 'concept': self.concept_id })) else: return redirect( reverse('concept-mappings', kwargs={ 'user': self.owner_id, 'source': self.source_id, 'concept': self.concept_id })) else: messages.add_message( self.request, messages.ERROR, _('Error: ' + result.content + '<br />POST data: ' + json.dumps(base_data))) logger.warning('Mapping create POST failed: %s' % result.content) return super(ConceptMappingsView, self).form_invalid(form)
def form_valid(self, form, *args, **kwargs): """ Submits the validated form data using the API: new mapping """ # TODO: move regex validation to form user_concept_format = r'^/users/([a-zA-Z0-9\-\.]+)/sources/([a-zA-Z0-9\-\.]+)/concepts/([a-zA-Z0-9\-\.]+)/$' org_concept_format = r'^/orgs/([a-zA-Z0-9\-]+)/sources/([a-zA-Z0-9\-\.]+)/concepts/([a-zA-Z0-9\-\.]+)/$' # Prepare the data form submission, incl. renaming fields as needed mapping_destination = form.cleaned_data.get('is_internal_or_external') base_data = { 'from_concept_url': form.cleaned_data.get('from_concept_url'), 'map_type': form.cleaned_data.get('map_type', ''), 'external_id': form.cleaned_data.get('external_id', '') } if not (re.compile(user_concept_format).match(base_data['from_concept_url']) or re.compile(org_concept_format).match(base_data['from_concept_url'])): emsg = 'Invalid format of "From Concept URL" \'%s\'. valid url format is /[orgs or users]/[:org or :user]/sources/:source/concepts/:concept/' % \ base_data['from_concept_url'] messages.add_message(self.request, messages.ERROR, emsg) return super(MappingNewView, self).form_invalid(form) if mapping_destination == 'Internal': base_data['to_concept_url'] = form.cleaned_data.get('internal_to_concept_url') if not (re.compile(user_concept_format).match(base_data['to_concept_url']) or re.compile(org_concept_format).match(base_data['to_concept_url'])): emsg = 'Invalid format of "To Concept URL" \'%s\'. valid url format is /[orgs or users]/[:org or :user]/sources/:source/concepts/:concept/' % base_data['to_concept_url'] messages.add_message(self.request, messages.ERROR, emsg) return super(MappingNewView, self).form_invalid(form) elif mapping_destination == 'External': base_data['to_source_url'] = form.cleaned_data.get('external_to_source_url') base_data['to_concept_code'] = form.cleaned_data.get('external_to_concept_code') base_data['to_concept_name'] = form.cleaned_data.get('external_to_concept_name') # Create the mapping api = OclApi(self.request, debug=True) result = api.create_mapping(self.owner_type, self.owner_id, self.source_id, base_data) if result.ok: new_mapping_id = result.json()['id'] messages.add_message(self.request, messages.INFO, _('Mapping created.')) if self.from_org: return redirect(reverse('mapping-home', kwargs={'org': self.owner_id, 'source': self.source_id, 'mapping': new_mapping_id})) else: return redirect(reverse('mapping-home', kwargs={'user': self.owner_id, 'source': self.source_id, 'mapping': new_mapping_id})) else: emsg = result.json().get('errors', 'Error: ' + result.content) messages.add_message(self.request, messages.ERROR, emsg) logger.warning('Mapping create POST failed: %s' % result.content) return super(MappingNewView, self).form_invalid(form)
def form_valid(self, form, *args, **kwargs): """ Submits the validated form data: A new Concept Mapping """ # Prepare the data form submission, incl. renaming fields as needed mapping_destination = form.cleaned_data.get('is_internal_or_external') from_concept_url = ('/' + self.owner_type + '/' + self.owner_id + '/sources/' + self.source_id + '/concepts/' + self.concept_id + '/') base_data = { 'from_concept_url': from_concept_url, 'map_type': form.cleaned_data.get('map_type', ''), 'external_id': form.cleaned_data.get('external_id', '') } if mapping_destination == 'Internal': base_data['to_concept_url'] = form.cleaned_data.get('internal_to_concept_url') # TODO: move regex validation to form user_concept_format = r'^/users/(' + OclConstants.NAMESPACE_PATTERN + ')/sources/(' + OclConstants.NAMESPACE_PATTERN + ')/concepts/(' + OclConstants.CONCEPT_ID_PATTERN + ')/$' org_concept_format = r'^/orgs/(' + OclConstants.ORG_PATTERN + ')/sources/(' + OclConstants.NAMESPACE_PATTERN + ')/concepts/(' + OclConstants.CONCEPT_ID_PATTERN + ')/$' if not (re.compile(user_concept_format).match(base_data['to_concept_url']) or re.compile(org_concept_format).match(base_data['to_concept_url'])): emsg = 'Invalid format of "To Concept URL" \'%s\'. valid url format is /[orgs or users]/[:org or :user]/sources/:source/concepts/:concept/' % \ base_data['to_concept_url'] messages.add_message(self.request, messages.ERROR, emsg) return super(ConceptMappingsView, self).form_invalid(form) elif mapping_destination == 'External': base_data['to_source_url'] = form.cleaned_data.get('external_to_source_url') base_data['to_concept_code'] = form.cleaned_data.get('external_to_concept_code') base_data['to_concept_name'] = form.cleaned_data.get('external_to_concept_name') # Create the mapping api = OclApi(self.request, debug=True) result = api.create_mapping(self.owner_type, self.owner_id, self.source_id, base_data) if result.ok: messages.add_message(self.request, messages.INFO, _('Mapping created.')) if self.from_org: return redirect(reverse('concept-mappings', kwargs={'org': self.owner_id, 'source': self.source_id, 'concept': self.concept_id})) else: return redirect(reverse('concept-mappings', kwargs={'user': self.owner_id, 'source': self.source_id, 'concept': self.concept_id})) else: emsg = result.json().get('errors', 'Error: ' + result.content) messages.add_message(self.request, messages.ERROR, emsg) logger.warning('Mapping create POST failed: %s' % result.content) return super(ConceptMappingsView, self).form_invalid(form)
def form_valid(self, form, *args, **kwargs): """ Submits the validated form data: A new Concept Mapping """ # Prepare the data form submission, incl. renaming fields as needed mapping_destination = form.cleaned_data.get('is_internal_or_external') from_concept_url = ('/' + self.owner_type + '/' + self.owner_id + '/sources/' + self.source_id + '/concepts/' + self.concept_id + '/') base_data = { 'from_concept_url': from_concept_url, 'map_type': form.cleaned_data.get('map_type', ''), 'external_id': form.cleaned_data.get('external_id', '') } if mapping_destination == 'Internal': base_data['to_concept_url'] = form.cleaned_data.get('internal_to_concept_url') elif mapping_destination == 'External': base_data['to_source_url'] = form.cleaned_data.get('external_to_source_url') base_data['to_concept_code'] = form.cleaned_data.get('external_to_concept_code') base_data['to_concept_name'] = form.cleaned_data.get('external_to_concept_name') # Create the mapping api = OclApi(self.request, debug=True) result = api.create_mapping(self.owner_type, self.owner_id, self.source_id, base_data) if result.ok: messages.add_message(self.request, messages.INFO, _('Mapping created.')) if self.from_org: return redirect(reverse('concept-mappings', kwargs={'org': self.owner_id, 'source': self.source_id, 'concept': self.concept_id})) else: return redirect(reverse('concept-mappings', kwargs={'user': self.owner_id, 'source': self.source_id, 'concept': self.concept_id})) else: messages.add_message( self.request, messages.ERROR, _('Error: ' + result.content + '<br />POST data: ' + json.dumps(base_data))) logger.warning('Mapping create POST failed: %s' % result.content) return super(ConceptMappingsView, self).form_invalid(form)
def form_valid(self, form, *args, **kwargs): api = OclApi(self.request, debug=True) original_mapping = api.get(self.owner_type, self.owner_id, 'sources', self.source_id, 'mappings', self.mapping_id).json() mapping_destination = original_mapping.get('is_internal_or_external') base_data = { 'from_concept_url': original_mapping.get('from_concept_url'), 'map_type': original_mapping.get('map_type', ''), 'external_id': original_mapping.get('external_id', ''), 'is_internal_or_external': mapping_destination } if mapping_destination == 'Internal': base_data['to_concept_url'] = original_mapping.get( 'to_concept_url') elif mapping_destination == 'External': base_data['to_source_url'] = original_mapping.get('to_source_url') base_data['to_concept_code'] = original_mapping.get( 'to_concept_code') base_data['to_concept_name'] = original_mapping.get( 'to_concept_name') destination_source = json.dumps( ast.literal_eval(form.cleaned_data['sources'].encode('utf-8'))) destination_source = json.loads(destination_source) proper_owner_type = destination_source['owner_type'] from_org = False if proper_owner_type == 'User': from_user = True owner_type = 'users' owner_id = destination_source['owner'] else: from_org = True owner_type = 'orgs' owner_id = destination_source['owner'] source_id = destination_source['id'] result = api.create_mapping(owner_type, owner_id, source_id, base_data) if result.ok: new_mapping_id = result.json()['id'] messages.add_message(self.request, messages.INFO, _('Mapping created.')) if from_org: return redirect( reverse('mapping-home', kwargs={ 'org': owner_id, 'source': source_id, 'mapping': new_mapping_id })) else: return redirect( reverse('mapping-home', kwargs={ 'user': owner_id, 'source': source_id, 'mapping': new_mapping_id })) else: emsg = result.json().get('errors', 'Error: ' + result.content) messages.add_message(self.request, messages.ERROR, emsg) logger.warning('Mapping create POST failed: %s' % result.content) return super(MappingForkView, self).form_invalid(form)