Za pomocą tytułowej aplikacji można łatwo stworzyć swego rodzaju autoryzację treści - odwiedzający dodaje treść, która pojawia się dopiero po potwierdzeniu przez moderatora lub po potwierdzeniu autentyczności podanego adresu email.

Skorzystałem u siebie z tego rozwiązania, bo nie widzę sensu wyważać otwartych drzwi, tym bardziej, że aplikacja wygląda na dopracowaną, a, co równie ważne - dodanie aplikacji nie wymaga praktycznie żadnych zmian w kodzie - pomijając przypadek opisany poniżej.

Podczas dodawania aplikacji do odpowiednich formularzy napotkałem drobny problem, mianowicie potrzebowałem w formularzu nadpisać metodę save(), aby dodać nowe przetworzone dane do modelu. Problem polega na tym, że metoda save() zmodyfikowanego formularza (bo nie korzystamy z ModelForm, ale ichniejszego DeferredForm) wywoływana jest w momencie tworzenia zastępczego obiektu, a w dokumentacji nie ma wzmianki o tym, co zrobić w przypadku, kiedy chcę przetworzyć dane w momencie faktycznego dodawania obiektu do bazy.

Czytaj dalej...

Człowiek całe życie się uczy...

27 października, 2009

Dopiero teraz wpadłem na to, że w shellu Django działa uzupełnianie składni po tabulatorze...

Django 1.1

29 lipca, 2009

Django 1.1 wydane! Do pobrania standardowo.

Pomimo, że korzystam z trunka, więc i tak mam wszystkie nowości, to w wolnej chwili trzeba będzie zajrzeć konkretniej co tam nowego...

Zdarzyła mi się ostatnio potrzeba wyszukania w ORM Django obiektów o czasie utworzenia najbliższemu wybranej dacie. W czeluściach internetu nie znalazłem zbyt wiele sensownego na temat szukania najbliższych wartości, nie było też żadnej automagicznej funkcji wykonującej podobne zadanie, więc zdecydowałem się napisać do tego własny kawałek kodu SQL.

Jedynym sensownym rozwiązaniem, na jakie wpadłem jest użycie DATEDIFF jako "wyznacznika odległości" od poszukiwanej daty.

Czytaj dalej...

Przy obecnym (a zarazem pierwszym pisanym w django) projekcie dla klienta otrzymałem wytyczne, że wszelkie zmiany w określonych modelach powinny być archiwizowane w historii, aby później łatwo można było ustalić kto popełnił ewentualny błąd. Parę dni spędziłem na przeszukiwaniu niezbadanych czeluści internetu aby znaleźć odpowiednie rozwiązanie - bo po co pisać coś, co już prawdopodobnie zostało napisane?

Czytaj dalej...

Jako, że od pewnego czasu zgłębiam tajniki Django (najlepszą metodą - próba przeportowania aplikacji powstałej na Symfony), napotkałem ostatnio problem z aplikacją Auth i jej sposobem wyświetlania użytkownika w polach <select>.

Otóż domyślnie, metoda __unicode__ modułu User zwraca po prostu nazwę użytkownika (username). Pole to jest wymagane oraz unikalne dla każdego z użytkowników, więc zwrócony wynik zawsze będzie jednoznacznie kierował do wybranego usera.

Co jednak w przypadku większej liczby użytkowników? Ciężko będzie zapamiętać loginy wszystkich insteresujących nas osób. Można oczywiście wykorzystać dziedziczenie i stworzyć własną klasę nadpisując metodę, lecz to rozwiązanie zadziała tylko dla naszego własnego kodu - moduły aplikacji Auth nadal będą korzystały ze standardowych klas, więc np. wewnątrz administracji Jan Kowalski nadal pozostanie tylko uzytkownik-iem.

Czytaj dalej...