Fix user header on circle page

This commit is contained in:
Christian Cueni 2023-01-10 07:19:42 +01:00
parent 0d64f8fbb6
commit e197a17f15
8 changed files with 49 additions and 47 deletions

View File

@ -143,15 +143,9 @@ async function uploadDocument(data: DocumentUploadData) {
<Transition mode="out-in"> <Transition mode="out-in">
<div> <div>
<div class="circle-container bg-gray-200"> <div class="circle-container bg-gray-200">
<div class="circle max-w-9xl">
<div v-if="profileUser" class="user-profile"> <div v-if="profileUser" class="user-profile">
<header <header class="flex flex-row items-center p-8 bg-white relative shadow-xl">
class="flex flex-row items-center p-8 bg-white relative shadow-xl" <img class="w-32 h-32 rounded-full mr-8" :src="profileUser.avatar_url" />
>
<img
class="w-32 h-32 rounded-full mr-8"
:src="profileUser.avatar_url"
/>
<div> <div>
<h1 class="mb-2"> <h1 class="mb-2">
{{ profileUser.first_name }} {{ profileUser.last_name }} {{ profileUser.first_name }} {{ profileUser.last_name }}
@ -167,6 +161,7 @@ async function uploadDocument(data: DocumentUploadData) {
</div> </div>
</header> </header>
</div> </div>
<div class="circle max-w-9xl">
<div class="flex flex-col lg:flex-row"> <div class="flex flex-col lg:flex-row">
<div class="flex-initial lg:w-128 px-4 py-4 lg:px-8 lg:pt-4 bg-white"> <div class="flex-initial lg:w-128 px-4 py-4 lg:px-8 lg:pt-4 bg-white">
<router-link <router-link

View File

@ -24,17 +24,6 @@ function loadCourseSessionsData(reload = false) {
log.debug("loadCourseSessionsData called"); log.debug("loadCourseSessionsData called");
const courseSessions = ref<CourseSession[]>([]); const courseSessions = ref<CourseSession[]>([]);
function userExpertCircles(
userId: number,
courseSessionForRoute: CourseSession | undefined
): CircleExpert[] {
if (!courseSessionForRoute) {
return [];
}
return courseSessionForRoute.experts.filter((expert) => expert.user_id === userId);
}
async function loadAndUpdate() { async function loadAndUpdate() {
courseSessions.value = await itGetCached(`/api/course/sessions/`, { courseSessions.value = await itGetCached(`/api/course/sessions/`, {
reload: reload, reload: reload,
@ -50,6 +39,16 @@ function userExpertCircles(
return { courseSessions }; return { courseSessions };
} }
function userExpertCircles(
userId: number,
courseSessionForRoute: CourseSession | undefined
): CircleExpert[] {
if (!courseSessionForRoute) {
return [];
}
return courseSessionForRoute.experts.filter((expert) => expert.user_id === userId);
}
export const useCourseSessionsStore = defineStore("courseSessions", () => { export const useCourseSessionsStore = defineStore("courseSessions", () => {
// using setup function seems cleaner, see https://pinia.vuejs.org/core-concepts/#setup-stores // using setup function seems cleaner, see https://pinia.vuejs.org/core-concepts/#setup-stores
@ -87,6 +86,7 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => {
const userStore = useUserStore(); const userStore = useUserStore();
const circleStore = useCircleStore(); const circleStore = useCircleStore();
const expertCircles = userExpertCircles(userStore.id, courseSessionForRoute.value); const expertCircles = userExpertCircles(userStore.id, courseSessionForRoute.value);
return ( return (
expertCircles.filter( expertCircles.filter(
(c) => c.circle_translation_key === circleStore.circle?.translation_key (c) => c.circle_translation_key === circleStore.circle?.translation_key
@ -124,7 +124,7 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => {
file_type: "image/png", file_type: "image/png",
file_name: "test.png", file_name: "test.png",
}); });
}; }
async function removeDocument(documentId: number) { async function removeDocument(documentId: number) {
await deleteCircleDocument(documentId); await deleteCircleDocument(documentId);
@ -148,5 +148,4 @@ export const useCourseSessionsStore = defineStore("courseSessions", () => {
startUpload, startUpload,
removeDocument, removeDocument,
}; };
}); });

View File

@ -36,7 +36,8 @@ class Migration(migrations.Migration):
( (
"file", "file",
models.OneToOneField( models.OneToOneField(
on_delete=django.db.models.deletion.CASCADE, to="files.uploadfile" on_delete=django.db.models.deletion.CASCADE,
to="files.uploadfile",
), ),
), ),
( (

View File

@ -185,6 +185,7 @@ class DocumentUploadApiTestCase(APITestCase):
response = self.client.delete(f"/api/core/document/{document.id}/") response = self.client.delete(f"/api/core/document/{document.id}/")
self.assertEqual(response.status_code, 403) self.assertEqual(response.status_code, 403)
# expert cannot upload in other course # expert cannot upload in other course
# expert cannot delete other upload # expert cannot delete other upload
# exper cannot change course # exper cannot change course

View File

@ -20,7 +20,9 @@ class Command(BaseCommand):
num_deleted = 0 num_deleted = 0
unreferenced_uploads = UploadFile.objects.filter(upload_finished_at__isnull=True) unreferenced_uploads = UploadFile.objects.filter(
upload_finished_at__isnull=True
)
if dry_run: if dry_run:
print("------ DRY RUN -------") print("------ DRY RUN -------")

View File

@ -79,7 +79,9 @@ class FileStandardUploadService:
return obj return obj
@transaction.atomic @transaction.atomic
def update(self, file: UploadFile, file_name: str = "", file_type: str = "") -> UploadFile: def update(
self, file: UploadFile, file_name: str = "", file_type: str = ""
) -> UploadFile:
_validate_file_size(self.file_obj) _validate_file_size(self.file_obj)
file_name, file_type = self._infer_file_name_and_type(file_name, file_type) file_name, file_type = self._infer_file_name_and_type(file_name, file_type)
@ -111,7 +113,9 @@ class FileDirectUploadService:
self.user = user self.user = user
@transaction.atomic @transaction.atomic
def start(self, file_name: str, file_type: str) -> Tuple[UploadFile, Dict[str, Any]]: def start(
self, file_name: str, file_type: str
) -> Tuple[UploadFile, Dict[str, Any]]:
file = UploadFile( file = UploadFile(
original_file_name=file_name, original_file_name=file_name,
file_name=file_generate_name(file_name), file_name=file_generate_name(file_name),