Fix permissions, refactor upload code
This commit is contained in:
parent
fc017961ab
commit
d65d786f4f
|
|
@ -16,11 +16,11 @@ function uploadFile(fileData, file: File) {
|
||||||
if (fileData.fields) {
|
if (fileData.fields) {
|
||||||
return s3Upload(fileData, file);
|
return s3Upload(fileData, file);
|
||||||
} else {
|
} else {
|
||||||
return djUpload(fileData, file);
|
return directUpload(fileData, file);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function djUpload(fileData, file: File) {
|
function directUpload(fileData, file: File) {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
formData.append("file", file);
|
formData.append("file", file);
|
||||||
|
|
||||||
|
|
@ -36,11 +36,7 @@ function djUpload(fileData, file: File) {
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
options.headers["X-CSRFToken"] = getCookieValue("csrftoken");
|
options.headers["X-CSRFToken"] = getCookieValue("csrftoken");
|
||||||
|
|
||||||
return itFetch(fileData.url, options).then((response) => {
|
handleUpload(fileData.url, options);
|
||||||
return response.json().catch(() => {
|
|
||||||
return Promise.resolve(null);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function s3Upload(fileData, file: File) {
|
function s3Upload(fileData, file: File) {
|
||||||
|
|
@ -50,13 +46,17 @@ function s3Upload(fileData, file: File) {
|
||||||
}
|
}
|
||||||
|
|
||||||
formData.append("file", file);
|
formData.append("file", file);
|
||||||
console.log("fetch", formData);
|
|
||||||
const options = Object.assign({
|
const options = Object.assign({
|
||||||
method: "POST",
|
method: "POST",
|
||||||
body: formData,
|
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 response.json().catch(() => {
|
||||||
return Promise.resolve(null);
|
return Promise.resolve(null);
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -32,17 +32,20 @@ def is_circle_expert(user, learning_sequence, course) -> bool:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
try:
|
try:
|
||||||
ls = LearningSequence.objects.get(id=learning_sequence)
|
learning_sequence = LearningSequence.objects.get(id=learning_sequence)
|
||||||
except LearningSequence.DoesNotExist:
|
except LearningSequence.DoesNotExist:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not CourseSession.objects.filter(
|
circle_id = learning_sequence.get_parent().circle.id
|
||||||
id=course, coursesessionuser__user=user
|
|
||||||
).exists():
|
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
|
return False
|
||||||
|
|
||||||
for expert in ls.get_parent().circle.experts.raw_data:
|
return True
|
||||||
if expert["value"]["email"] == user.email:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return False
|
|
||||||
|
|
|
||||||
|
|
@ -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.creators.test_course import create_test_course
|
||||||
from vbv_lernwelt.course.models import CircleDocument, CourseSession, CourseSessionUser
|
from vbv_lernwelt.course.models import CircleDocument, CourseSession, CourseSessionUser
|
||||||
from vbv_lernwelt.files.models import File
|
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):
|
class DocumentUploadApiTestCase(APITestCase):
|
||||||
|
|
@ -29,6 +29,7 @@ class DocumentUploadApiTestCase(APITestCase):
|
||||||
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
user=User.objects.get(username="patrizia.huggel@eiger-versicherungen.ch"),
|
||||||
role=CourseSessionUser.Role.EXPERT,
|
role=CourseSessionUser.Role.EXPERT,
|
||||||
)
|
)
|
||||||
|
csu.expert.add(Circle.objects.get(slug="test-lehrgang-lp-circle-analyse"))
|
||||||
|
|
||||||
self.test_data = {
|
self.test_data = {
|
||||||
"file_name": "test.pdf",
|
"file_name": "test.pdf",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue