-
Notifications
You must be signed in to change notification settings - Fork 10
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
1586 szybsze i wygodniejsze wybieranie studentow do tematu pracy dyplomowej #1704
base: master-dev
Are you sure you want to change the base?
1586 szybsze i wygodniejsze wybieranie studentow do tematu pracy dyplomowej #1704
Conversation
zapisy/apps/theses/views.py
Outdated
students_html = "" | ||
for student in filtered: | ||
students_html += f"<option value='{student.pk}'>{student.user.get_full_name()} ({student.matricula})</option>" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Z wielu powodów dobrze byłoby, gdyby ten widok nie budował od razu fragmentu HTML. Skoro i tak zwracamy JSONa, to niech to będzie kolekcja obiektów z informacjami o studentach, którą odbierający skrypt przetworzy na odpowiednie poddrzewo DOM.
zapisy/apps/theses/forms.py
Outdated
@@ -58,6 +63,9 @@ class Meta: | |||
label="Maks. liczba studentów", coerce=int, | |||
choices=tuple((i, i) for i in range(1, MAX_MAX_ASSIGNED_STUDENTS + 1)) | |||
) | |||
user_input = forms.CharField(label="Znajdź studenta", max_length=30, required=False, | |||
widget=forms.TextInput(attrs={'placeholder': 'Imie, nazwisko, numer indeksu'})) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
widget=forms.TextInput(attrs={'placeholder': 'Imie, nazwisko, numer indeksu'})) | |
widget=forms.TextInput(attrs={'placeholder': 'Filtruj po imieniu, nazwisku, numerze indeksu'})) |
!UWAGA! To nie jest finalna wersja rozwiązania issue #1586.
Co nie działa lub co może działać lepiej?
Wprowadzone zmiany wizualne
Początkowa lista studentów jest pusta i jest dynamicznie ładowana.
Okno z studentami zostało podzielone, tak by z lewej strony byli studenci pasujący do wprowadzonego tekstu w polu
Znajdź studenta
, a z prawej już wybrani studenci.Wybranie studenta z pola
Studenci
przenosi go do polaWybrani studenci
. Analogicznie w drugą stronę.Wprowadzone zmiany w kodzie
Za wyświetlenie przefiltrowanych studentów odpowiada skrypt w
thesis_form.html
, a za samą filtracjeget_data(request)
zviews.py
.Wybranych przez użytkownika studentów trzymaym dodatkowo w niewidocznym polu
selected_students
na potrzeby późniejszej walidacji formularza.Dlaczego?
Konieczne było ustawienie
queryset
dla polastudents
,self.data['students']
iself.cleaned_data['students]
na wybranych studentów.