Пример #1
0
    def test_embed_view(self):
        asset = AssetFactory.create(course=self.sample_course,
                                    primary_source='image',
                                    author=self.instructor_one)
        note = SherdNoteFactory(asset=asset, author=self.instructor_one,
                                title='Selection')

        nonce = '%smthc' % datetime.datetime.now().isoformat()
        digest = hmac.new(
            'secret',
            '%s:%s:%s' % (self.sample_course.id, note.id, nonce),
            hashlib.sha1).hexdigest()

        view = AssetEmbedView()
        view.request = RequestFactory().get(
            '/', {'nonce': nonce, 'hmac': digest},
            HTTP_REFERER='http://testserver/a/b/c/')
        view.request.course = self.sample_course
        view.request.user = self.instructor_one

        with self.assertRaises(Http404):
            view.get_context_data(course_id=self.sample_course.id,
                                  annot_id=note.id)

        secrets = {'http://testserver/': 'secret'}
        with self.settings(SERVER_ADMIN_SECRETKEYS=secrets):
            ctx = view.get_context_data(course_id=self.sample_course.id,
                                        annot_id=note.id)

            self.assertTrue('item' in ctx)
            self.assertEquals(ctx['item_id'], asset.id)
            self.assertEquals(ctx['selection_id'], note.id)
            self.assertEquals(ctx['presentation'], 'gallery')
            self.assertEquals(ctx['title'], 'Selection')
Пример #2
0
    def test_embed_view(self):
        asset = AssetFactory.create(course=self.sample_course,
                                    primary_source='image',
                                    author=self.instructor_one)
        note = SherdNoteFactory(asset=asset,
                                author=self.instructor_one,
                                title='Selection')

        nonce = '%smthc' % datetime.datetime.now().isoformat()
        digest = hmac.new(
            'secret'.encode('utf-8'),
            '{}:{}:{}'.format(self.sample_course.id, note.id,
                              nonce).encode('utf-8'),
            hashlib.sha1).hexdigest()

        view = AssetEmbedView()
        view.request = RequestFactory().get(
            '/', {
                'nonce': nonce,
                'hmac': digest
            },
            HTTP_REFERER='http://testserver/a/b/c/')
        view.request.course = self.sample_course
        view.request.user = self.instructor_one

        with self.assertRaises(Http404):
            view.get_context_data(course_id=self.sample_course.id,
                                  annot_id=note.id)

        secrets = {'http://testserver/': 'secret'}
        with self.settings(SERVER_ADMIN_SECRETKEYS=secrets):
            ctx = view.get_context_data(course_id=self.sample_course.id,
                                        annot_id=note.id)

            self.assertTrue('item' in ctx)
            self.assertEquals(ctx['item_id'], asset.id)
            self.assertEquals(ctx['selection_id'], note.id)
            self.assertEquals(ctx['presentation'], 'medium')
            self.assertEquals(ctx['title'], 'Selection')
Пример #3
0
        'asset-view'),
    url(r'^(?P<asset_id>\d+)/annotations/(?P<annot_id>\d+)/$',
        AssetWorkspaceView.as_view(), {}, 'annotation-view'),
    url(r'^create/(?P<asset_id>\d+)/annotations/$', annotation_create),

    # django-rest-framework
    url(r'^(?P<asset_id>\d+)/sherdnote/create/$',
        SherdNoteCreate.as_view(),
        name='sherdnote-create'),
    url(r'^create/(?P<asset_id>\d+)/global/$', annotation_create_global),
    url(r'^copy/(?P<asset_id>\d+)/annotations/(?P<annot_id>\d+)/$',
        AnnotationCopyView.as_view(), {}, 'annotation-copy-view'),
    url(r'^save/(?P<asset_id>\d+)/annotations/(?P<annot_id>\d+)/$',
        annotation_save,
        name="annotation-save"),
    url(r'^delete/(?P<asset_id>\d+)/annotations/(?P<annot_id>\d+)/$',
        annotation_delete,
        name="annotation-delete"),
    url(r'^delete/(?P<asset_id>\d+)/$', asset_delete, name='asset-delete'),
    url(r'^xmeml/(?P<asset_id>\w+)/$',
        final_cut_pro_xml,
        name="final_cut_pro_xml"),
    url(r'^embed/view/(?P<course_id>\d+)/(?P<annot_id>\d+)/$',
        AssetEmbedView.as_view(), {}, 'selection-embed-view'),
    url(r'^embed', AssetEmbedListView.as_view(), {}, 'asset-embed-list'),
    url(r'scalar/', ScalarExportView.as_view(), name='scalar_export'),

    # Asset workspace variations
    url(r'^$', AssetWorkspaceView.as_view(), {}, 'asset-collection-view'),
]
Пример #4
0
        AssetWorkspaceView.as_view(), {}, 'annotation-view'),

    url(r'^create/(?P<asset_id>\d+)/annotations/$', 'annotation_create'),

    url(r'^create/(?P<asset_id>\d+)/global/$', 'annotation_create_global'),

    url(r'^save/(?P<asset_id>\d+)/annotations/(?P<annot_id>\d+)/$',
        'annotation_save',
        name="annotation-save"),

    url(r'^delete/(?P<asset_id>\d+)/annotations/(?P<annot_id>\d+)/$',
        'annotation_delete',
        name="annotation-delete"),

    url(r'^delete/(?P<asset_id>\d+)/$', 'asset_delete', name='asset-delete'),

    url(r'^xmeml/(?P<asset_id>\w+)/$',
        'final_cut_pro_xml',
        name="final_cut_pro_xml"),

    url(r'^embed/view/(?P<course_id>\d+)/(?P<annot_id>\d+)/$',
        AssetEmbedView.as_view(), {}, 'selection-embed-view'),

    url(r'^embed', AssetEmbedListView.as_view(), {}, 'asset-embed-list'),

    url(r'scalar/', ScalarExportView.as_view(), name='scalar_export'),

    # Asset workspace variations
    url(r'^$', AssetWorkspaceView.as_view(), {}, 'asset-collection-view'),
)