コード例 #1
0
    def update_resource(self, pk):
        authorize(self.request, pk, edit=True)

        params = utils.create_form(ResourceCRUD.UpdateResourceForm,
                                   self.request)
        if params.is_valid():
            r = params.cleaned_data
            res = hydroshare.update_resource(
                pk,
                edit_users=r['edit_users'],
                view_users=r['view_users'],
                edit_groups=r['edit_groups'],
                view_groups=r['view_groups'],
                keywords=r['keywords'],
                dublin_metadata=json.loads(r['dublin_metadata'])
                if r['dublin_metadata'] else {},
                **{
                    k: v
                    for k, v in self.request.REQUEST.items() if k not in r
                })
            return HttpResponse(res.short_id,
                                content_type='text/plain',
                                status='204')
        else:
            raise exceptions.ValidationError(params.errors)
コード例 #2
0
ファイル: resource_api.py プロジェクト: kob-aha/hydroshare
    def update_resource(self, pk):
        authorize(self.request, pk, edit=True)

        params = utils.create_form(ResourceCRUD.UpdateResourceForm, self.request)
        if params.is_valid():
            r = params.cleaned_data
            res = hydroshare.update_resource(
                pk,
                edit_users=r['edit_users'],
                view_users=r['view_users'],
                edit_groups=r['edit_groups'],
                view_groups=r['view_groups'],
                keywords=r['keywords'],
                metadata=json.loads(r['dublin_metadata']) if r['dublin_metadata'] else {},
                **{k: v for k, v in self.request.REQUEST.items() if k not in r}
            )
            return HttpResponse(res.short_id, content_type='text/plain', status='204')
        else:
            raise exceptions.ValidationError(params.errors)
コード例 #3
0
ファイル: resource_api.py プロジェクト: shaunjl/hs_core
    def update_system_metadata(self, pk):
        authorize(self.request, pk, edit=True)

        params = ResourceCRUD.UpdateResourceForm(self.request.REQUEST)
        if params.is_valid():
            r = params.cleaned_data
            res = hydroshare.update_resource(
                pk,
                edit_users = r['edit_users'],
                view_users = r['view_users'],
                edit_groups = r['edit_groups'],
                view_groups = r['view_groups'],
                keywords = r['keywords'],
                dublin_metadata=json.loads(r['dublin_metadata']) if r['dublin_metadata'] else {},
                files=self.request.FILES.values(),
                **{k: v for k, v in self.request.REQUEST.items() if k not in r}
            )
            return HttpResponse(res.short_id, content_type='text/plain')
        else:
            raise exceptions.ValidationError('invalid request')
コード例 #4
0
    def test_update_resource_with_metadata(self):
        # add these new metadata elements
        metadata_dict = [
            {
                'creator': {
                    'name': 'John Smith',
                    'email': '*****@*****.**'
                }
            },
            {
                'creator': {
                    'name': 'Lisa Molley',
                    'email': '*****@*****.**'
                }
            },
            {
                'contributor': {
                    'name':
                    'Kelvin Marshal',
                    'email':
                    '*****@*****.**',
                    'organization':
                    'Utah State University',
                    'profile_links': [{
                        'type': 'yahooProfile',
                        'url': 'http://yahoo.com/LH001'
                    }]
                }
            },
            {
                'coverage': {
                    'type': 'period',
                    'value': {
                        'name': 'Name for period coverage',
                        'start': '1/1/2000',
                        'end': '12/12/2012'
                    }
                }
            },
            {
                'coverage': {
                    'type': 'point',
                    'value': {
                        'name': 'Name for point coverage',
                        'east': '56.45678',
                        'north': '12.6789'
                    }
                }
            },
            {
                'format': {
                    'value': 'txt/csv'
                }
            },
            {
                'format': {
                    'value': 'zip'
                }
            },
            {
                'identifier': {
                    'name': 'someIdentifier',
                    'url': "http://some.org/001"
                }
            },
            {
                'language': {
                    'code': 'eng'
                }
            },
            {
                'relation': {
                    'type': 'isPartOf',
                    'value': 'http://hydroshare.org/resource/001'
                }
            },
            {
                'rights': {
                    'statement':
                    'This is the rights statement for this resource',
                    'url': 'http://rights.org/001'
                }
            },
            {
                'source': {
                    'derived_from': 'http://hydroshare.org/resource/0001'
                }
            },
            {
                'subject': {
                    'value': 'sub-1'
                }
            },
            {
                'subject': {
                    'value': 'sub-2'
                }
            },
        ]
        self.res = hydroshare.update_resource(pk=self.res.short_id,
                                              metadata=metadata_dict)

        # title element is recreated in the resource update api method
        self.assertEqual(self.res.metadata.title.value,
                         self.res.title,
                         msg='resource title did not match')

        # resource description element is created in the resource signal handler
        self.assertEqual(self.res.metadata.description.abstract,
                         'My Test Resource')

        # the following 2 date elements should have been created in the resource creation signal handler
        self.assertEqual(self.res.metadata.dates.all().count(),
                         2,
                         msg="Number of date elements not equal to 2.")
        self.assertIn('created',
                      [dt.type for dt in self.res.metadata.dates.all()],
                      msg="Date element type 'Created' does not exist")
        self.assertIn('modified',
                      [dt.type for dt in self.res.metadata.dates.all()],
                      msg="Date element type 'Modified' does not exist")

        # number of creators at this point should be 3 (2 we are creating here one is automatically generated in resource creation signal
        self.assertEqual(self.res.metadata.creators.all().count(),
                         3,
                         msg='Number of creators not equal to 3')
        self.assertIn('John Smith',
                      [cr.name for cr in self.res.metadata.creators.all()],
                      msg="Creator 'John Smith' was not found")
        self.assertIn('Lisa Molley',
                      [cr.name for cr in self.res.metadata.creators.all()],
                      msg="Creator 'Lisa Molley' was not found")

        # number of contributors at this point should be 1
        self.assertEqual(self.res.metadata.contributors.all().count(),
                         1,
                         msg='Number of contributors not equal to 1')

        # there should be now 2 coverage elements
        self.assertEqual(self.res.metadata.coverages.all().count(),
                         2,
                         msg="Number of coverages not equal to 2.")

        # there should be now 2 format elements
        self.assertEqual(self.res.metadata.formats.all().count(),
                         2,
                         msg="Number of format elements not equal to 2.")

        # there should be now 2 identifier elements ( 1 we rae creating her + 1 auto generated in the resource creation signal handler)
        self.assertEqual(self.res.metadata.identifiers.all().count(),
                         2,
                         msg="Number of identifier elements not equal to 1.")

        self.assertEqual(self.res.metadata.language.code,
                         'eng',
                         msg="Resource has a language that is not English.")

        self.assertEqual(self.res.metadata.relations.all().count(),
                         1,
                         msg="Number of source elements is not equal to 1")

        self.assertEqual(self.res.metadata.rights.statement,
                         'This is the rights statement for this resource',
                         msg="Statement of rights did not match.")
        self.assertEqual(self.res.metadata.rights.url,
                         'http://rights.org/001',
                         msg="URL of rights did not match.")

        self.assertEqual(self.res.metadata.sources.all().count(),
                         1,
                         msg="Number of sources is not equal to 1.")
        self.assertIn(
            'http://hydroshare.org/resource/0001',
            [src.derived_from for src in self.res.metadata.sources.all()],
            msg="Source element with derived from value of %s does not exist."
            % 'http://hydroshare.org/resource/0001')

        # there should be 2 subject elements for this resource
        self.assertEqual(self.res.metadata.subjects.all().count(),
                         2,
                         msg="Number of subject elements found not be 1.")
        self.assertIn(
            'sub-1', [sub.value for sub in self.res.metadata.subjects.all()],
            msg="Subject element with value of %s does not exist." % 'sub-1')
        self.assertIn(
            'sub-2', [sub.value for sub in self.res.metadata.subjects.all()],
            msg="Subject element with value of %s does not exist." % 'sub-1')
コード例 #5
0
    def test_update_resource_with_metadata(self):
        # add these new metadata elements
        metadata_dict = [
            {'creator': {'name':'John Smith', 'email':'*****@*****.**'}},
            {'creator': {'name':'Lisa Molley', 'email':'*****@*****.**'}},
            {'contributor': {'name':'Kelvin Marshal', 'email':'*****@*****.**',
                             'organization': 'Utah State University',
                             'profile_links': [{'type':'yahooProfile', 'url': 'http://yahoo.com/LH001'}]}},
            {'coverage': {'type':'period', 'value':{'name':'Name for period coverage' , 'start':'1/1/2000', 'end':'12/12/2012'}}},
            {'coverage': {'type':'point', 'value': {'name':'Name for point coverage', 'east':'56.45678', 'north':'12.6789'}}},
            {'format': {'value': 'txt/csv'}},
            {'format': {'value': 'zip'}},
            {'identifier': {'name':'someIdentifier', 'url':"http://some.org/001"}},
            {'language': {'code':'eng'}},
            {'relation': {'type':'isPartOf', 'value':'http://hydroshare.org/resource/001'}},
            {'rights': {'statement':'This is the rights statement for this resource', 'url':'http://rights.org/001'}},
            {'source': {'derived_from':'http://hydroshare.org/resource/0001'}},
            {'subject': {'value':'sub-1'}},
            {'subject': {'value':'sub-2'}},
            ]
        self.res = hydroshare.update_resource(
            pk=self.res.short_id,
            metadata = metadata_dict
        )

        # title element is recreated in the resource update api method
        self.assertEqual(self.res.metadata.title.value, self.res.title, msg='resource title did not match')

        # resource description element is created in the resource signal handler
        self.assertEqual(self.res.metadata.description.abstract, 'My Test Resource')

        # the following 2 date elements should have been created in the resource creation signal handler
        self.assertEqual(self.res.metadata.dates.all().count(), 2, msg="Number of date elements not equal to 2.")
        self.assertIn('created', [dt.type for dt in self.res.metadata.dates.all()], msg="Date element type 'Created' does not exist")
        self.assertIn('modified', [dt.type for dt in self.res.metadata.dates.all()], msg="Date element type 'Modified' does not exist")

        # number of creators at this point should be 3 (2 we are creating here one is automatically generated in resource creation signal
        self.assertEqual(self.res.metadata.creators.all().count(), 3, msg='Number of creators not equal to 3')
        self.assertIn('John Smith', [cr.name for cr in self.res.metadata.creators.all()], msg="Creator 'John Smith' was not found")
        self.assertIn('Lisa Molley', [cr.name for cr in self.res.metadata.creators.all()], msg="Creator 'Lisa Molley' was not found")

        # number of contributors at this point should be 1
        self.assertEqual(self.res.metadata.contributors.all().count(), 1, msg='Number of contributors not equal to 1')

        # there should be now 2 coverage elements
        self.assertEqual(self.res.metadata.coverages.all().count(), 2, msg="Number of coverages not equal to 2.")

        # there should be now 2 format elements
        self.assertEqual(self.res.metadata.formats.all().count(), 2, msg="Number of format elements not equal to 2.")

        # there should be now 2 identifier elements ( 1 we rae creating her + 1 auto generated in the resource creation signal handler)
        self.assertEqual(self.res.metadata.identifiers.all().count(), 2, msg="Number of identifier elements not equal to 1.")

        self.assertEqual(self.res.metadata.language.code, 'eng', msg="Resource has a language that is not English.")

        self.assertEqual(self.res.metadata.relations.all().count(), 1,
                         msg="Number of source elements is not equal to 1")

        self.assertEqual(self.res.metadata.rights.statement, 'This is the rights statement for this resource', msg="Statement of rights did not match.")
        self.assertEqual(self.res.metadata.rights.url, 'http://rights.org/001', msg="URL of rights did not match.")

        self.assertEqual(self.res.metadata.sources.all().count(), 1, msg="Number of sources is not equal to 1.")
        self.assertIn('http://hydroshare.org/resource/0001',
                      [src.derived_from for src in self.res.metadata.sources.all()],
                      msg="Source element with derived from value of %s does not exist."
                          % 'http://hydroshare.org/resource/0001')

        # there should be 2 subject elements for this resource
        self.assertEqual(self.res.metadata.subjects.all().count(), 2, msg="Number of subject elements found not be 1.")
        self.assertIn('sub-1', [sub.value for sub in self.res.metadata.subjects.all()],
                      msg="Subject element with value of %s does not exist." % 'sub-1')
        self.assertIn('sub-2', [sub.value for sub in self.res.metadata.subjects.all()],
                      msg="Subject element with value of %s does not exist." % 'sub-1')
        #print(bad)