mirror of
https://git.v0id.ovh/n3wt-innov/n3wt-school.git
synced 2026-01-28 23:43:22 +00:00
fix: Link documents with establishments
This commit is contained in:
@ -12,11 +12,27 @@ from N3wtSchool import bdd
|
|||||||
|
|
||||||
class RegistrationSchoolFileMasterView(APIView):
|
class RegistrationSchoolFileMasterView(APIView):
|
||||||
@swagger_auto_schema(
|
@swagger_auto_schema(
|
||||||
operation_description="Récupère tous les masters de templates d'inscription",
|
operation_description="Récupère tous les masters de templates d'inscription pour un établissement donné",
|
||||||
|
manual_parameters=[
|
||||||
|
openapi.Parameter(
|
||||||
|
'establishment_id',
|
||||||
|
openapi.IN_QUERY,
|
||||||
|
description="ID de l'établissement",
|
||||||
|
type=openapi.TYPE_INTEGER,
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
],
|
||||||
responses={200: RegistrationSchoolFileMasterSerializer(many=True)}
|
responses={200: RegistrationSchoolFileMasterSerializer(many=True)}
|
||||||
)
|
)
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
masters = RegistrationSchoolFileMaster.objects.all()
|
establishment_id = request.GET.get('establishment_id')
|
||||||
|
if not establishment_id:
|
||||||
|
return Response({'error': "Paramètre 'establishment_id' requis"}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
# Filtrer les masters liés à l'établissement via groups.establishment
|
||||||
|
masters = RegistrationSchoolFileMaster.objects.filter(
|
||||||
|
groups__establishment__id=establishment_id
|
||||||
|
).distinct()
|
||||||
serializer = RegistrationSchoolFileMasterSerializer(masters, many=True)
|
serializer = RegistrationSchoolFileMasterSerializer(masters, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@ -86,11 +102,27 @@ class RegistrationSchoolFileMasterSimpleView(APIView):
|
|||||||
|
|
||||||
class RegistrationSchoolFileTemplateView(APIView):
|
class RegistrationSchoolFileTemplateView(APIView):
|
||||||
@swagger_auto_schema(
|
@swagger_auto_schema(
|
||||||
operation_description="Récupère tous les templates d'inscription",
|
operation_description="Récupère tous les templates d'inscription pour un établissement donné",
|
||||||
|
manual_parameters=[
|
||||||
|
openapi.Parameter(
|
||||||
|
'establishment_id',
|
||||||
|
openapi.IN_QUERY,
|
||||||
|
description="ID de l'établissement",
|
||||||
|
type=openapi.TYPE_INTEGER,
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
],
|
||||||
responses={200: RegistrationSchoolFileTemplateSerializer(many=True)}
|
responses={200: RegistrationSchoolFileTemplateSerializer(many=True)}
|
||||||
)
|
)
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
templates = RegistrationSchoolFileTemplate.objects.all()
|
establishment_id = request.GET.get('establishment_id')
|
||||||
|
if not establishment_id:
|
||||||
|
return Response({'error': "Paramètre 'establishment_id' requis"}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
# Filtrer les templates liés à l'établissement via master.groups.establishment
|
||||||
|
templates = RegistrationSchoolFileTemplate.objects.filter(
|
||||||
|
master__groups__establishment__id=establishment_id
|
||||||
|
).distinct()
|
||||||
serializer = RegistrationSchoolFileTemplateSerializer(templates, many=True)
|
serializer = RegistrationSchoolFileTemplateSerializer(templates, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@ -160,11 +192,27 @@ class RegistrationSchoolFileTemplateSimpleView(APIView):
|
|||||||
|
|
||||||
class RegistrationParentFileMasterView(APIView):
|
class RegistrationParentFileMasterView(APIView):
|
||||||
@swagger_auto_schema(
|
@swagger_auto_schema(
|
||||||
operation_description="Récupère tous les fichiers parents",
|
operation_description="Récupère tous les fichiers parents pour un établissement donné",
|
||||||
|
manual_parameters=[
|
||||||
|
openapi.Parameter(
|
||||||
|
'establishment_id',
|
||||||
|
openapi.IN_QUERY,
|
||||||
|
description="ID de l'établissement",
|
||||||
|
type=openapi.TYPE_INTEGER,
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
],
|
||||||
responses={200: RegistrationParentFileMasterSerializer(many=True)}
|
responses={200: RegistrationParentFileMasterSerializer(many=True)}
|
||||||
)
|
)
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
templates = RegistrationParentFileMaster.objects.all()
|
establishment_id = request.GET.get('establishment_id')
|
||||||
|
if not establishment_id:
|
||||||
|
return Response({'error': "Paramètre 'establishment_id' requis"}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
# Filtrer les fichiers parents liés à l'établissement
|
||||||
|
templates = RegistrationParentFileMaster.objects.filter(
|
||||||
|
groups__establishment__id=establishment_id
|
||||||
|
).distinct()
|
||||||
serializer = RegistrationParentFileMasterSerializer(templates, many=True)
|
serializer = RegistrationParentFileMasterSerializer(templates, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
@ -234,11 +282,27 @@ class RegistrationParentFileMasterSimpleView(APIView):
|
|||||||
|
|
||||||
class RegistrationParentFileTemplateView(APIView):
|
class RegistrationParentFileTemplateView(APIView):
|
||||||
@swagger_auto_schema(
|
@swagger_auto_schema(
|
||||||
operation_description="Récupère tous les templates d'inscription",
|
operation_description="Récupère tous les templates parents pour un établissement donné",
|
||||||
|
manual_parameters=[
|
||||||
|
openapi.Parameter(
|
||||||
|
'establishment_id',
|
||||||
|
openapi.IN_QUERY,
|
||||||
|
description="ID de l'établissement",
|
||||||
|
type=openapi.TYPE_INTEGER,
|
||||||
|
required=True
|
||||||
|
)
|
||||||
|
],
|
||||||
responses={200: RegistrationParentFileTemplateSerializer(many=True)}
|
responses={200: RegistrationParentFileTemplateSerializer(many=True)}
|
||||||
)
|
)
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
templates = RegistrationParentFileTemplate.objects.all()
|
establishment_id = request.GET.get('establishment_id')
|
||||||
|
if not establishment_id:
|
||||||
|
return Response({'error': "Paramètre 'establishment_id' requis"}, status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
|
||||||
|
# Filtrer les templates parents liés à l'établissement via master.groups.establishment
|
||||||
|
templates = RegistrationParentFileTemplate.objects.filter(
|
||||||
|
master__groups__establishment__id=establishment_id
|
||||||
|
).distinct()
|
||||||
serializer = RegistrationParentFileTemplateSerializer(templates, many=True)
|
serializer = RegistrationParentFileTemplateSerializer(templates, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
|
|||||||
@ -78,7 +78,7 @@ export default function Page() {
|
|||||||
handleTuitionFees();
|
handleTuitionFees();
|
||||||
|
|
||||||
// Fetch data for registration file schoolFileTemplates
|
// Fetch data for registration file schoolFileTemplates
|
||||||
fetchRegistrationSchoolFileMasters()
|
fetchRegistrationSchoolFileMasters(selectedEstablishmentId)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
setFichiers(data);
|
setFichiers(data);
|
||||||
})
|
})
|
||||||
|
|||||||
@ -313,13 +313,13 @@ export default function CreateSubscriptionPage() {
|
|||||||
})
|
})
|
||||||
.catch(requestErrorHandler);
|
.catch(requestErrorHandler);
|
||||||
|
|
||||||
fetchRegistrationSchoolFileMasters()
|
fetchRegistrationSchoolFileMasters(selectedEstablishmentId)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
setSchoolFileMasters(data);
|
setSchoolFileMasters(data);
|
||||||
})
|
})
|
||||||
.catch(requestErrorHandler);
|
.catch(requestErrorHandler);
|
||||||
|
|
||||||
fetchRegistrationParentFileMasters()
|
fetchRegistrationParentFileMasters(selectedEstablishmentId)
|
||||||
.then((data) => {
|
.then((data) => {
|
||||||
setParentFileMasters(data);
|
setParentFileMasters(data);
|
||||||
})
|
})
|
||||||
|
|||||||
@ -47,11 +47,8 @@ export const fetchRegistrationFileFromGroup = async (groupId) => {
|
|||||||
return response.json();
|
return response.json();
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchRegistrationSchoolFileMasters = (id = null) => {
|
export const fetchRegistrationSchoolFileMasters = (establishment) => {
|
||||||
let url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_MASTERS_URL}`;
|
let url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_MASTERS_URL}?establishment_id=${establishment}`;
|
||||||
if (id) {
|
|
||||||
url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_MASTERS_URL}/${id}`;
|
|
||||||
}
|
|
||||||
const request = new Request(`${url}`, {
|
const request = new Request(`${url}`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
@ -61,11 +58,8 @@ export const fetchRegistrationSchoolFileMasters = (id = null) => {
|
|||||||
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchRegistrationParentFileMasters = (id = null) => {
|
export const fetchRegistrationParentFileMasters = (establishment) => {
|
||||||
let url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}`;
|
let url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}?establishment_id=${establishment}`;
|
||||||
if (id) {
|
|
||||||
url = `${BE_SUBSCRIPTION_REGISTRATION_PARENT_FILE_MASTERS_URL}/${id}`;
|
|
||||||
}
|
|
||||||
const request = new Request(`${url}`, {
|
const request = new Request(`${url}`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
@ -75,11 +69,8 @@ export const fetchRegistrationParentFileMasters = (id = null) => {
|
|||||||
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
return fetch(request).then(requestResponseHandler).catch(errorHandler);
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchRegistrationSchoolFileTemplates = (id = null) => {
|
export const fetchRegistrationSchoolFileTemplates = (establishment) => {
|
||||||
let url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}`;
|
let url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}?establishment_id=${establishment}`;
|
||||||
if (id) {
|
|
||||||
url = `${BE_SUBSCRIPTION_REGISTRATION_SCHOOL_FILE_TEMPLATES_URL}/${id}`;
|
|
||||||
}
|
|
||||||
const request = new Request(`${url}`, {
|
const request = new Request(`${url}`, {
|
||||||
method: 'GET',
|
method: 'GET',
|
||||||
headers: {
|
headers: {
|
||||||
|
|||||||
@ -24,7 +24,8 @@ const ProfileSelector = ({ onRoleChange, className = '' }) => {
|
|||||||
setSelectedEstablishmentEvaluationFrequency,
|
setSelectedEstablishmentEvaluationFrequency,
|
||||||
setSelectedEstablishmentTotalCapacity,
|
setSelectedEstablishmentTotalCapacity,
|
||||||
selectedEstablishmentLogo,
|
selectedEstablishmentLogo,
|
||||||
setSelectedEstablishmentLogo
|
setSelectedEstablishmentLogo,
|
||||||
|
setApiDocuseal
|
||||||
} = useEstablishment();
|
} = useEstablishment();
|
||||||
const { isConnected, connectionStatus } = useChatConnection();
|
const { isConnected, connectionStatus } = useChatConnection();
|
||||||
const [dropdownOpen, setDropdownOpen] = useState(false);
|
const [dropdownOpen, setDropdownOpen] = useState(false);
|
||||||
@ -40,6 +41,8 @@ const ProfileSelector = ({ onRoleChange, className = '' }) => {
|
|||||||
user.roles[roleId].establishment__total_capacity;
|
user.roles[roleId].establishment__total_capacity;
|
||||||
const establishmentLogo =
|
const establishmentLogo =
|
||||||
user.roles[roleId].establishment__logo;
|
user.roles[roleId].establishment__logo;
|
||||||
|
const establishmentApiDocuseal =
|
||||||
|
user.roles[roleId].establishment__api_docuseal;
|
||||||
setProfileRole(role);
|
setProfileRole(role);
|
||||||
setSelectedEstablishmentId(establishmentId);
|
setSelectedEstablishmentId(establishmentId);
|
||||||
setSelectedEstablishmentEvaluationFrequency(
|
setSelectedEstablishmentEvaluationFrequency(
|
||||||
@ -47,6 +50,7 @@ const ProfileSelector = ({ onRoleChange, className = '' }) => {
|
|||||||
);
|
);
|
||||||
setSelectedEstablishmentTotalCapacity(establishmentTotalCapacity);
|
setSelectedEstablishmentTotalCapacity(establishmentTotalCapacity);
|
||||||
setSelectedEstablishmentLogo(establishmentLogo);
|
setSelectedEstablishmentLogo(establishmentLogo);
|
||||||
|
setApiDocuseal(establishmentApiDocuseal);
|
||||||
setSelectedRoleId(roleId);
|
setSelectedRoleId(roleId);
|
||||||
if (onRoleChange) {
|
if (onRoleChange) {
|
||||||
onRoleChange(roleId);
|
onRoleChange(roleId);
|
||||||
|
|||||||
@ -78,10 +78,10 @@ export default function FilesGroupsManagement({
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (selectedEstablishmentId) {
|
if (selectedEstablishmentId) {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
fetchRegistrationSchoolFileMasters(),
|
fetchRegistrationSchoolFileMasters(selectedEstablishmentId),
|
||||||
fetchRegistrationFileGroups(selectedEstablishmentId),
|
fetchRegistrationFileGroups(selectedEstablishmentId),
|
||||||
fetchRegistrationSchoolFileTemplates(),
|
fetchRegistrationSchoolFileTemplates(selectedEstablishmentId),
|
||||||
fetchRegistrationParentFileMasters(),
|
fetchRegistrationParentFileMasters(selectedEstablishmentId),
|
||||||
])
|
])
|
||||||
.then(
|
.then(
|
||||||
([
|
([
|
||||||
|
|||||||
Reference in New Issue
Block a user