예제 #1
0
 def test_serialize_revision(self):
     sessions.sessions[request._get_current_object()] = Session()
     utils.update_analytics(self.project, self.record._id, 0)
     utils.update_analytics(self.project, self.record._id, 0)
     utils.update_analytics(self.project, self.record._id, 2)
     expected = {
         'index': 1,
         'user': {
             'name': self.user.fullname,
             'url': self.user.url,
         },
         'date': self.versions[0].date_created.isoformat(),
         'downloads': 2,
         'md5': None,
         'sha256': None,
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         0,
     )
     assert_equal(expected, observed)
     assert_equal(self.record.get_download_count(), 3)
     assert_equal(self.record.get_download_count(version=2), 1)
     assert_equal(self.record.get_download_count(version=0), 2)
예제 #2
0
파일: views.py 프로젝트: huangginny/osf.io
def osf_storage_get_revisions(payload, node_addon, **kwargs):
    node = node_addon.owner
    page = payload.get('page') or 0
    path = payload.get('path')

    if not path:
        raise HTTPError(httplib.BAD_REQUEST)

    try:
        page = int(page)
    except (TypeError, ValueError):
        raise HTTPError(httplib.BAD_REQUEST)

    record = model.OsfStorageFileRecord.find_by_path(path, node_addon)

    if record is None:
        raise HTTPError(httplib.NOT_FOUND)

    indices, versions, more = record.get_versions(
        page,
        size=osf_storage_settings.REVISIONS_PAGE_SIZE,
    )

    return {
        'revisions': [
            utils.serialize_revision(node, record, versions[idx], indices[idx])
            for idx in range(len(versions))
        ],
        'more': more,
    }
예제 #3
0
def osf_storage_get_revisions(payload, node_addon, **kwargs):
    node = node_addon.owner
    page = payload.get('page') or 0
    path = payload.get('path')

    if not path:
        raise HTTPError(httplib.BAD_REQUEST)

    try:
        page = int(page)
    except (TypeError, ValueError):
        raise HTTPError(httplib.BAD_REQUEST)

    record = model.OsfStorageFileRecord.find_by_path(path, node_addon)

    if record is None:
        raise HTTPError(httplib.NOT_FOUND)

    indices, versions, more = record.get_versions(
        page,
        size=osf_storage_settings.REVISIONS_PAGE_SIZE,
    )

    return {
        'revisions': [
            utils.serialize_revision(node, record, versions[idx], indices[idx])
            for idx in range(len(versions))
        ],
        'more':
        more,
    }
예제 #4
0
 def test_serialize_revision(self):
     sessions.sessions[request._get_current_object()] = Session()
     utils.update_analytics(self.project, self.record._id, 0)
     utils.update_analytics(self.project, self.record._id, 0)
     utils.update_analytics(self.project, self.record._id, 2)
     expected = {
         'index': 1,
         'user': {
             'name': self.user.fullname,
             'url': self.user.url,
         },
         'date': self.versions[0].date_created.isoformat(),
         'downloads': 2,
         'md5': None,
         'sha256': None,
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         0,
     )
     assert_equal(expected, observed)
     assert_equal(self.record.get_download_count(), 3)
     assert_equal(self.record.get_download_count(version=2), 1)
     assert_equal(self.record.get_download_count(version=0), 2)
예제 #5
0
 def test_serialize_revision(self):
     self.download_version(1)
     self.download_version(1)
     self.download_version(3)
     expected = {
         'index': 1,
         'user': {
             'name': self.user.fullname,
             'url': self.user.url,
         },
         'date': self.versions[0].date_modified.isoformat(),
         'downloads': 2,
         'urls': {
             'view': self.project.web_url_for(
                 'osf_storage_view_file',
                 path=self.path,
                 version=1,
             ),
             'download': self.project.web_url_for(
                 'osf_storage_view_file',
                 path=self.path,
                 action='download',
                 version=1,
             ),
         },
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         1,
     )
     assert_equal(expected, observed)
예제 #6
0
 def test_get_revisions_page_not_specified(self):
     res = self.get_revisions(path=self.path)
     expected = [
         utils.serialize_revision(self.project, self.record,
                                  self.record.versions[idx - 1], idx)
         for idx in range(15, 5, -1)
     ]
     assert_equal(res.json['revisions'], expected)
     assert_equal(res.json['more'], True)
예제 #7
0
def osfstorage_get_revisions(file_node, node_addon, payload, **kwargs):
    is_anon = has_anonymous_link(node_addon.owner, Auth(private_key=request.args.get('view_only')))

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node_addon.owner, file_node, version, index=file_node.versions.count() - idx - 1, anon=is_anon)
            for idx, version in enumerate(file_node.versions.all().order_by('-date_created'))
        ]
    }
예제 #8
0
파일: views.py 프로젝트: 545zhou/osf.io
def osfstorage_get_revisions(file_node, node_addon, payload, **kwargs):
    is_anon = has_anonymous_link(node_addon.owner, Auth(private_key=request.args.get('view_only')))

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node_addon.owner, file_node, version, index=len(file_node.versions) - idx - 1, anon=is_anon)
            for idx, version in enumerate(reversed(file_node.versions))
        ]
    }
예제 #9
0
 def test_serialize_revision_uploading(self):
     version = factories.FileVersionFactory(status=model.status_map['UPLOADING'])
     self.record.versions.append(version)
     self.record.save()
     serialized = utils.serialize_revision(
         self.project,
         self.record,
         version,
         len(self.record.versions),
     )
     assert_equal(serialized['date'], None)
예제 #10
0
 def test_get_revisions_page_not_specified(self):
     res = self.get_revisions(path=self.path)
     expected = [
         utils.serialize_revision(
             self.project,
             self.record,
             self.record.versions[idx - 1],
             idx
         )
         for idx in range(15, 5, -1)
     ]
     assert_equal(res.json['revisions'], expected)
     assert_equal(res.json['more'], True)
예제 #11
0
    def test_get_revisions(self):
        res = self.get_revisions()
        expected = [
            utils.serialize_revision(self.project,
                                     self.record,
                                     version,
                                     index=len(self.record.versions) - 1 - idx)
            for idx, version in enumerate(reversed(self.record.versions))
        ]

        assert_equal(len(res.json['revisions']), 15)
        assert_equal(res.json['revisions'], [x for x in expected])
        assert_equal(res.json['revisions'][0]['index'], 15)
        assert_equal(res.json['revisions'][-1]['index'], 1)
예제 #12
0
def osfstorage_get_revisions(file_node, node_addon, payload, **kwargs):
    is_anon = has_anonymous_link(node_addon.owner,
                                 Auth(private_key=payload.get('view_only')))

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node_addon.owner,
                                     file_node,
                                     version,
                                     index=len(file_node.versions) - idx - 1,
                                     anon=is_anon)
            for idx, version in enumerate(reversed(file_node.versions))
        ]
    }
예제 #13
0
    def test_get_revisions(self):
        res = self.get_revisions()
        expected = [
            utils.serialize_revision(
                self.project,
                self.record,
                version,
                index=len(self.record.versions) - 1 - idx
            )
            for idx, version in enumerate(reversed(self.record.versions))
        ]

        assert_equal(len(res.json['revisions']), 15)
        assert_equal(res.json['revisions'], [x for x in expected])
        assert_equal(res.json['revisions'][0]['index'], 15)
        assert_equal(res.json['revisions'][-1]['index'], 1)
예제 #14
0
 def test_anon_revisions(self):
     sessions.sessions[request._get_current_object()] = Session()
     utils.update_analytics(self.project, self.record._id, 0)
     utils.update_analytics(self.project, self.record._id, 0)
     utils.update_analytics(self.project, self.record._id, 2)
     expected = {
         'index': 2,
         'user': None,
         'date': self.versions[0].date_created.isoformat(),
         'downloads': 0,
     }
     observed = utils.serialize_revision(self.project,
                                         self.record,
                                         self.versions[0],
                                         1,
                                         anon=True)
     assert_equal(expected, observed)
예제 #15
0
파일: views.py 프로젝트: erinmayhood/osf.io
def osf_storage_get_revisions(payload, node_addon, **kwargs):
    node = node_addon.owner
    path = payload.get('path')
    is_anon = has_anonymous_link(node, Auth(private_key=payload.get('view_only')))

    if not path:
        raise HTTPError(httplib.BAD_REQUEST)

    record = model.OsfStorageFileNode.get(path.strip('/'), node_addon)

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node, record, version, index=len(record.versions) - idx - 1, anon=is_anon)
            for idx, version in enumerate(reversed(record.versions))
        ]
    }
예제 #16
0
 def test_anon_revisions(self):
     sessions.sessions[request._get_current_object()] = Session()
     views.update_analytics(self.project, self.path, 1)
     views.update_analytics(self.project, self.path, 1)
     views.update_analytics(self.project, self.path, 3)
     expected = {
         'index': 1,
         'user': None,
         'date': self.versions[0].date_created.isoformat(),
         'downloads': 2,
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         1,
         anon=True
     )
     assert_equal(expected, observed)
예제 #17
0
 def test_serialize_revision(self):
     sessions.sessions[request._get_current_object()] = Session()
     views.update_analytics(self.project, self.path, 1)
     views.update_analytics(self.project, self.path, 1)
     views.update_analytics(self.project, self.path, 3)
     expected = {
         'index': 1,
         'user': {
             'name': self.user.fullname,
             'url': self.user.url,
         },
         'date': self.versions[0].date_created.isoformat(),
         'downloads': 2,
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         1,
     )
     assert_equal(expected, observed)
예제 #18
0
def osf_storage_get_revisions(payload, node_addon, **kwargs):
    node = node_addon.owner
    path = payload.get('path')
    is_anon = has_anonymous_link(node,
                                 Auth(private_key=payload.get('view_only')))

    if not path:
        raise HTTPError(httplib.BAD_REQUEST)

    record = model.OsfStorageFileNode.get(path.strip('/'), node_addon)

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node,
                                     record,
                                     version,
                                     index=len(record.versions) - idx - 1,
                                     anon=is_anon)
            for idx, version in enumerate(reversed(record.versions))
        ]
    }
예제 #19
0
 def test_serialize_revision(self):
     sessions.sessions[request._get_current_object()] = Session()
     views.update_analytics(self.project, self.path, 1)
     views.update_analytics(self.project, self.path, 1)
     views.update_analytics(self.project, self.path, 3)
     expected = {
         'index': 1,
         'user': {
             'name': self.user.fullname,
             'url': self.user.url,
         },
         'date': self.versions[0].date_created.isoformat(),
         'downloads': 2,
         'urls': {
             'view':
             self.project.web_url_for(
                 'osf_storage_view_file',
                 path=self.path,
                 version=1,
             ),
             'download':
             self.project.web_url_for(
                 'osf_storage_view_file',
                 path=self.path,
                 action='download',
                 version=1,
             ),
         },
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         1,
     )
     assert_equal(expected, observed)