docs: def message_compose(request, recipients=None, compose_form=ComposeForm,
                      success_url=None, template_name="umessages/message_form.html",
                      recipient_filter=None, extra_context=None):
      """
      Compose a new message
  
      :recipients:
          String containing the usernames to whom the message is send to. Can be
          multiple username by seperating them with a ``+`` sign.
  
      :param compose_form:
          The form that is used for getting neccesary information. Defaults to
          :class:`ComposeForm`.
  
      :param success_url:
          String containing the named url which to redirect to after successfull
          sending a message. Defaults to ``userena_umessages_list`` if there are
          multiple recipients. If there is only one recipient, will redirect to
          ``userena_umessages_detail`` page, showing the conversation.
  
      :param template_name:
          String containing the name of the template that is used.
  
      :param recipient_filter:
          A list of :class:`User` that don"t want to receive any messages.
  
      :param extra_context:
          Dictionary with extra variables supplied to the template.
  
      **Context**
  
      ``form``
          The form that is used.
  
      """
      initial_data = dict()
  
      if recipients:
          username_list = [r.strip() for r in recipients.split("+")]
          recipients = [u for u in get_user_model().objects.filter(username__in=username_list)]
          initial_data["to"] = recipients
  
      form = compose_form(initial=initial_data)
      if request.method == "POST":
          form = compose_form(request.POST)
          if form.is_valid():
              requested_redirect = request.GET.get(REDIRECT_FIELD_NAME,
                                                   request.POST.get(REDIRECT_FIELD_NAME, False))
  
              message = form.save(request.user)
              recipients = form.cleaned_data['to']
  
              if userena_settings.USERENA_USE_MESSAGES:
                  messages.success(request, _('Message is sent.'),
                                   fail_silently=True)
  
              # Redirect mechanism
              redirect_to = reverse('userena_umessages_list')
              if requested_redirect: redirect_to = requested_redirect
              elif success_url: redirect_to = success_url
              elif len(recipients) == 1:
                  redirect_to = reverse('userena_umessages_detail',
                                        kwargs={'username': recipients[0].username})
              return redirect(redirect_to)
  
      if not extra_context: extra_context = dict()
      extra_context["form"] = form
      extra_context["recipients"] = recipients
      return render(request, template_name, extra_context)