示例#1
0
    def get(self, request, *args, **kwargs):
        """Download all files for a feedbackset into zipped folder.

        Args:
            request (HttpRequest): Request from client.

        Returns:
            Response: redirects to wait-for-download view,
                see :class:`~devilry.devilry_group.views.download_files.feedbackfeed_downloadviews.WaitForDownload`, or
                returns the content, see `~devilry.devilry_group.utils.download_response`.
        """
        feedbackset_id = kwargs.get('feedbackset_id')
        feedbackset = get_object_or_404(group_models.FeedbackSet,
                                        id=feedbackset_id)

        # Check that the cradmin role and the AssignmentGroup is the same.
        if feedbackset.group.id != request.cradmin_role.id:
            raise Http404()

        archive_meta = archivemodels.CompressedArchiveMeta.objects.exclude()\
            .filter(content_object_id=feedbackset_id,
                    content_type=ContentType.objects.get_for_model(model=feedbackset),
                    deleted_datetime=None)\
            .order_by('-created_datetime').first()
        if not archive_meta:
            raise Http404()
        return download_response.download_response(
            content_path=archive_meta.archive_path,
            content_name=archive_meta.archive_name,
            content_type='application/zip',
            content_size=archive_meta.archive_size,
            streaming_response=True)
示例#2
0
 def get(self, request, *args, **kwargs):
     """
     """
     object_id = int(self.kwargs.get('pk'))
     archive_meta = archivemodels.CompressedArchiveMeta.objects.get(content_object_id=object_id)
     if archive_meta is not None:
         self.status = 'FINISHED'
         return download_response.download_response(
                 content_path=archive_meta.archive_path,
                 content_name=archive_meta.archive_name,
                 content_type='application/zip',
                 content_size=archive_meta.archive_size
         )
     return super(WaitForDownload, self).get(request, *args, **kwargs)
示例#3
0
    def get(self, request, *args, **kwargs):
        assignment_id = kwargs.get('assignment_id')
        assignment = get_object_or_404(core_models.Assignment, id=assignment_id)

        if assignment != self.request.cradmin_role:
            raise Http404()

        archive_meta = archivemodels.CompressedArchiveMeta.objects\
            .filter(content_object_id=assignment_id,
                    content_type=ContentType.objects.get_for_model(model=assignment),
                    deleted_datetime=None)\
            .order_by('-created_datetime').first()
        return download_response.download_response(
                content_path=archive_meta.archive_path,
                content_name=archive_meta.archive_name,
                content_type='application/zip',
                content_size=archive_meta.archive_size,
                streaming_response=True)
示例#4
0
    def get(self, request, *args, **kwargs):
        """
        Checks permission

        Args:
            request (HttpRequest): Request from client.

        Returns:
            Response: redirects to wait-for-download view,
                see :class:`~devilry.devilry_group.views.download_files.feedbackfeed_downloadviews.WaitForDownload`, or
                returns the content, see `~devilry.devilry_group.utils.download_response`.
        """
        groupcomment_id = kwargs.get('groupcomment_id')
        groupcomment = get_object_or_404(group_models.GroupComment, id=groupcomment_id)

        # Check that the cradmin role and the AssignmentGroup is the same.
        if groupcomment.feedback_set.group.id != request.cradmin_role.id:
            raise Http404()

        # If it's a private GroupComment, the request.user must be the one that created the comment.
        if groupcomment.visibility != group_models.GroupComment.VISIBILITY_VISIBLE_TO_EVERYONE:
            raise Http404()

        # Try to fetch archive meta
        try:
            archive_meta = archivemodels.CompressedArchiveMeta.objects.get(content_object_id=groupcomment_id)
        except ObjectDoesNotExist:
            # Run actiongroup batchjob.
            batchregistry.Registry.get_instance().run(
                actiongroup_name='batchframework_compress_groupcomment',
                context_object=groupcomment,
            )
        else:
            # Send response.
            return download_response.download_response(
                    content_path=archive_meta.archive_path,
                    content_name=archive_meta.archive_name,
                    content_type='application/zip',
                    content_size=archive_meta.archive_size
            )

        return HttpResponseRedirect(
                self.request.cradmin_app.reverse_appurl('wait-for-download', groupcomment_id))
    def get(self, request, *args, **kwargs):
        assignment_id = kwargs.get('assignment_id')
        assignment = get_object_or_404(core_models.Assignment, id=assignment_id)

        if assignment != self.request.cradmin_role:
            raise Http404()

        archive_meta = archivemodels.CompressedArchiveMeta.objects\
            .filter(content_object_id=assignment_id,
                    content_type=ContentType.objects.get_for_model(model=assignment),
                    deleted_datetime=None,
                    created_by=self.request.user,
                    created_by_role=archivemodels.CompressedArchiveMeta.CREATED_BY_ROLE_EXAMINER)\
            .order_by('-created_datetime').first()
        if not archive_meta:
            raise Http404()
        return download_response.download_response(
                content_path=archive_meta.archive_path,
                content_name=archive_meta.archive_name,
                content_type='application/zip',
                content_size=archive_meta.archive_size,
                streaming_response=True)
示例#6
0
    def get(self, request, *args, **kwargs):
        """Download all files for a feedbackset into zipped folder.

        Args:
            request (HttpRequest): Request from client.

        Returns:
            Response: redirects to wait-for-download view,
                see :class:`~devilry.devilry_group.views.download_files.feedbackfeed_downloadviews.WaitForDownload`, or
                returns the content, see `~devilry.devilry_group.utils.download_response`.
        """
        feedbackset_id = kwargs.get('feedbackset_id')
        feedbackset = get_object_or_404(group_models.FeedbackSet, id=feedbackset_id)

        # Check that the cradmin role and the AssignmentGroup is the same.
        if feedbackset.group.id != request.cradmin_role.id:
            raise Http404()

        # Check if archive exists
        try:
            archive_meta = archivemodels.CompressedArchiveMeta.objects.get(content_object_id=feedbackset_id)
        except ObjectDoesNotExist:
            # Run actiongroup
            batchregistry.Registry.get_instance().run(
                actiongroup_name='batchframework_compress_feedbackset',
                context_object=feedbackset,
            )
        else:
            # Send response
            return download_response.download_response(
                    content_path=archive_meta.archive_path,
                    content_name=archive_meta.archive_name,
                    content_type='application/zip',
                    content_size=archive_meta.archive_size
            )

        return HttpResponseRedirect(
                self.request.cradmin_app.reverse_appurl('wait-for-download', pk=feedbackset_id))