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

#699 Wyswietlanie dni wolnych w kalendarzu #1627

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

Conversation

Michaelich
Copy link
Collaborator

Issue: #699

Dodano oznaczenie dni wolnych w aplikacji sale.

image

image

Dodano oznaczenie dni, z zajęciami z innego dnia tygodnia, w aplikacji sale

image

image

@Michaelich Michaelich self-assigned this Dec 31, 2023
@Michaelich Michaelich marked this pull request as ready for review February 14, 2024 18:23
@lgpawel
Copy link
Contributor

lgpawel commented Feb 15, 2024

Nie wiem, czy o tym rozmawialiśmy wcześniej, ale niespecjalnie podoba mi się, że w widoku miesiąca wykropkowane podkreślenie dostają również godziny i nazwy wydarzeń:
image
Być może zmiana tego będzie wiązać się z jakąś nieznaczną zmianą generowanego DOM, choć możliwe, że wystarczy jakiś karkołomny selektor CSS.

Pokrewna obserwacja jest jeszcze taka, że mamy dwie pary funkcji o bardzo podobnej logice i różniące się tylko wykorzystywanym endpointem z jednej, oraz nadawanymi klasami i wartością atrybutu title z drugiej strony, jeśli wprowadzimy powyższe, to ta duplikacja tylko się zaostrzy. Nie jest to jakieś absolutnie kluczowe, ale proszę przemyśleć, czy czegoś nie dałoby się tu uwspólnić.

Comment on lines 350 to 351
except Exception:
raise Http404
Copy link
Contributor

Choose a reason for hiding this comment

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

Po pierwsze nie powinniśmy "blankietowo" łapać wyjątków – na pewno możemy tu wymienić KeyError, a jeśli chodzi o ew. brak atrybutu GET obiektu request to można to w ogóle ogarnąć inaczej, np. dekoratorem require_GET (o ile w ogóle ten atrybut bywa nieobecny nawet przy żądaniach POST, nie pamiętam w tej chwili).

Po drugie – czy 404 to najwłaściwszy kod HTTP? Zasób istnieje, tylko ktoś próbuje z nim niepoprawnie rozmawiać.

end = datetime.datetime.strptime(end, input_date_format)
formatted_start = start.strftime(output_date_format)
formatted_end = end.strftime(output_date_format)
response = freedays.filter(day__gte=formatted_start, day__lte=formatted_end).values()
Copy link
Contributor

Choose a reason for hiding this comment

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

Django i tak zapewne dopiero tutaj wykona zapytanie do bazy, ale gdyby zrobić

Suggested change
response = freedays.filter(day__gte=formatted_start, day__lte=formatted_end).values()
response = Freeday.objects.filter(day__gte=formatted_start, day__lte=formatted_end).values()

i oczywiście wyrzucić wcześniejsze odwołanie do Freeday.objects, to stałoby się to jawne.

Comment on lines 343 to 344
Both dates has to be given in 'input_date_format'. Date is returned in 'output_date_format'.
Returns 404 if one or both paramas are missing.
Copy link
Contributor

@lgpawel lgpawel Feb 17, 2024

Choose a reason for hiding this comment

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

Suggested change
Both dates has to be given in 'input_date_format'. Date is returned in 'output_date_format'.
Returns 404 if one or both paramas are missing.
Both dates have to be given in 'input_date_format'. Date is returned in 'output_date_format'.
Responds with 404 if one or both params are missing.

A co do tej "zwracanej daty" – czy to jest prawda? Data, a właściwie daty, specjalnych dni, są zwracane w akurat takim formacie, jaki wypadnie z maszyny losującej bazy danych (via Django). Ten output_date_format wygląda na raczej dostosowany do tego, żeby zapytanie do bazy było dobrze napisane (co z drugiej strony oczywiście oznacza zapewne dokładnie ten sam format, ale zależność przyczynowo-skutkowa jest inna, niż sugeruje sformułowanie z komentarza).

Trzeba to jakoś przeformułować, bo obecnie to sugeruje, że zmieniając output_date_format uzyskamy inne sensowne zachowanie tej funkcji, a zdaje się, że możemy ją w ten sposób tylko zepsuć.

Both dates has to be given in 'input_date_format'. Date is returned in 'output_date_format'.
Returns 404 if one or both paramas are missing.
"""
changed_days = ChangedDay.objects.all()
Copy link
Contributor

Choose a reason for hiding this comment

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

Zdaje się, że ta funkcja różni się od poprzedniej literalnie tylko nazwą modelu, który tu odpytujemy, prawda? Zdeduplikowałbym również i je (te funkcje), choć pozostałbym przy bieżących nazwach endpointów – funkcja będzie musiała dostać dodatkowy argument mówiący, który model wybrać, i wartość tego argumentu będzie można zadać w deklaracji path w urls.py (jest na to jakiś kwarg, czego chyba gdzieś nawet używamy w projekcie).

Comment on lines 85 to 86
"W tym dniu odbywają się zajęcia ",
(x) => changedDatesMapping[changedDates[x].weekday - 1]
Copy link
Contributor

Choose a reason for hiding this comment

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

Trochę nie podobają mi się dwa osobne argumenty osobno trzymające część stałą i część zmienną komunikatu. Wydaje mi się, że byłoby nadal czytelne (tj. nie mniej niż różne inne kawałki kodu Vue 😏), gdyby bezpośrednio tutaj w trzecim (z trzech) argumentów napisać całą funkcję zwracającą cały napis w zależności od x. Swoją drogą byłoby bardziej wysokopoziomowe, gdyby argumentem takiej funkcji nie był indeks z jakiejś tam kolekcji, tylko od razu odpowiedni element.

(Część uwag z tego komentarza to tylko opinie przy których nie będę się upierał.)

Comment on lines 18 to 21
background-color: gainsboro;
}
.change-day {
background-color: beige;
Copy link
Contributor

Choose a reason for hiding this comment

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

No dobra, poważne uwagi moment: na jaki kolor pomalować garaż na rowery? Głównie to nie podoba mi się bezpośrednie użycie nazw kolorów CSS. Zamiast gainsboro użyłbym np. Bootstrapowego gray-300, zamiast beige (który też po prostu nieco mi się nie podoba) – trochę nie wiem. warning pewnie byłby za ostry, więc może go rozcieńczyć w białym? Jestem przekonany, że kiedyś widziałem jakieś bootstrapowe rodziny kolorów czy może klas z różnymi intensywnościami danego koloru bazowego, ale teraz tego nie mogę na szybko znaleźć.

BTW w nazwie klasy też mogłoby być changed-day.

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

Successfully merging this pull request may close these issues.

Wyświetlanie dni wolnych i zamienionych w kalendarzu aplikacji Sale
2 participants