Skąd projekt „Poradnia”?

Stowarzyszenie Sieć Obywatelska – Watchdog Polska od lat prowadzi projekt Pozarządowe Centrum Dostępu do Informacji Publicznej (PC-DIP).

W związku z projektem systemowym „STRAŻNICTWO – profesjonalnie i trwale w interesie publicznym” Sieć zamierza usprawnić funkcjonowanie PC-DIP. Chce stworzyć  korpusu służby prawnej dla organizacji strażniczych, zwłaszcza lokalnych.

Dotychczas działalność PC-DIP obecnie opiera się na współdzielonej skrzynce pocztowej na którą spływają zapytania, a następnie są na nie udzielane odpowiedzi w formie zwykłej wiadomości. Zapytań jest sporo. Jak to w skrzynce pocztowej nie ma możliwości stopniowania uprawnień, przeszukiwanie i łączenie wątków jest utrudnione.

Prowadzi do np. utrudnienia w rozbudowie kadry o wolontariuszy, praktykantów, ekspertów, którzy mogliby mieć dostęp do wyselekcjonowanych spraw i przygotowywać projekty pism, ale niedopuszczalne jest, aby mieli wgląd w dane wszystkich klientów.

Nie znaleziono odpowiedniego wolnego oprogramowania. A może istnieje?

Z tego względu postanowiono stworzyć własne oprogramowanie to zapewniające, chociaż idea takiego oprogramowania istnieje w Stowarzyszeniu od dawna.

Spisałem wymagania i opublikowałem je w Bitbucket, za co na moje konto wpłynął przelew 910 PLN ze środków prywatnych. Zaznaczam, bo w tym wypadku nie jest to wyłącznie praca wolontariacka.

Ustalono, że w dalszym ciągu możliwie duża ilość komunikacji będzie się odbywać poprzez e-maile, ale będzie także rejestracja przez WWW. Po prostu, pocztę każdy regularnie czyta, bo spodziewa się np. odpowiedzi na wnioski o informacje publiczną.

Jako zadanie zlecono mi także stworzenie kodu aplikacji. Zdecydowałem się na wykorzystanie Django.

Wydzieliłem początkowe aplikacje: cases, events, letters, records, tracking, users.

Zależności pomiędzy nimi przedstawione są na diagramie:

Schemat modeli LOCAL_APPS
Schemat modeli LOCAL_APPS

Mamy sprawy (cases), zawierające rekordy (records), czyli informacje o obserwowaniu (tracking), wydarzeniach (events), alarmach (alarm) i listach(letters).

Listy mogą zawierać załączniki (attachment), natomiast z wydarzeniami powiązane są alarmy (alarm), które są – po prostu – wywołanymi wydarzeniami.

Obserwowanie ma dwojaką funkcje. Z jednej strony służy jako podstawa do wzbudzenia powiadomień facebook-like (zamierzam wykorzystać django-notifications), a z drugiej strony określa poziom uprawnień na poziomie sprawy.

Dzięki wykorzystaniu Django wiele kodu mogę po prostu ponownie wykorzystać korzystając z gotowych aplikacji:

[code language=”bash”]

$ da diffsettings | grep ‚APPS’
DJANGO_APPS = (‚django.contrib.auth’, ‚django.contrib.contenttypes’, ‚django.contrib.sessions’, ‚django.contrib.sites’, ‚django.contrib.messages’, ‚django.contrib.staticfiles’, ‚django.contrib.admin’)  ###
INSTALLED_APPS = (‚django.contrib.auth’, ‚django.contrib.contenttypes’, ‚django.contrib.sessions’, ‚django.contrib.sites’, ‚django.contrib.messages’, ‚django.contrib.staticfiles’, ‚django.contrib.admin’, ‚crispy_forms’, ‚avatar’, ‚allauth’, ‚allauth.account’, ‚allauth.socialaccount’, ‚guardian’, ‚users’, ‚cases’, ‚letters’, ‚records’, ‚tracking’, ‚events’, ‚debug_toolbar’, ‚django_extensions’)
LOCAL_APPS = (‚users’, ‚cases’, ‚letters’, ‚records’, ‚tracking’, ‚events’)  ###
THIRD_PARTY_APPS = (‚crispy_forms’, ‚avatar’, ‚allauth’, ‚allauth.account’, ‚allauth.socialaccount’, ‚guardian’)  ###

[/code]

Prowadzi to do usprawiedliwionego rozrostu bazy danych:

Schemat modeli dla INSTALLED_APPS
Schemat modeli dla INSTALLED_APPS

W najbliższych dniach skupie się na doprowadzeniu do używalności cases, letters z poziomu różnych ról, które wyróżniłem:

Zespół Osoba zewnętrzna
Sekretarka Prawnik Obserwator Praktykant Klient Anonymous
ogólne
cases.form + + + + + +
cases.all_cases + +
cases.assign_to_lawyer +
cases.assign_to_me +
per sprawa
cases.view + + + + +
cases.view_document + + + + +
cases.view_document_project + + + +
cases.view_comment + + + +
alarms.views + + + +
letters.fast_reply + +
letters.status_change +
alarm.create_alarm + + +
letters.create_project + + +
letters.create_comment + + + +
zmiana własnych treści + + + + +
zmiana cudzych treści +

Jest to wstępny projekt uprawnień.

Następnie stanę przed zadaniem importowania poczty.

Szczęśliwie, można porzucić archiwum poczty.

Już spodziewam się ciekawej zagadki, aby połączyć django-allauth z modułem pobierania poczty. Musi się to odbyć w taki sposób, aby automatycznie rejestrowało nowych użytkowników i przesyłało im wygenerowane hasło, zamiast formularza WWW.

Jeżeli masz ochotę – koduj dla Sieci projekt Poradnia. Kod jest dostępny na Bitbucket /siecobywatelska/poradnia/.

2 komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *