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)
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, }
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)
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)
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')) ] }
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)) ] }
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)
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)
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)
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)) ] }
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)
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)
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)) ] }
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)
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)
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)