Skip to content
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

Open
wants to merge 6 commits into
base: master-dev
Choose a base branch
from

Conversation

pumassv1
Copy link
Collaborator

!UWAGA! To nie jest finalna wersja rozwiązania issue #1586.

Co nie działa lub co może działać lepiej?

  • filtrowanie studentów: stare zapytanie do serwera lubi pospuć odfiltrowanych studentów
  • edycja pracy dyplomowej: nie wczytuje studentów

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.
wyglad

Wybranie studenta z pola Studenci przenosi go do pola Wybrani studenci. Analogicznie w drugą stronę.
studenci

Wprowadzone zmiany w kodzie

Za wyświetlenie przefiltrowanych studentów odpowiada skrypt w thesis_form.html, a za samą filtracje get_data(request) z views.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 pola students, self.data['students'] i self.cleaned_data['students] na wybranych studentów.

Comment on lines 228 to 230
students_html = ""
for student in filtered:
students_html += f"<option value='{student.pk}'>{student.user.get_full_name()} ({student.matricula})</option>"
Copy link
Contributor

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.

@@ -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'}))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
widget=forms.TextInput(attrs={'placeholder': 'Imie, nazwisko, numer indeksu'}))
widget=forms.TextInput(attrs={'placeholder': 'Filtruj po imieniu, nazwisku, numerze indeksu'}))

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Szybsze i wygodniejsze wybieranie studenta/-ów przypisywanych do tematu pracy dyplomowej
2 participants