[PATCH 2 of 7] notification: allow multiple body parts in templates

Mads Kiilerich mads at kiilerich.com
Fri Apr 24 13:20:24 EDT 2015


On 04/14/2015 06:03 PM, Jan Heylen wrote:
> # HG changeset patch
> # User Jan Heylen <heyleke at gmail.com>
> # Date 1427469226 -3600
> #      Fri Mar 27 16:13:46 2015 +0100
> # Node ID 55ba8e68269da8fb0c33c65711a57b4fd9e1b675
> # Parent  cb41b8211291b55bcd7c77919f714791927b8045
> notification: allow multiple body parts in templates
>
> diff -r cb41b8211291 -r 55ba8e68269d kallithea/model/notification.py
> --- a/kallithea/model/notification.py	Fri Mar 27 13:58:04 2015 +0100
> +++ b/kallithea/model/notification.py	Fri Mar 27 16:13:46 2015 +0100
> @@ -59,7 +59,7 @@
>   
>       def create(self, created_by, subject, body, recipients=None,
>                  type_=Notification.TYPE_MESSAGE, with_email=True,
> -               email_kwargs={}):
> +               email_kwargs={}, bodies=None):

I think it would be less ugly to allow body to be either a single 
instance or a list, perhaps depending on the type, perhaps with the 
single instance as a list with one element.

>           """
>   
>           Creates notification of given type
> @@ -103,10 +103,16 @@
>           #else: silently skip notification mails?
>   
>           # TODO: inform user who are notified
> -        notif = Notification.create(
> -            created_by=created_by_obj, subject=subject,
> -            body=body, recipients=recipients_objs, type_=type_
> -        )
> +        if not bodies:
> +            bodies = [body]
> +
> +        bodies_html = []
> +        for body in bodies:
> +            notif = Notification.create(
> +                created_by=created_by_obj, subject=subject,
> +                body=body, recipients=recipients_objs, type_=type_
> +            )
> +            bodies_html.append(h.rst_w_mentions(body))
>   
>           if not with_email:
>               return notif
> @@ -123,14 +129,14 @@
>               ## this is passed into template
>               html_kwargs = {
>                         'subject': subject,
> -                      'body': h.rst_w_mentions(body),
> +                      'bodies': bodies_html,
>                         'when': h.fmt_date(notif.created_on),
>                         'user': notif.created_by_user.username,
>                         }
>   
>               txt_kwargs = {
>                         'subject': subject,
> -                      'body': body,
> +                      'bodies': bodies,
>                         'when': h.fmt_date(notif.created_on),
>                         'user': notif.created_by_user.username,
>                         }
> diff -r cb41b8211291 -r 55ba8e68269d kallithea/templates/email_templates/changeset_comment.html
> --- a/kallithea/templates/email_templates/changeset_comment.html	Fri Mar 27 13:58:04 2015 +0100
> +++ b/kallithea/templates/email_templates/changeset_comment.html	Fri Mar 27 16:13:46 2015 +0100
> @@ -6,8 +6,9 @@
>   %else:
>   <p>${_('Comment from %s on %s changeset %s') % (cs_comment_user, cs_target_repo, h.short_id(raw_id))}:</p>
>   %endif
> +%for body in bodies:
>   <p>${body}</p>
> -
> +%endfor

I would like to let the mails include filename and linenumber (and 
ultimately also some lines of context). It seems like this change will 
make it harder to add that. Could it be done first?

And more important: There should be a cs_comment_url link for each comment.

>   %if status_change:
>       <p>${_('The changeset status was changed to')}: <b>${status_change}</b></p>
>   %endif
> diff -r cb41b8211291 -r 55ba8e68269d kallithea/templates/email_templates/changeset_comment.txt
> --- a/kallithea/templates/email_templates/changeset_comment.txt	Fri Mar 27 13:58:04 2015 +0100
> +++ b/kallithea/templates/email_templates/changeset_comment.txt	Fri Mar 27 16:13:46 2015 +0100
> @@ -6,7 +6,9 @@
>   %else:
>   ${_('Comment from %s on %s changeset %s') % (cs_comment_user, cs_target_repo, h.short_id(raw_id))|n,unicode}:
>   %endif
> +%for body in bodies:
>   ${body|n,unicode}
> +%endfor
>   
>   %if status_change:
>   ${_('The changeset status was changed to')|n,unicode}: ${status_change|n,unicode}
> diff -r cb41b8211291 -r 55ba8e68269d kallithea/templates/email_templates/default.html
> --- a/kallithea/templates/email_templates/default.html	Fri Mar 27 13:58:04 2015 +0100
> +++ b/kallithea/templates/email_templates/default.html	Fri Mar 27 16:13:46 2015 +0100
> @@ -1,4 +1,6 @@
>   ## -*- coding: utf-8 -*-
>   <%inherit file="main.html"/>
>   
> +%for body in bodies:
>   ${body}
> +%endfor

It doesn't make much sense to have multiple bodies if we only 
concatenate them. But ok, if it is simpler this way.

But I guess this really depends on how to solve the problem mentioned 
above: We do not just have a list of bodies; we have a list of entries 
that each have a file and line and url and body.

/Mads


More information about the kallithea-general mailing list