Request

Todo

Docstrings (module)

Models

class indico.modules.events.requests.models.requests.Request(**kwargs)

Event-related requests, e.g. for a webcast.

A simple constructor that allows initialization from kwargs.

Sets attributes on the constructed instance using the names and values in kwargs.

Only keys that are present as attributes of the instance’s class are allowed. These could be, for example, any mapped columns or relationships.

property can_be_modified

Determine if the request can be modified or if a new one must be sent.

comment

an optional comment for an accepted/rejected request

created_by_id

ID of the user creating the request

created_by_user

The user who created the request

created_dt

the date/time the request was created

data

plugin-specific data of the request

property definition
event

The Event this agreement is associated with

event_id

ID of the event

classmethod find_latest_for_event(event, type_=None)

Return the latest requests for a given event.

Parameters:
  • event – the event to find the requests for

  • type – the request type to retrieve, or None to get all

Returns:

a dict mapping request types to a Request or if type_ was specified, a single Request or None

id

request ID

property locator
processed_by_id

ID of the user processing the request

processed_by_user

The user who processed the request

processed_dt

the date/time the request was accepted/rejected

query: IndicoBaseQuery

A SQLAlchemy query for a model. Equivalent to db.session.query(Model). Can be customized per-model by overriding query_class.

Warning

The query interface is considered legacy in SQLAlchemy. Prefer using session.execute(select()) instead.

state

the requests’s date, a RequestState value

type

the request type name

class indico.modules.events.requests.models.requests.RequestState(value)

An enumeration.

accepted = 1
pending = 0
rejected = 2
withdrawn = 3

Utilities

indico.modules.events.requests.util.get_request_definitions()

Return a dict of request definitions.

indico.modules.events.requests.util.is_request_manager(user)

Check if the user manages any request types.

class indico.modules.events.requests.base.RequestDefinitionBase

A service request which can be sent by event managers.

classmethod accept(req, data, user)

Accept the request.

To ensure that additional data is saved, this method should call :method:`manager_save`.

Parameters:
  • req – the Request of the request

  • data – the form data from the management form

  • user – the user processing the request

classmethod can_be_managed(user)

Check whether the user is allowed to manage this request type.

Parameters:

user – a User

classmethod create_form(event, existing_request=None)

Create the request form.

Parameters:
  • event – the event the request is for

  • existing_request – the Request if there’s an existing request of this type

Returns:

an instance of an IndicoForm subclass

classmethod create_manager_form(req)

Create the request management form.

Parameters:

req – the Request of the request

Returns:

an instance of an IndicoForm subclass

form = None

the IndicoForm to use for the request form

form_defaults = {}

default values to use if there’s no existing request

classmethod get_manager_notification_emails(req)

Return the email addresses of users who manage requests of this type.

The email addresses are used only for notifications. It usually makes sense to return the email addresses of the users who pass the :method:`can_be_managed` check.

Parameters:

req – the Request of the request

Returns:

set of email addresses

classmethod get_notification_from_email(req, *, to_request_managers: bool)

Return the From e-mail address for notifications.

Parameters:
  • req – the Request of the request

  • to_request_managers – whether the email is sent to request managers (event managers if False)

classmethod get_notification_reply_email(req, *, to_request_managers: bool)

Return the Reply-To e-mail address for notifications.

Parameters:
  • req – the Request of the request

  • to_request_managers – whether the email is sent to request managers (event managers if False)

classmethod get_notification_template(name, **context)

Get the template module for a notification email.

Parameters:
  • name – the template name

  • context – data passed to the template

classmethod make_notification_email(req, template, *, to_request_managers: bool)

Make a notification email.

Parameters:
  • req – the Request of the request

  • template – the template module for the notification

  • to_request_managers – whether the email is sent to request managers (event managers if False)

manager_form

the IndicoForm to use for the request manager form

alias of RequestManagerForm

classmethod manager_save(req, data)

Save management-specific data.

This method is called when the management form is submitted without accepting/rejecting the request (which is guaranteed to be already accepted or rejected).

Parameters:
  • req – the Request of the request

  • data – the form data from the management form

name = None

the unique internal name of the request type

plugin = None

the plugin containing this request definition - assigned automatically

classmethod reject(req, data, user)

Reject the request.

To ensure that additional data is saved, this method should call :method:`manager_save`.

Parameters:
  • req – the Request of the request

  • data – the form data from the management form

  • user – the user processing the request

classmethod render_form(event, **kwargs)

Render the request form.

Parameters:
  • event – the event the request is for

  • kwargs – arguments passed to the template

classmethod send(req, data)

Send a new/modified request.

Parameters:
  • req – the Request of the request

  • data – the form data from the request form

title = None

the title of the request type as shown to users

classmethod withdraw(req, notify_event_managers=True)

Withdraw the request.

Parameters:
  • req – the Request of the request

  • notify_event_managers – if event managers should be notified