Fix permissions, refactor upload code

This commit is contained in:
Christian Cueni 2022-12-29 19:25:06 +01:00
parent fc017961ab
commit d65d786f4f
3 changed files with 23 additions and 19 deletions

View File

@ -16,11 +16,11 @@ function uploadFile(fileData, file: File) {
if (fileData.fields) {
return s3Upload(fileData, file);
} else {
return djUpload(fileData, file);
return directUpload(fileData, file);
}
}
function djUpload(fileData, file: File) {
function directUpload(fileData, file: File) {
const formData = new FormData();
formData.append("file", file);
@ -36,11 +36,7 @@ function djUpload(fileData, file: File) {
// @ts-ignore
options.headers["X-CSRFToken"] = getCookieValue("csrftoken");
return itFetch(fileData.url, options).then((response) => {
return response.json().catch(() => {
return Promise.resolve(null);
});
});
handleUpload(fileData.url, options);
}
function s3Upload(fileData, file: File) {
@ -50,13 +46,17 @@ function s3Upload(fileData, file: File) {
}
formData.append("file", file);
console.log("fetch", formData);
const options = Object.assign({
method: "POST",
body: formData,
});
return itFetch(fileData.url, options).then((response) => {
return handleUpload(fileData.url, options);
}
function handleUpload(url: string, options) {
return itFetch(url, options).then((response) => {
return response.json().catch(() => {
return Promise.resolve(null);
});

View File

@ -32,17 +32,20 @@ def is_circle_expert(user, learning_sequence, course) -> bool:
return True
try:
ls = LearningSequence.objects.get(id=learning_sequence)
learning_sequence = LearningSequence.objects.get(id=learning_sequence)
except LearningSequence.DoesNotExist:
return False
if not CourseSession.objects.filter(
id=course, coursesessionuser__user=user
).exists():
circle_id = learning_sequence.get_parent().circle.id
try:
CourseSessionUser.objects.get(
course_session__id=course,
user_id=user.id,
role=CourseSessionUser.Role.EXPERT,
expert__id=circle_id,
)
except CourseSessionUser.DoesNotExist:
return False
for expert in ls.get_parent().circle.experts.raw_data:
if expert["value"]["email"] == user.email:
return True
return False
return True

View File

@ -6,7 +6,7 @@ from vbv_lernwelt.course.consts import COURSE_TEST_ID
from vbv_lernwelt.course.creators.test_course import create_test_course
from vbv_lernwelt.course.models import CircleDocument, CourseSession, CourseSessionUser
from vbv_lernwelt.files.models import File
from vbv_lernwelt.learnpath.models import LearningSequence
from vbv_lernwelt.learnpath.models import Circle, LearningSequence
class DocumentUploadApiTestCase(APITestCase):
@ -29,6 +29,7 @@ class DocumentUploadApiTestCase(APITestCase):
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
role=CourseSessionUser.Role.EXPERT,
)
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-analyse"))
self.test_data = {
"file_name": "test.pdf",