コード例 #1
0
ファイル: views.py プロジェクト: Priyanshu72/osf.io
def osfstorage_get_revisions(file_node, payload, target, **kwargs):
    from osf.models import PageCounter, FileVersion  # TODO Fix me onces django works
    is_anon = has_anonymous_link(
        target, Auth(private_key=request.args.get('view_only')))

    counter_prefix = 'download:{}:{}:'.format(file_node.target._id,
                                              file_node._id)

    version_count = file_node.versions.count()
    counts = dict(
        PageCounter.objects.filter(resource=file_node.target.guids.first().id,
                                   file=file_node,
                                   action='download').values_list(
                                       '_id', 'total'))
    qs = FileVersion.includable_objects.filter(
        basefilenode__id=file_node.id).include('creator__guids').order_by(
            '-created')

    for i, version in enumerate(qs):
        version._download_count = counts.get(
            '{}{}'.format(counter_prefix, version_count - i - 1), 0)

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(target,
                                     file_node,
                                     version,
                                     index=version_count - idx - 1,
                                     anon=is_anon)
            for idx, version in enumerate(qs)
        ]
    }
コード例 #2
0
 def test_serialize_revision(self):
     sessions.sessions[request._get_current_object()] = Session()
     utils.update_analytics(self.project, self.record, 0)
     utils.update_analytics(self.project, self.record, 0)
     utils.update_analytics(self.project, self.record, 2)
     expected = {
         'index': 1,
         'user': {
             'name': self.user.fullname,
             'url': self.user.url,
         },
         'date': self.versions[0].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)
コード例 #3
0
ファイル: views.py プロジェクト: envobe/osf.io
def osfstorage_get_revisions(file_node, node_addon, payload, **kwargs):
    from osf.models import PageCounter, FileVersion  # TODO Fix me onces django works
    is_anon = has_anonymous_link(
        node_addon.owner, Auth(private_key=request.args.get('view_only')))

    counter_prefix = 'download:{}:{}:'.format(file_node.node._id,
                                              file_node._id)

    version_count = file_node.versions.count()
    # Don't worry. The only % at the end of the LIKE clause, the index is still used
    counts = dict(
        PageCounter.objects.filter(_id__startswith=counter_prefix).values_list(
            '_id', 'total'))
    qs = FileVersion.includable_objects.filter(
        basefilenode__id=file_node.id).include('creator__guids').order_by(
            '-date_created')

    for i, version in enumerate(qs):
        version._download_count = counts.get(
            '{}{}'.format(counter_prefix, version_count - i - 1), 0)

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node_addon.owner,
                                     file_node,
                                     version,
                                     index=version_count - idx - 1,
                                     anon=is_anon)
            for idx, version in enumerate(qs)
        ]
    }
コード例 #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].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
ファイル: test_views.py プロジェクト: darshanman40/osf.io
    def test_get_revisions(self):
        res = self.get_revisions()
        expected = [
            utils.serialize_revision(self.project,
                                     self.record,
                                     version,
                                     index=self.record.versions.count() - 1 -
                                     idx)
            for idx, version in enumerate(reversed(self.record.versions.all()))
        ]

        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)
コード例 #6
0
ファイル: test_views.py プロジェクト: geeksnglitter/osf.io
    def test_get_revisions(self):
        res = self.get_revisions()
        expected = [
            utils.serialize_revision(
                self.project,
                self.record,
                version,
                index=self.record.versions.count() - 1 - idx
            )
            for idx, version in enumerate(self.record.versions.all())
        ]

        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)
コード例 #7
0
 def test_anon_revisions(self):
     sessions.sessions[request._get_current_object()] = Session()
     utils.update_analytics(self.project, self.record, 0)
     utils.update_analytics(self.project, self.record, 0)
     utils.update_analytics(self.project, self.record, 2)
     expected = {
         'index': 2,
         'user': None,
         'date': self.versions[0].created.isoformat(),
         'downloads': 0,
         'md5': None,
         'sha256': None,
     }
     observed = utils.serialize_revision(self.project,
                                         self.record,
                                         self.versions[0],
                                         1,
                                         anon=True)
     assert_equal(expected, observed)
コード例 #8
0
ファイル: views.py プロジェクト: geeksnglitter/osf.io
def osfstorage_get_revisions(file_node, node_addon, payload, **kwargs):
    from osf.models import PageCounter, FileVersion  # TODO Fix me onces django works
    is_anon = has_anonymous_link(node_addon.owner, Auth(private_key=request.args.get('view_only')))

    counter_prefix = 'download:{}:{}:'.format(file_node.node._id, file_node._id)

    version_count = file_node.versions.count()
    # Don't worry. The only % at the end of the LIKE clause, the index is still used
    counts = dict(PageCounter.objects.filter(_id__startswith=counter_prefix).values_list('_id', 'total'))
    qs = FileVersion.includable_objects.filter(basefilenode__id=file_node.id).include('creator__guids').order_by('-created')

    for i, version in enumerate(qs):
        version._download_count = counts.get('{}{}'.format(counter_prefix, version_count - i - 1), 0)

    # Return revisions in descending order
    return {
        'revisions': [
            utils.serialize_revision(node_addon.owner, file_node, version, index=version_count - idx - 1, anon=is_anon)
            for idx, version in enumerate(qs)
        ]
    }
コード例 #9
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].created.isoformat(),
         'downloads': 0,
         'md5': None,
         'sha256': None,
     }
     observed = utils.serialize_revision(
         self.project,
         self.record,
         self.versions[0],
         1,
         anon=True
     )
     assert_equal(expected, observed)