Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)
Exemplo n.º 4
0
    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)
Exemplo n.º 5
0
    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)