Koncepcja
Aktywności użytkownika - wykorzystywane są do przechowywania i zbiorczego prezentowania działań użytkownika w Filmasterze, w wersji 1.0 dostępne rodzaje aktywności to:
- wpis blogowy
- krótka recenzja
- komentarz
- link do zewnętrznej strony
- rozpoczęcie obserwowania innego użytkownika
- zameldowanie (check-in) na seans
Dla wersji 1.0 aktywności wykorzystywane są na planecie Filmastera oraz na publicznych profilach użytkowników.
Status i typ aktywności
Typ aktywności stanowiony jest przez przypisane wartości typu integer, odpowiednio:
1 - wpis blogowy
2 - krótka recenzja
3 - komentarz
5 - link
6 - rozpoczęcie obserwacji
7 - check-in
Statusy aktywności to:
1 - aktywność opublikowana, wyświetlana
2 - szkic wykorzystywane tylko przez wpisy blogowe
3 - aktywność usunięta, nie wyświetlana
Tworzenie i modyfikacja aktywności
Aktywności tworzone są poprzez wywołanie metody save_activity() w metodzie save danego obiektu (komentarza, krótkiej recenzji itp.). Metoda sprawdza czy istnieje aktywność dla danego obiektu - jeśli istnieje to aktualizowane są jej pola, jeśli nie istnieje to tworzona jest nowa aktywność. Wyjątkiem jest tworzenie aktywności dla wpisu blogowego, ze względu na działanie relacji wiele-do-wielu w orm django która wymaga zapisu notki do bazy przed zapisaniem relacji, jako ostatnia tworzona jest aktywność tak aby zapisać w niej dane powiązanego filmu.
Model
Model aktywności zdefiniowany jest w film20.useractivity.models.UserActivity, zawiera następujące pola:
- activity_type - typ aktywności, integer
- status - status aktywności, integer
- permalink - permalink obiektu powiązanego z aktywnością (pole tekstowe)
- user - użytkownik, twórca aktwyności (klucz obcy)
- username - nazwa użytkownika (pole tekstowe)
- object - relacja do obiektu (klucz obcy)
- watching_object - obserwowany obiekt
- post - wpis blogowy powiązany z aktywnością (klucz obcy)
- short_review - krótka recenzja powiązana z aktywnością (klucz obcy)
- comment - komentarz powiązany z aktywnością (klucz obcy)
- link - link powiązany z aktywnością (klucz obcy)
- film - relacja do powiązanego filmu (klucz obcy)
- checkin - check-in do kina (klucz obcy)
- title - tytuł aktywności
- content - treść aktywności
- film_title - tytuł powiązanego filmu (zlokalizowany)
- film_permalink - permalink do filmu
- url - url z obiektu typu link
- url_kind - typ aktywności linkowej
- video_thumb - url do miniaturki wideo na youtube.com
- spoilers - spoilery, wykorzystywane przez wpisy blogowe
- is_first_post - pierwszy komentarz w wątku na forum
- number_of_comments - liczba komentarzy dla obiektu powiązanego z aktywnością (np komentarze pod wpisem blogowym)
- channel_name - nazwa kanału (kina) do którego zameldował się twórca aktywności
- channel - relacja do kanału (kina)
- checkin_date - data i godzina seansu na który zameldował się użytkownik
- rating - relacja do oceny (klucz obcy)
- modified_at - data modyfikacji aktywności
- created_at - data utworzenia aktywności
- LANG - wersja językowa aktywności (PL lub EN)
- is_sent - czy notyfikacja dla aktywności została wysłana
Dostępne metody dla obiektu UserActivity:
- get_title - zwraca tytuł aktywności
- get_kind - zwraca nazwę rodzaju aktywności
- get_url_kind - zwraca nazwą rodzaju linku - dla aktywności typu link
- get_absolute_url - zwraca url dla obiektu powiązanego z aktywnością
Dostępne managery dla zapytań:
- fliter - standardowy manager filter z dodanym warunkiem LANG=LANGUAGE_CODE
- all_public - zwraca wszystkie opublikowane aktywności
- followers(user) - zwraca wszystkie publiczne aktywności osób obserwowanych przez danego usera
- all_notes - zwraca wszystkie publiczne notki blogowe
- all_reviews - zwraca wszystkie publiczne krótkie recenzje
- all_links - zwraca wszystkie publiczne linki
- all_for_user(user) - zwraca wszystkie publiczne aktywności dla podanego usera
- notes_for_user(user) - zwraca wszystkie publiczne wpisy blogowe dla podanego usera
- reviews_for_user(user) - zwraca wszystkie krótkie recenzje dla podanego usera
- comments_for_user(user) - zwraca wszystkie publiczne komentarze dla podanego usera
- links_for_user(user) - zwraca wszystkie linki dla podanego usera
Helpery
Wykorzystywany jest obecnie jedynie metoda get_activities() z helpera film20.useractivity.useractivity_helper. Zwraca on wyfiltrowaną w zależoności od podanych parametrów listę aktywności. Metoda pobiera argumenty:
get_activities(self, request, all_activities, reviews, most_interesting_reviews, shorts, comments,
links, all_users, followed, similar_taste, favorites, follows=False, checkins=False, username=None, exclude_query = None)
TODO: przenieść metodą do managerów w następnej wersji.
Szablony
Główny szablon wyświetlający planetę - templates/planeta.html w nim w zależności od rodzaju aktywności dołączane są szablony poszczególnych aktywności znajdujące się w katalogu templates/planet/ te same szablony ładowane są przez szablon templates/widget/recent_user_activity.html w celu wyświetlenia aktywności na publicznym profilu użytkownika.