Beispiel #1
0
def course_review_upload(request, course_slug):
    if request.method == "POST":
        course = get_course_if_user_can_view_or_404(course_slug, request)
        file_to_upload = request.FILES.get('pr_file', None)
        submission_text = request.POST.get('pr-submission', '')

        kq = get_object_or_404(KnowledgeQuantum, id=request.POST.get('kq_id', 0))
        unit = kq.unit

        if (file_to_upload.size / (1024 * 1024) >= settings.PEER_REVIEW_FILE_MAX_SIZE):
            messages.error(request, _('Your file is greater than the max allowed size (%d MB).') % settings.PEER_REVIEW_FILE_MAX_SIZE)
            return HttpResponseRedirect(reverse('course_classroom', args=[course_slug]) + "#unit%d/kq%d/p" % (unit.id, kq.id))

        if (len(submission_text) >= settings.PEER_REVIEW_TEXT_MAX_SIZE):
            messages.error(request, _('Your text is greater than the max allowed size (%d characters).') % settings.PEER_REVIEW_TEXT_MAX_SIZE)
            return HttpResponseRedirect(reverse('course_classroom', args=[course_slug]) + "#unit%d/kq%d/p" % (unit.id, kq.id))

        s3_upload(request.user.id, kq.id, file_to_upload.name, file_to_upload)
        file_url = s3_url(request.user.id, file_to_upload.name, kq.id)
        submission = {
            "author": request.user.id,
            "author_reviews": 0,
            "text": request.POST.get('pr-submission', ''),
            "file": file_url,
            "created": datetime.utcnow(),
            "reviews": 0,
            "course": course.id,
            "unit": unit.id,
            "kq": kq.id,
        }
        insert_p2p_if_does_not_exists_or_raise(submission)
        return HttpResponseRedirect(reverse('course_classroom', args=[course_slug]) + "#unit%d/kq%d/p" % (unit.id, kq.id))
Beispiel #2
0
    def obj_create(self, bundle, request=None, **kwargs):

        bundle = self.full_hydrate(bundle)

        if "bundle" not in bundle.data and "reviews" not in bundle.data:
            kq = KnowledgeQuantum.objects.get(id=int(bundle.data["kq"]))

            if "unit" not in bundle.data:
                bundle.data["unit"] = kq.unit.id

            if "course" not in bundle.data:
                bundle.data["course"] = kq.unit.course.id

        if "created" not in bundle.data:
            bundle.data["created"] = datetime.utcnow()

        bundle.data["reviews"] = 0
        bundle.data["author_reviews"] = 0
        bundle.data["author"] = request.user.id
        from moocng.peerreview.utils import insert_p2p_if_does_not_exists_or_raise
        _id = insert_p2p_if_does_not_exists_or_raise(bundle.data, self._collection)

        bundle.obj = MongoObj(bundle.data)
        self.send_created_signal(request.user.id, bundle.obj)
        bundle.obj.uuid = str(_id)

        bundle.uuid = bundle.obj.uuid

        return bundle
Beispiel #3
0
    def obj_create(self, bundle, request=None, **kwargs):

        bundle = self.full_hydrate(bundle)

        if "bundle" not in bundle.data and "reviews" not in bundle.data:
            kq = KnowledgeQuantum.objects.get(id=int(bundle.data["kq"]))

            if "unit" not in bundle.data:
                bundle.data["unit"] = kq.unit.id

            if "course" not in bundle.data:
                bundle.data["course"] = kq.unit.course.id

        if "created" not in bundle.data:
            bundle.data["created"] = datetime.utcnow()

        bundle.data["reviews"] = 0
        bundle.data["author_reviews"] = 0
        bundle.data["author"] = request.user.id
        from moocng.peerreview.utils import insert_p2p_if_does_not_exists_or_raise
        _id = insert_p2p_if_does_not_exists_or_raise(bundle.data,
                                                     self._collection)

        bundle.obj = MongoObj(bundle.data)
        self.send_created_signal(request.user.id, bundle.obj)
        bundle.obj.uuid = str(_id)

        bundle.uuid = bundle.obj.uuid

        return bundle
Beispiel #4
0
def course_review_upload(request, course_slug):
    if request.method == "POST":
        course = get_course_if_user_can_view_or_404(course_slug, request)
        file_to_upload = request.FILES.get('pr_file', None)
        submission_text = request.POST.get('pr-submission', '')

        kq = get_object_or_404(KnowledgeQuantum,
                               id=request.POST.get('kq_id', 0))
        unit = kq.unit

        if (file_to_upload.size /
            (1024 * 1024) >= settings.PEER_REVIEW_FILE_MAX_SIZE):
            messages.error(
                request,
                _('Your file is greater than the max allowed size (%d MB).') %
                settings.PEER_REVIEW_FILE_MAX_SIZE)
            return HttpResponseRedirect(
                reverse('course_classroom', args=[course_slug]) +
                "#unit%d/kq%d/p" % (unit.id, kq.id))

        if (len(submission_text) >= settings.PEER_REVIEW_TEXT_MAX_SIZE):
            messages.error(
                request,
                _('Your text is greater than the max allowed size (%d characters).'
                  ) % settings.PEER_REVIEW_TEXT_MAX_SIZE)
            return HttpResponseRedirect(
                reverse('course_classroom', args=[course_slug]) +
                "#unit%d/kq%d/p" % (unit.id, kq.id))

        s3_upload(request.user.id, kq.id, file_to_upload.name, file_to_upload)
        file_url = s3_url(request.user.id, file_to_upload.name, kq.id)
        submission = {
            "author": request.user.id,
            "author_reviews": 0,
            "text": request.POST.get('pr-submission', ''),
            "file": file_url,
            "created": datetime.utcnow(),
            "reviews": 0,
            "course": course.id,
            "unit": unit.id,
            "kq": kq.id,
        }
        insert_p2p_if_does_not_exists_or_raise(submission)
        return HttpResponseRedirect(
            reverse('course_classroom', args=[course_slug]) +
            "#unit%d/kq%d/p" % (unit.id, kq.id))