示例#1
0
    def post(self):
        self.set_session_store()
        self.response.headers['Content-Type'] = "application/json"

        sender_id = self.current_user_id()
        sender = User.get_by_id(sender_id) if sender_id else None
        if not sender:
            self.render_json(
                {"error": "you need to be logged in to upload files."},
                401
            )
            return

        if (
            not sender.is_staff
            and not sender.is_admin
            and not sender.is_domain_admin
        ):
            self.render_json(
                {"error": "Only admin and staff can upload files."},
                403
            )
            return

        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        name = self.request.POST.get('name', blob_info.filename)

        exam = models.AssessmentExam.new_exam(name, blob_info.key())
        self.render_json(exam.summary())
示例#2
0
    def get(self, keyId):
        self.set_session_store()

        keyId = str(urllib.unquote(keyId))

        viewer_id = self.current_user_id()
        viewer = User.get_by_id(viewer_id) if viewer_id else None
        if not viewer:
            self.error(401)
            return

        doc = models.Document.get_by_id(keyId)
        if (
            not viewer.is_staff
            and not viewer.is_admin
            and not viewer.is_domain_admin
            and viewer.student_id != doc.dest_ref.id()
        ):
            self.error(403)

        blob_info = blobstore.BlobInfo.get(keyId)
        if blob_info.filename.endswith('.pdf'):
            self.send_blob(blob_info, content_type='application/pdf')
        else:
            self.send_blob(blob_info)
示例#3
0
    def post(self):
        self.set_session_store()
        self.response.headers['Content-Type'] = "application/json"

        sender_id = self.current_user_id()
        sender = User.get_by_id(sender_id) if sender_id else None
        if not sender:
            self.render_json(
                {"error": "you need to be logged in to upload files."},
                401
            )
            return

        if (
            not sender.is_staff
            and not sender.is_admin
            and not sender.is_domain_admin
        ):
            self.render_json(
                {"error": "Only admin and staff can upload files."},
                403
            )
            return

        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        dest_student_id = self.request.POST.get('destId')
        name = self.request.POST.get('name', blob_info.filename)
        doc_type = self.request.POST.get('docType')

        if not dest_student_id:
            self.render_json(
                {"error": 'No recipent was given.'},
                400
            )
            return

        if not doc_type:
            self.render_json(
                {"error": 'A document should have a type.'},
                400
            )
            return

        try:
            new_file = models.Document.new_file(
                dest_student_id, blob_info, doc_type, sender, name
            )
        except (ValueError, ValidationError,), e:
            self.render_json(
                {"error": "Failed to safe new file (%s)." % str(e)},
                400
            )
            return
示例#4
0
    def post(self):
        self.set_session_store()
        self.response.headers['Content-Type'] = "application/json"

        sender_id = self.current_user_id()
        sender = User.get_by_id(sender_id) if sender_id else None
        if not sender:
            self.render_json(
                {"error": "you need to be logged in to upload files."}, 401)
            return

        if (not sender.is_staff and not sender.is_admin
                and not sender.is_domain_admin):
            self.render_json(
                {"error": "Only admin and staff can upload files."}, 403)
            return

        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        dest_student_id = self.request.POST.get('destId')
        name = self.request.POST.get('name', blob_info.filename)
        doc_type = self.request.POST.get('docType')

        if not dest_student_id:
            self.render_json({"error": 'No recipent was given.'}, 400)
            return

        if not doc_type:
            self.render_json({"error": 'A document should have a type.'}, 400)
            return

        try:
            new_file = models.Document.new_file(dest_student_id, blob_info,
                                                doc_type, sender, name)
        except (
                ValueError,
                ValidationError,
        ), e:
            self.render_json(
                {"error": "Failed to safe new file (%s)." % str(e)}, 400)
            return
示例#5
0
    def get(self, keyId):
        self.set_session_store()

        keyId = str(urllib.unquote(keyId))

        viewer_id = self.current_user_id()
        viewer = User.get_by_id(viewer_id) if viewer_id else None
        if not viewer:
            self.error(401)
            return

        doc = models.Document.get_by_id(keyId)
        if (not viewer.is_staff and not viewer.is_admin
                and not viewer.is_domain_admin
                and viewer.student_id != doc.dest_ref.id()):
            self.error(403)

        blob_info = blobstore.BlobInfo.get(keyId)
        if blob_info.filename.endswith('.pdf'):
            self.send_blob(blob_info, content_type='application/pdf')
        else:
            self.send_blob(blob_info)
示例#6
0
    def post(self):
        self.set_session_store()
        self.response.headers['Content-Type'] = "application/json"

        sender_id = self.current_user_id()
        sender = User.get_by_id(sender_id) if sender_id else None
        if not sender:
            self.render_json(
                {"error": "you need to be logged in to upload files."}, 401)
            return

        if (not sender.is_staff and not sender.is_admin
                and not sender.is_domain_admin):
            self.render_json(
                {"error": "Only admin and staff can upload files."}, 403)
            return

        upload_files = self.get_uploads('file')
        blob_info = upload_files[0]
        name = self.request.POST.get('name', blob_info.filename)

        exam = models.AssessmentExam.new_exam(name, blob_info.key())
        self.render_json(exam.summary())