Les messages privés (mp/)

Module situé dans zds/mp/.

Modèles (models.py)

exception zds.mp.models.NotParticipatingError

Raised when trying to perform an operation requiring the user to be a participant.

exception zds.mp.models.NotReachableError

Raised when a user cannot be reached using private messages (e.g. bots).

class zds.mp.models.PrivatePost(*args, **kwargs)

A private post written by a user.

exception DoesNotExist
exception MultipleObjectsReturned
get_absolute_url()

URL of a single PrivatePost object.

Renvoie

PrivatePost object URL

Type renvoyé

str

is_author(user)

Check if the user given is the author of the message.

Paramètres

user – Potential author of the message.

Renvoie

true if the user is the author.

is_last_message(private_topic=None)

Check if the current message is the last one of its private topic.

Paramètres

private_topic – Potential private topic of the message.

Renvoie

true if the current message is the last.

class zds.mp.models.PrivateTopic(*args, **kwargs)

Private topic, containing private posts.

We maintain the following invariants :
  • all participants are reachable,

  • no duplicate participant.

A participant is either the author or a mere participant.

exception DoesNotExist
exception MultipleObjectsReturned
add_participant(user, silent=False)

Add a participant to the private topic. If the user is already participating, do nothing. Send the participant_added signal if successful.

Paramètres
  • user – the user to add to the private topic

  • silent – specify if the participant_added signal should be silent (e.g. no notification)

Lève

NotReachableError – if the user cannot receive private messages (e.g. a bot)

first_post()

Get the first answer in the PrivateTopic written by topic’s author, if exists.

Renvoie

PrivateTopic object first answer (PrivatePost)

Type renvoyé

PrivatePost object or None

first_unread_post(user=None)

Get the first PrivatePost the user has unread.

Paramètres

user (User object) – The user is reading the PrivateTopic. If None, the current user is used.

Renvoie

first PrivatePost unread

Type renvoyé

PrivatePost object or None

get_absolute_url()

URL of a single PrivateTopic object.

Renvoie

PrivateTopic object URL

Type renvoyé

str

get_last_answer()

Get the last answer in the PrivateTopic written by topic’s author, if exists.

Renvoie

PrivateTopic object last answer (PrivatePost)

Type renvoyé

PrivatePost object or None

get_post_count()

Get the number of private posts in a single PrivateTopic object.

Renvoie

number of posts in PrivateTopic object

Type renvoyé

int

is_author(user)

Check if a user is the author of the private topic.

Paramètres

user – a given user.

Renvoie

True if the user is the author, False otherwise.

is_participant(user)

Check if a given user is participating in the private topic.

Paramètres

user – a given user.

Renvoie

True if the user is the author or a mere participant, False otherwise.

is_unread(user=None)

Check if a user has never read the current PrivateTopic.

Paramètres

user (User object) – a user as Django User object. If None, the current user is used.

Renvoie

True if the PrivateTopic was never read

Type renvoyé

bool

last_read_post(user=None)

Get the last PrivatePost the user has read.

Paramètres

user (User object) – The user is reading the PrivateTopic. If None, the current user is used.

Renvoie

last PrivatePost read

Type renvoyé

PrivatePost object or None

one_participant_remaining()

Check if there is only one participant remaining in the private topic.

Renvoie

True if there is only one participant remaining, False otherwise.

Type renvoyé

bool

remove_participant(user)

Remove a participant from the private topic. If the removed participant is the author, set the first mere participant as the author. If the given user is not a participant, do nothing. Send the participant_removed signal if successful.

Paramètres

user – the user to remove from the private topic.

resolve_last_post_pk_and_pos_read_by_user(user)

Determine the primary ey of position of the last post read by a user.

Paramètres

user – the current (authenticated) user. Please do not try with unauthenticated user, il would lead to a useless request.

Renvoie

the primary key

Type renvoyé

int

resolve_last_read_post_absolute_url(user=None)

resolve the url that leads to the last post the current user has read.

Renvoie

the url

Type renvoyé

str

set_as_author(user)

Set a participant as the author of the private topic.

The previous author becomes a mere participant. If the user is already the author, nothing happens.

Paramètres

user – a given user.

Lève

NotParticipatingError – if the user is not already participating in the private topic.

slug()

PrivateTopic doesn’t have a slug attribute of a private topic. To be compatible with older private topic, the slug is always re-calculated when we need one. :return: title slugify.

class zds.mp.models.PrivateTopicRead(*args, **kwargs)

Small model which keeps track of the user viewing private topics.

It remembers the topic he looked and what was the last private Post at this time.

exception DoesNotExist
exception MultipleObjectsReturned
zds.mp.models.is_privatetopic_unread(privatetopic, user=None)

Check if a private topic has been read by a user since it last post was added.

Paramètres
  • privatetopic (PrivateTopic object) – a PrivateTopic to check

  • user (User object) – a user as Django User object. If None, the current user is used

Renvoie

True if the PrivateTopic was never read

Type renvoyé

bool

zds.mp.models.is_reachable(user)

Check if a user is reachable. Unreachable users are unable to read replies to their messages (e.g. bots).

Paramètres

user – a given user

Renvoie

True if the user is reachable, False otherwise.

zds.mp.models.mark_read(privatetopic, user=None)

Mark a private topic as read for the user.

Paramètres
  • privatetopic (PrivateTopic object) – a PrivateTopic to check

  • user (User object) – a user as Django User object. If None, the current user is used

Renvoie

nothing is returned

Type renvoyé

None

Vues (views.py)

class zds.mp.views.PrivatePostAnswer(**kwargs)

Creates a post to answer on a MP.

form_class

alias of zds.mp.forms.PrivatePostForm

form_valid(form)

If the form is valid, save the associated model.

get_form(form_class=<class 'zds.mp.forms.PrivatePostForm'>)

Return an instance of the form to be used in this view.

model_quote

alias of zds.mp.models.PrivatePost

class zds.mp.views.PrivatePostEdit(**kwargs)

Edits a post on a MP.

form_class

alias of zds.mp.forms.PrivatePostForm

form_valid(form)

If the form is valid, save the associated model.

get(request, *args, **kwargs)

Handle GET requests: instantiate a blank version of the form.

get_form(form_class=<class 'zds.mp.forms.PrivatePostForm'>)

Return an instance of the form to be used in this view.

get_object(queryset=None)

Return the object the view is displaying.

Require self.queryset and a pk or slug argument in the URLconf. Subclasses can override this to return any object.

post(request, *args, **kwargs)

Handle POST requests: instantiate a form instance with the passed POST variables and then check if it’s valid.

class zds.mp.views.PrivatePostList(**kwargs)

Display a thread and its posts using a pager.

get_context_data(**kwargs)

Get the context for this view. This method is surcharged to modify the paginator and information given at the template.

get_queryset()

Return the list of items for this view.

The return value must be an iterable and may be an instance of QuerySet in which case QuerySet specific behavior will be enabled.

class zds.mp.views.PrivatePostUnread(**kwargs)
get(request, *args, **kwargs)

Handle GET requests: instantiate a blank version of the form.

class zds.mp.views.PrivateTopicAddParticipant(**kwargs)
get_object(queryset=None)

Return the object the view is displaying.

Require self.queryset and a pk or slug argument in the URLconf. Subclasses can override this to return any object.

class zds.mp.views.PrivateTopicEdit(**kwargs)

Update mp informations

form_class

alias of zds.mp.forms.PrivateTopicEditForm

get_object(queryset=None)

Return the object the view is displaying.

Require self.queryset and a pk or slug argument in the URLconf. Subclasses can override this to return any object.

model

alias of zds.mp.models.PrivateTopic

class zds.mp.views.PrivateTopicLeaveDetail(**kwargs)

Leaves a MP.

class zds.mp.views.PrivateTopicLeaveList(**kwargs)

Leaves a list of MP.

get_queryset()

Return the list of items for this view.

The return value must be an iterable and may be an instance of QuerySet in which case QuerySet specific behavior will be enabled.

class zds.mp.views.PrivateTopicList(**kwargs)

Displays the list of private topics of a member given.

get_queryset()

Return the list of items for this view.

The return value must be an iterable and may be an instance of QuerySet in which case QuerySet specific behavior will be enabled.

class zds.mp.views.PrivateTopicNew(**kwargs)

Creates a new MP.

form_class

alias of zds.mp.forms.PrivateTopicForm

form_valid(form)

If the form is valid, save the associated model.

get(request, *args, **kwargs)

Handle GET requests: instantiate a blank version of the form.

get_form(form_class=<class 'zds.mp.forms.PrivateTopicForm'>)

Return an instance of the form to be used in this view.

post(request, *args, **kwargs)

Handle POST requests: instantiate a form instance with the passed POST variables and then check if it’s valid.