-
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
Niepuste tytuły wydarzeń #1504
base: master-dev
Are you sure you want to change the base?
The head ref may contain hidden characters: "1487-niepuste-tytu\u0142y-wydarze\u0144"
Niepuste tytuły wydarzeń #1504
Conversation
zapisy/apps/schedule/models/event.py
Outdated
@@ -39,7 +39,7 @@ class Event(models.Model): | |||
(TYPE_GENERIC, 'Wydarzenie')] | |||
|
|||
title = models.CharField(max_length=255, verbose_name='Tytuł', null=True, blank=True) | |||
description = models.TextField(verbose_name='Opis', blank=True) | |||
description = models.TextField(verbose_name='Opis', null=True, blank=True) | |||
type = models.CharField(choices=TYPES, max_length=1, verbose_name='Typ') | |||
visible = models.BooleanField(verbose_name='Wydarzenie jest publiczne', default=False) |
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.
Dla większej logicznej spójności z analogiczną zmianą dla formularza (wymaga zregenerowania migracji)
visible = models.BooleanField(verbose_name='Wydarzenie jest publiczne', default=False) | |
visible = models.BooleanField(verbose_name='Wydarzenie jest publiczne', default=True) |
zapisy/apps/schedule/forms.py
Outdated
@@ -104,9 +104,19 @@ class Meta: | |||
model = Event | |||
exclude = ('status', 'author', 'created', 'edited', 'group', 'interested') | |||
|
|||
def clean(self): | |||
cleaned_data = self.cleaned_data |
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.
Jeśli nie ma konkretnego powodu, dla którego nie wywołujemy na początku metody clean
z nadklasy, to warto to zrobić.
Byłoby w sumie dobrze, gdyby przy polach wyboru przedmiotu / tytułu pokazywała się gwiazdka sugerująca użytkownikowi, że to pole jest wymagane. Tyle tylko, że nie można tego załatwić, przez |
Zmiany:
|
…ired jest teraz zawsze ustawiony na True.
… argument required=False
c57e156
to
ca56566
Compare
…sany kurs a egzaminy i kolokwia nazwę
if cleaned_data['type'] not in (Event.TYPE_EXAM, Event.TYPE_TEST): | ||
cleaned_data['course'] = None | ||
if cleaned_data['type'] != Event.TYPE_GENERIC: | ||
cleaned_data['title'] = None |
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.
To nie jest pytanie retoryczne: czy tak byłoby przejrzyściej, czy wręcz przeciwnie? Pewne testy przestają się powtarzać, ale to wcale nie musi być krok w dobrą stronę...
if cleaned_data['type'] not in (Event.TYPE_EXAM, Event.TYPE_TEST): | |
cleaned_data['course'] = None | |
if cleaned_data['type'] != Event.TYPE_GENERIC: | |
cleaned_data['title'] = None | |
if cleaned_data['type'] not in (Event.TYPE_EXAM, Event.TYPE_TEST): | |
cleaned_data['course'] = None | |
elif cleaned_data['course'] == None: | |
raise # wyjątek | |
if cleaned_data['type'] != Event.TYPE_GENERIC: | |
cleaned_data['title'] = None | |
elif cleaned_data['title'] in ('', None): | |
raise # wyjątek |
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.
Początkowo wydawało mi się, że wersja pierwotna jest trochę bardziej przejrzysta, bo bloki kodu (te oddzielone pustymi liniami) dotyczą odrębnych kwestii łatwiejszych do zauważenia. W pierwszym czyścimy niepotrzebne pola, a w drugim sprawdzamy, czy pola obowiązkowe są wypełnione. W zasugerowanej zmianie te bloki są podzielone względem tego, którym z pól cleaned_data
się zajmujemy, co moim zdaniem jest trochę mniej czytelne. Przy dodawaniu kolejnych pól (np. thesis
) będziemy dodawać kolejne bloki zamiast po jednym ifie do każdego z dwóch bloków. Może tak będzie lepiej a może nie, ale warto wziąć to pod uwagę. Na początku ten elif ...
wydał mi się mało czytelny, w pierwotnej wersji można usunąć else
a elif
zamienić na if
(to nie ja pisałem tamten fragment) i przejrzystość moim zdaniem jeszcze bardziej się poprawi (a liczba testów ani logika się nie zmieni). Ogólnie to im dłużej o tym myślę, tym bardziej odnoszę wrażenia, że czytelność obu wersji jest taka sama.
Dla "zwykłych" wydarzeń dodaje do formularza rezerwacji wydarzenia wymaganie niepustego tytułu. Dla wydarzeń typu egzamin/kolokwium dodaje wymaganie wybrania przedmiotu z listy (dla nich w miejscu tytułu wyświetlamy nazwę przedmiotu). W efekcie nigdy nie mamy problemu niewidocznego tytułu.
Usuwa też wymaganie niepustego opisu wydarzenia i zmienia checkbox publicznego wydarzenia na domyślnie zaznaczony.
Rozwiązuje #1487