Push Notifications

This package contains all views related to push notifications

Push Notification Actions

integreat_cms.cms.views.push_notifications.push_notification_actions.archive_push_notification(request: HttpRequest, push_notification_id: int, region_slug: str, language_slug: str) HttpResponseRedirect[source]

Method that archives a given push notification

Parameters:
  • request (HttpRequest) – The current request

  • push_notification_id (int) – Id of the existing push notification that is supposed to be archived

  • region_slug (str) – The slug of the current region

  • language_slug (str)

Returns:

A redirection to the PushNotificationListView

Return type:

HttpResponseRedirect

integreat_cms.cms.views.push_notifications.push_notification_actions.restore_push_notification(request: HttpRequest, push_notification_id: int, region_slug: str, language_slug: str) HttpResponseRedirect[source]

Restore given push notification

Parameters:
  • request (HttpRequest) – The current request

  • push_notification_id (int) – The id of the push notification which should be restored

  • region_slug (str) – The slug of the current region

  • language_slug (str)

Returns:

A redirection to the PushNotificationListView

Return type:

HttpResponseRedirect

Push Notification Bulk Actions

class integreat_cms.cms.views.push_notifications.push_notification_bulk_actions.ArchivePushNotificationsBulkAction(**kwargs)[source]

Bases: PushNotificationBulkAction

Bulk action to archive multiple contacts at once

get_permission_required() tuple[str][source]

Override this method to override the permission_required attribute.

Returns:

The permissions that are required for views inheriting from this Mixin

Return type:

tuple[str]

post(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse[source]

Archive multiple contacts at once

Parameters:
  • request (HttpRequest) – The current request

  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Returns:

The redirect

Return type:

HttpResponse

class integreat_cms.cms.views.push_notifications.push_notification_bulk_actions.PushNotificationBulkAction(**kwargs)[source]

Bases: BulkActionView

View for executing contact bulk actions

get_extra_filters() Q[source]

Overwrite to filter queryset for regions since push notification can have multiple regions

Return type:

Q

get_redirect_url(*args: Any, **kwargs: Any) str[source]

Normally this function redirects to the URL namespace by getting the model name. This only works if namespace and model name are the same. It doesn’t work in this instance, because the model is called pushnotification, but the URL namespace is called push_notification. Therefore we need to overwrite this function and redirect from pushnotification to push_notification.

Parameters:
  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Returns:

url to redirect to

Return type:

str

model[source]

The model of this BulkActionView

Parameters:
  • id (BigAutoField) – Primary key: ID

  • channel (CharField) – Channel

  • draft (BooleanField) – Draft. Whether or not the News is a draft (drafts cannot be sent)

  • sent_date (DateTimeField) –

    Sent date. The date and time when the News was sent.

    None if the push notification is not yet sent

  • created_date (DateTimeField) – Creation date

  • scheduled_send_date (DateTimeField) – Scheduled send date. The scheduled date for this News to be sent

  • mode (CharField) –

    Mode. Sets behavior for dealing with not existing News translations

    Manage choices in push_notifications

  • is_template (BooleanField) –

    News template

    Distinct functionalities for templates

  • template_name (CharField) – News template name. Provide a distinct name for the template

  • archived (BooleanField) – Archived. Whether or not the push notification is read-only and hidden in the API.

Relationship fields:

Parameters:

regions (ManyToManyField to Region) – Regions (related name: push_notifications)

Reverse relationships:

Parameters:

translations (Reverse ForeignKey from PushNotificationTranslation) – All translations of this push notification (related name of push_notification)

alias of PushNotification

class integreat_cms.cms.views.push_notifications.push_notification_bulk_actions.RestorePushNotificationsBulkAction(**kwargs)[source]

Bases: PushNotificationBulkAction

Bulk action to restore multiple contacts at once

get_permission_required() tuple[str][source]

Override this method to override the permission_required attribute.

Returns:

The permissions that are required for views inheriting from this Mixin

Return type:

tuple[str]

post(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse[source]

Function to restore multiple contacts at once

Parameters:
  • request (HttpRequest) – The current request

  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Returns:

The redirect

Return type:

HttpResponse

Push Notification Form View

class integreat_cms.cms.views.push_notifications.push_notification_form_view.PushNotificationFormView(**kwargs)[source]

Bases: TemplateView

Class that handles HTTP POST and GET requests for editing push notifications

extra_context = {'current_menu_item': 'push_notifications_form', 'schedule_interval': 60}[source]

The context dict passed to the template (see ContextMixin)

get(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse[source]

Open form for creating or editing a push notification

Parameters:
  • request (HttpRequest) – Object representing the user call

  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Returns:

The rendered template response

Return type:

HttpResponse

post(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse[source]

Save and show form for creating or editing a push notification. Send push notification if asked for by user.

Parameters:
  • request (HttpRequest) – Object representing the user call

  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Raises:
Returns:

The rendered template response

Return type:

HttpResponse

template_name = 'push_notifications/push_notification_form.html'[source]

The template to render (see TemplateResponseMixin)

integreat_cms.cms.views.push_notifications.push_notification_form_view.create_from_template(request: HttpRequest, pn_form: PushNotificationForm) PushNotification | None[source]

Create a push notification from a template

Parameters:
  • request (HttpRequest) – The current request

  • pn_form (PushNotificationForm) – The push notification form

Returns:

The new created push notification object

Return type:

PushNotification | None

integreat_cms.cms.views.push_notifications.push_notification_form_view.extract_pn_details(request: HttpRequest, push_notification: PushNotification | None, sort_for_region: Region | None = None) dict[str, Any][source]

Save and show form for creating or editing a push notification. Send push notification if asked for by user.

Parameters:
  • request (HttpRequest) – Object representing the user call

  • push_notification (PushNotification | None) – The existing PushNotification or None

  • sort_for_region (Region | None) – Region for which to keep sorting order (according to language tree)

Returns:

A dict containing * all_regions, a list of all Region objects of the existing PushNotification (or the current region, if it doesn’t exist yet), * other_regions, the sublist of all_regions which the current user doesn’t have access to, * all_languages, a cumulative list of all active languages across all regions in all_regions and * disable_edit, a boolean determining whether the user should be able to edit the PushNotification given his status (superuser, staff) and the vacancy of other_regions.

Return type:

dict[str, Any]

integreat_cms.cms.views.push_notifications.push_notification_form_view.save_forms(instance: PushNotification, pn_form: PushNotificationForm, pnt_formset: Any) None[source]

Saves the forms :param instance: The push notification instance :param pn_form: The push notification form :param pnt_formset: The push notification translation formset

Parameters:
Return type:

None

integreat_cms.cms.views.push_notifications.push_notification_form_view.send_pn(request: HttpRequest, pn_form: PushNotificationForm, schedule: bool = False) bool[source]

Send (or schedule) a push notification

Parameters:
  • request (HttpRequest) – The current request

  • pn_form (PushNotificationForm) – The push notification form

  • schedule (bool) – Whether the message should be scheduled instead of sent directly

Raises:

PermissionDenied – When the user does not have the permission to send notifications

Returns:

Whether sending (or scheduling) was successful

Return type:

bool

integreat_cms.cms.views.push_notifications.push_notification_form_view.validate_forms(request: HttpRequest, details: dict, pn_form: PushNotificationForm, pnt_formset: Any) bool[source]

Validates the forms and returns True iff no errors occurred. :param request: The request :param details: The push notification details :param pn_form: The push notification form :param pnt_formset: The push notification translation formset :return: whether verification was successful

Parameters:
Return type:

bool

Push Notification List View

class integreat_cms.cms.views.push_notifications.push_notification_list_view.PushNotificationListView(**kwargs)[source]

Bases: TemplateView

Class that handles HTTP GET requests for listing push notifications

count_archived_push_notifications(region: Region) int[source]

Counts the amount of archived push notifications

Parameters:

region (Region)

Return type:

int

extra_context = {'current_menu_item': 'push_notifications'}[source]

The context dict passed to the template (see ContextMixin)

get(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse[source]

Create a list that shows existing push notifications and translations

Parameters:
  • request (HttpRequest) – Object representing the user call

  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Returns:

The rendered template response

Return type:

HttpResponse

post(request: HttpRequest, *args: Any, **kwargs: Any) HttpResponse[source]

Apply the query and filter the rendered push notifications

Parameters:
  • request (HttpRequest) – The current request

  • *args (Any) – The supplied arguments

  • **kwargs (Any) – The supplied keyword arguments

Returns:

The rendered template response

Return type:

HttpResponse

template = 'push_notifications/push_notification_list.html'[source]

The template to render if templates is False

property template_name: str[source]

Select correct HTML template, depending on templates flag (see TemplateResponseMixin)

Returns:

Path to HTML template

template_templates = 'push_notifications/push_notification_template_list.html'[source]

The template to render if templates is True

templates = False[source]

If true, shows the template push notification list