Subject: [PATCHES] pglister: make organization name generic

From: Célestin Matte <[email-masked]>
Date: Tue, 2 Nov 2021 17:18:02 +0100

Hello,

PGLister is currently made to be run for PostgreSQL only. In an effort to get this software used by other organizations, this series of patches defines an ORGANIZATION_NAME configuration option and uses it to replace mentions of PostreSQL in templates.
Additionally, new images for the banner are proposed, to replace mentions of PostreSQL by a sober "PGLister". Postgres' logo is, however, kept.

Cheers,
-- 
Célestin Matte

---

From: Célestin Matte <[email-masked]>
Date: Tue, 2 Nov 2021 17:18:42 +0100

-- 
Célestin Matte

From 476a2d1ce18fc56a097dd5e0f870af5e92302a98 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 2 Nov 2021 16:51:51 +0100
Subject: [PATCH 1/3] Add orgname tag and settings to define organization name

---
 web/pglister/lists/templatetags/pglister.py | 5 +++++
 web/pglister/settings.py                    | 2 ++
 2 files changed, 7 insertions(+)

diff --git a/web/pglister/lists/templatetags/pglister.py b/web/pglister/lists/templatetags/pglister.py
index ad2fc99..3360284 100644
--- a/web/pglister/lists/templatetags/pglister.py
+++ b/web/pglister/lists/templatetags/pglister.py
@@ -1,6 +1,7 @@
 from django import template
 from django.template.defaultfilters import stringfilter
 from django.utils.safestring import mark_safe
+from django.conf import settings
 
 from lib.baselib.lists import ModerationReason, ModerationOption
 
@@ -80,3 +81,7 @@ def moderation_options(context, reason, is_subscribed):
 @register.filter
 def replacepercent(obj, replacewith):
     return obj.replace('%', replacewith)
+
[email-masked]
+def orgname():
+   return settings.ORGANIZATION_NAME
diff --git a/web/pglister/settings.py b/web/pglister/settings.py
index ba69207..6da88a1 100644
--- a/web/pglister/settings.py
+++ b/web/pglister/settings.py
@@ -114,6 +114,8 @@ DATETIME_FORMAT = "Y-m-d H:i:s"
 
 STATIC_URL = '/media/'
 
+ORGANIZATION_NAME = 'PostgreSQL'
+
 # Override in local settings
 USE_PG_COMMUNITY_AUTH = True  # Right now we *always* do, but this is used to turn on/off some local features
 PGAUTH_REDIRECT = "http://localhost:8000/account/auth/12/"
-- 
2.33.1

---

From: Célestin Matte <[email-masked]>
Date: Tue, 2 Nov 2021 17:19:22 +0100

-- 
Célestin Matte

From 46d438071a9c27aa6ac819b3d353275be2a73fe4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 2 Nov 2021 16:52:33 +0100
Subject: [PATCH 2/3] Use orgname in templates to make them
 organization-generic

---
 web/pglister/lists/templates/base.html                | 6 +++---
 web/pglister/lists/templates/home.html                | 9 +++++----
 web/pglister/lists/templates/unsubscribe_confirm.html | 3 ++-
 web/pglister/lists/templates/unsubscribe_help.html    | 5 +++--
 web/pglister/lists/templates/unsubscribe_link.html    | 3 ++-
 5 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/web/pglister/lists/templates/base.html b/web/pglister/lists/templates/base.html
index feb1e57..3e5389d 100644
--- a/web/pglister/lists/templates/base.html
+++ b/web/pglister/lists/templates/base.html
@@ -3,7 +3,7 @@
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
-    <title>{%if title%}{{title}} - {%endif%}PostgreSQL mailing lists</title>
+    <title>{%if title%}{{title}} - {%endif%}{% orgname %} mailing lists</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
     <link href="/media/css/bootstrap.min.css" rel="stylesheet" media="screen"></link>
     <link href="/media/css/pglister.css" rel="stylesheet" media="screen"></link>
@@ -14,8 +14,8 @@
     <div class="container">
       <div class="row">
 	<div class="col-sm-12" id="pglisterhdr">
-	  <a href="/"><img src="/media/img/hdr_left.png" alt="PostgreSQL" /></a>
-	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" alt="The world's most advanced open source database" />
+	  <a href="/"><img src="/media/img/hdr_left.png" alt="{% orgname %}" /></a>
+	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" />
 	</div>
       </div>
 {%if messages%}
diff --git a/web/pglister/lists/templates/home.html b/web/pglister/lists/templates/home.html
index d122a4b..78847c2 100644
--- a/web/pglister/lists/templates/home.html
+++ b/web/pglister/lists/templates/home.html
@@ -1,13 +1,14 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% orgname %} mailing lists</h1>
 <p>
   <a class="btn btn-lg btn-primary" href="/manage/">Manage subscriptions</a>
   <a class="btn btn-lg btn-primary" href="/unsubscribe/">Unsubscribe</a>
   <br/><br/>
 </p>
 <p>
-  From this site you can manage all your PostgreSQL mailing list
+  From this site you can manage all your {% orgname %} mailing list
   subscriptions.  To manage them, click on the link above.
 </p>
 <b>Note 1:</b> Please ensure you read the <a href="https://www.postgresql.org/about/policies/archives/">Archive Policy</a>
@@ -26,7 +27,7 @@ unable to deliver mail to our list members.
 </p>
 
 <p>
-  If you are not already logged into your PostgreSQL Community account,
+  If you are not already logged into your {% orgname %} Community account,
   you will be redirected and asked to log in first.  Once you're logged
   in, you can see all of the lists which you are subscribed to with the
   email address associated with your community account.
@@ -38,7 +39,7 @@ unable to deliver mail to our list members.
   using those addresses as well.
 </p>
 <p>
-  If you are a moderator of PostgreSQL mailing lists, you'll have a link
+  If you are a moderator of {% orgname %} mailing lists, you'll have a link
   at the bottom of the page which says "Manage/Moderate lists".  If you
   believe you should have such a link and you do not, please contact the
   PostgreSQL WWW Mailing list.
diff --git a/web/pglister/lists/templates/unsubscribe_confirm.html b/web/pglister/lists/templates/unsubscribe_confirm.html
index af1cd3f..39dc89c 100644
--- a/web/pglister/lists/templates/unsubscribe_confirm.html
+++ b/web/pglister/lists/templates/unsubscribe_confirm.html
@@ -1,6 +1,7 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% orgname %} mailing lists</h1>
 <h2>Unsubscribe</h2>
 <p>
 {{view.message}}
diff --git a/web/pglister/lists/templates/unsubscribe_help.html b/web/pglister/lists/templates/unsubscribe_help.html
index 3889ad0..a84867b 100644
--- a/web/pglister/lists/templates/unsubscribe_help.html
+++ b/web/pglister/lists/templates/unsubscribe_help.html
@@ -1,10 +1,11 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% orgname %} mailing lists</h1>
 <h2>Unsubscribe</h2>
 <h3>With account</h3>
 <p>
-  If you have subscribed to a PostgreSQL mailinglist using your community account,
+  If you have subscribed to a {% orgname %} mailinglist using your community account,
   the easiest way to unsubscribe is to use the
   <a href="/manage/">manage subscriptions</a> page, logged in to the
   same account. If you have lost your password, you can use the lost
diff --git a/web/pglister/lists/templates/unsubscribe_link.html b/web/pglister/lists/templates/unsubscribe_link.html
index badce53..f9e2d98 100644
--- a/web/pglister/lists/templates/unsubscribe_link.html
+++ b/web/pglister/lists/templates/unsubscribe_link.html
@@ -1,6 +1,7 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% orgname %} mailing lists</h1>
 <h2>Unsubscribe</h2>
 {%if not done%}
 <p>
-- 
2.33.1

---

From: Célestin Matte <[email-masked]>
Date: Tue, 2 Nov 2021 17:19:57 +0100

-- 
Célestin Matte

From 9e7598cc20a6544ffeba907bf1908f44f1f8f79d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 2 Nov 2021 16:53:04 +0100
Subject: [PATCH 3/3] Update banner images to remove mentions of PostreSQL

---
 web/media/img/hdr_left.png  | Bin 3040 -> 10258 bytes
 web/media/img/hdr_right.png | Bin 1863 -> 5672 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)

diff --git a/web/media/img/hdr_left.png b/web/media/img/hdr_left.png
index c483920f87cd8044591ce864645ed6eca14a321c..2cb2a16f90e839ce15312eef850b42355f2d0876 100644
GIT binary patch
literal 10258
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

delta 2253
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
bfB^sk&ZXO3+tm$$00000NkvXXu0mjfZ}CrT

diff --git a/web/media/img/hdr_right.png b/web/media/img/hdr_right.png
index d3de11c05eb35a60d4bdccc7e5680da244ac5b72..45cf265ee5c846b92f05eab5554f4df40ca529e4 100644
GIT binary patch
literal 5672
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
Y$-Btfn02`)0oDOv*sruZXXCl!zl~G>egFUf

delta 1414
zcmV;11$p|YEXNLzBQpR5XF*Lt006JZHwB960000PbVXQnQ*UN;cVTj606}DLVr3vn
zZDD6+Qe|Oed2z{QJhLnlwE=$xCP_p=RCwC#ocVLwMij?YQK@&cNQ)!{l90d%FupMO
zwz1<QK4K?s(=<(*tLc5;cbm4NSIQsVUF|M{S~O&AXNDbrXDsb|@B7}{j~UPS7h7oa
zpu6u~zY3UyHZOYptM_?BLQvPaLu$8g-sTRe{q=3`klJtaht$5xAJTta{*c-q^M~{)
ze@Hj^Lu#KP4F%Fa-02KyD3J80d6S_3!kf56`k6OziS#UQ67;`$(;3omApOOg&X9%!
z=^5T6=!v7cHi@;B09%PcL~Yh&V)B#3qYL$&pe>PzMf%?IfMs2KbfkwjY)w7}Bsoq+
zfS;gP+r;mc;!2E#<Tih6$R^9RqHG!AspCZzx!CQ+Ps5_sm2fic>&?kzt6Z#gR`=K*
zqW?$oJ<pS6cg%8J9B(va*>ljn8aOwGBH(#025BIRW5`CW=2%`h0aeB-o;9{9Q*T(Y
z001GTZ+T<r#-tC=ebZw(u+iDdR@3o=A}Mj&2lxp#lx@4YXODj?`wos>PucUFam8!y
zfpKNqaj^s0_Qz2;4h(dzSabqtC@yF!zOPU(sTj1rttfs&p?ys>eZ!?WwiWCv3SAwI
zA4GyK#VG~w6Qm?bH7br_7$A@0DwwSp4WnvHu8Km#4;|=H!J%rPN8a|U679u943&9F
z#ZbwD=7Q>|66=4n^Rsr9=IGY2i>{8w528VkU<xU`=z<ILdFcB6k)+uLyBdo`DikSY
zr|^;W`HhOtay>|7^@$_R;!lWt>s{zblB2rPteuytPLm;FOCI2z$QOQ~T}aeRDh3P(
zRnThzm1tkyc2X?IwxTYHu8zhJhSZ8v3g9P5wOZ<Y>s5bSg$rT&0NiV}?tz0=>m^&Y
z=ZOP9F59Z6p|~{<HDX0cJY-&FUQ$`L;bl}^)gbgyiS=n(l%rcwm&R6i#t))CNdG0=
zjmaH!N2@7%*xhaQ@si2`HKta3`?_*HAz9sHI}xOzlAu4&n*{v{-gMeX>U>-le0i!!
zPoApOLw0|fIgGMk<`h@<Lz<ZmUrX!wIo%U=sx(WrzJyatksJAELZs=i?NALztrH|V
zcs&|7-8=3$NXZy2n`QG#G6~91E5CswZ5c&52qCU6X=NCBZY7iDY!X1Y92%J$=?Xe&
z+2m9inoG$t`i1otJtx6bIG9A8akTBY5_IvX*1&&+Sl7;rASa62+?qKdW;78;b@LJ`
z&!xLP8Bt7UL+ctoGq)&CAjbsAigi((dRY{+xQm|2U>cEeowj2u7U?`*lAQ{#o6XH>
z*=!bFk6s?#)tsvLcra3iwlOy)N2N=-w3enw^h^fRC>$5HJr*RGL8?bc;#$tE_eG-a
z4pM){%!D}ji=D|}7U6MG+X)~AM^!Ql!Kij206Fx!SOSG07!3k25(MeRfSe1=19yS~
zSPY9e6)-nBq0$Zvf?PTX7SWrX$zU3hakOn@G&rtek%9|m+C-N}Kl568G`MJ{VXg~l
z5o)=P2fZL9NcgNVH_{FYwZ#(pZS<8i28Mq-><rR)FpbE#t|g~}M88{Lq*NeLp{H0V
zM4n)@`w}CiZg*)UN>U>|2V^jb3b9L$fpo6Fz_;gyP=YS>*9V^q!zf+gPWlVHNzi}g
zO<W?~=S^H9J;$2_{ZHO>hBO>V4|o%gNDuf!dWt&<zwxFY`9u0a_=z`t#~so)KzK%x
zGu;8gAAIQ@z#Gy>CT~b@nfOnIf9FT9-5`I^%@5GKUjUAfKK$&)oz6c;_*Z}d0K<Jk
Ukl}J!!T<mO07*qoM6N<$f{yl`#sB~S

-- 
2.33.1

---

From: Célestin Matte <[email-masked]>
Date: Tue, 2 Nov 2021 17:26:15 +0100

Third patch seems to fail to be pass the list's spam filter, so please find it here: https://ploudseeker.com/files/0003-Update-banner-images-to-remove-mentions-of-PostreSQL.patch

-- 
Célestin Matte

---

From: "Jonathan S. Katz" <[email-masked]>
Date: Tue, 2 Nov 2021 13:02:00 -0400

On 11/2/21 12:26 PM, Célestin Matte wrote:
> Third patch seems to fail to be pass the list's spam filter

These go into a moderation queue. I went ahead and approved it.

Thanks,

Jonathan

---

From: Alvaro Herrera <[email-masked]>
Date: Tue, 2 Nov 2021 14:55:11 -0300

{% motto %} -> The world's most advanced open source database ;-)

-- 
Álvaro Herrera              Valdivia, Chile  —  https://www.EnterpriseDB.com/
"I dream about dreams about dreams", sang the nightingale
under the pale moon (Sandman)

---

From: Magnus Hagander <[email-masked]>
Date: Thu, 4 Nov 2021 11:29:16 +0100

On Tue, Nov 2, 2021 at 5:18 PM Célestin Matte <[email-masked]>
wrote:

> Hello,
>
> PGLister is currently made to be run for PostgreSQL only. In an effort to
> get this software used by other organizations, this series of patches
> defines an ORGANIZATION_NAME configuration option and uses it to replace
> mentions of PostreSQL in templates.
> Additionally, new images for the banner are proposed, to replace mentions
> of PostreSQL by a sober "PGLister". Postgres' logo is, however, kept.
>

As a general rule, please post the patches no the thread of the
description, and if it's more than one patch, in the same email. Right now
the only thing I see to review is this description, that's kind of hard.

As for reviewing the general idea, I agree with that -- makes perfect sense
to do that. I did note that Alvaro spotted that it also needs to look over
all the rest of the text and find similar stuff -- like the image alt=""
attribute. There may be more of those?

-- 
 Magnus Hagander
 Me: https://www.hagander.net/ <http://www.hagander.net/>
 Work: https://www.redpill-linpro.com/ <http://www.redpill-linpro.com/>

---

From: Célestin Matte <[email-masked]>
Date: Thu, 4 Nov 2021 12:21:09 +0100

> As a general rule, please post the patches no the thread of the description, and if it's more than one patch, in the same email. Right now the only thing I see to review is this description, that's kind of hard.

Sorry, I don't understand: should I send all patches by responding to the description email (instead of replying to the previous ones, as I did here), or all patches in the same email?

> As for reviewing the general idea, I agree with that -- makes perfect sense to do that. I did note that Alvaro spotted that it also needs to look over all the rest of the text and find similar stuff -- like the image alt="" attribute. There may be more of those?

Yep, added handling of ORGANIZATION_MOTTO in the set of patches attached to this email.

-- 
Célestin Matte

From 0a45fb0330a54cad6417e8795dcfa9c5b654c57c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 2 Nov 2021 16:51:51 +0100
Subject: [PATCH 1/3] Add orgname tag and settings to define organization name

---
 web/pglister/lists/templatetags/pglister.py | 8 ++++++++
 web/pglister/settings.py                    | 3 +++
 2 files changed, 11 insertions(+)

index ad2fc99..6d1ed5f 100644

@@ -80,3 +81,10 @@ def moderation_options(context, reason, is_subscribed):
 @register.filter
 def replacepercent(obj, replacewith):
     return obj.replace('%', replacewith)
+
[email-masked]
+def org(arg):
+    if arg == "name":
+        return settings.ORGANIZATION_NAME
+    elif arg == "motto":
+        return settings.ORGANIZATION_MOTTO
diff --git a/web/pglister/settings.py b/web/pglister/settings.py
index ba69207..db375b6 100644
--- a/web/pglister/settings.py
+++ b/web/pglister/settings.py
@@ -114,6 +114,9 @@ DATETIME_FORMAT = "Y-m-d H:i:s"
 
 STATIC_URL = '/media/'
 
+ORGANIZATION_MOTTO = "The world's most advanced open source database"

From 98c376bbee81a497e5f410a55b0df0101fe1e7d4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 2 Nov 2021 16:52:33 +0100
Subject: [PATCH 2/3] Use orgname in templates to make them
 organization-generic

---

diff --git a/web/pglister/lists/templates/base.html b/web/pglister/lists/templates/base.html
index feb1e57..6c9da22 100644
--- a/web/pglister/lists/templates/base.html
+++ b/web/pglister/lists/templates/base.html
@@ -3,7 +3,7 @@
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
-    <title>{%if title%}{{title}} - {%endif%}PostgreSQL mailing lists</title>
+    <title>{%if title%}{{title}} - {%endif%}{% org "name" %} mailing lists</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
     <link href="/media/css/bootstrap.min.css" rel="stylesheet" media="screen"></link>
     <link href="/media/css/pglister.css" rel="stylesheet" media="screen"></link>
@@ -14,8 +14,8 @@
     <div class="container">
       <div class="row">
 	<div class="col-sm-12" id="pglisterhdr">
-	  <a href="/"><img src="/media/img/hdr_left.png" alt="PostgreSQL" /></a>
-	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" alt="The world's most advanced open source database" />
+	  <a href="/"><img src="/media/img/hdr_left.png" alt="{% org "name" %}" /></a>
+	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" alt="{% org "motto" %}" />
 	</div>
       </div>
 {%if messages%}
diff --git a/web/pglister/lists/templates/home.html b/web/pglister/lists/templates/home.html
index d122a4b..59034c4 100644
--- a/web/pglister/lists/templates/home.html
+++ b/web/pglister/lists/templates/home.html
@@ -1,13 +1,14 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% org "name" %} mailing lists</h1>
 <p>
   <a class="btn btn-lg btn-primary" href="/manage/">Manage subscriptions</a>
   <a class="btn btn-lg btn-primary" href="/unsubscribe/">Unsubscribe</a>
   <br/><br/>
 </p>
 <p>
-  From this site you can manage all your PostgreSQL mailing list
+  From this site you can manage all your {% org "name" %} mailing list
   subscriptions.  To manage them, click on the link above.
 </p>
 <b>Note 1:</b> Please ensure you read the <a href="https://www.postgresql.org/about/policies/archives/">Archive Policy</a>
@@ -26,7 +27,7 @@ unable to deliver mail to our list members.
 </p>
 
 <p>
-  If you are not already logged into your PostgreSQL Community account,
+  If you are not already logged into your {% org "name" %} Community account,
   you will be redirected and asked to log in first.  Once you're logged
   in, you can see all of the lists which you are subscribed to with the
   email address associated with your community account.
@@ -38,7 +39,7 @@ unable to deliver mail to our list members.
   using those addresses as well.
 </p>
 <p>
-  If you are a moderator of PostgreSQL mailing lists, you'll have a link
+  If you are a moderator of {% org "name" %} mailing lists, you'll have a link
   at the bottom of the page which says "Manage/Moderate lists".  If you
   believe you should have such a link and you do not, please contact the
   PostgreSQL WWW Mailing list.
diff --git a/web/pglister/lists/templates/unsubscribe_confirm.html b/web/pglister/lists/templates/unsubscribe_confirm.html
index af1cd3f..9174e22 100644
--- a/web/pglister/lists/templates/unsubscribe_confirm.html
+++ b/web/pglister/lists/templates/unsubscribe_confirm.html
@@ -1,6 +1,7 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% org "name" %} mailing lists</h1>
 <h2>Unsubscribe</h2>
 <p>
 {{view.message}}
diff --git a/web/pglister/lists/templates/unsubscribe_help.html b/web/pglister/lists/templates/unsubscribe_help.html
index 3889ad0..cd7941b 100644
--- a/web/pglister/lists/templates/unsubscribe_help.html
+++ b/web/pglister/lists/templates/unsubscribe_help.html
@@ -1,10 +1,11 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% org "name" %} mailing lists</h1>
 <h2>Unsubscribe</h2>
 <h3>With account</h3>
 <p>
-  If you have subscribed to a PostgreSQL mailinglist using your community account,
+  If you have subscribed to a {% org "name" %} mailinglist using your community account,
   the easiest way to unsubscribe is to use the
   <a href="/manage/">manage subscriptions</a> page, logged in to the
   same account. If you have lost your password, you can use the lost
diff --git a/web/pglister/lists/templates/unsubscribe_link.html b/web/pglister/lists/templates/unsubscribe_link.html
index badce53..39ed490 100644
--- a/web/pglister/lists/templates/unsubscribe_link.html
+++ b/web/pglister/lists/templates/unsubscribe_link.html
@@ -1,6 +1,7 @@
 {%extends "base.html"%}
+{%load pglister%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{% org "name" %} mailing lists</h1>
 <h2>Unsubscribe</h2>
 {%if not done%}
 <p>
-- 
2.33.1

From 0c5e6e06b7ba656d5ccb401ad79f00a644afd734 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 2 Nov 2021 16:53:04 +0100
Subject: [PATCH 3/3] Update banner images to remove mentions of PostreSQL

---

delta 2253

delta 1414

-- 
2.33.1

---

From: Magnus Hagander <[email-masked]>
Date: Sat, 15 Jan 2022 19:06:35 +0100

> Sorry, I don't understand: should I send all patches by responding to the description email (instead of replying to the previous ones, as I did here), or all patches in the same email?

All in the same email is definitely best, like you did in this one -- thanks!

> Yep, added handling of ORGANIZATION_MOTTO in the set of patches attached to this email.

Looking at 1 and 2, this just seems to me like a strange way to do it,
by declaring a new tag for it.

I think it would be cleaner with a Context Processor similar to what
we have in pgweb. Then this context processor could just return a dict
of ORGANIZATION_INFO from setitngs.py, wihch would have a key for name
and a key for motto perhaps?

As for 3 -- I don't think we want to remove the postgresql branding It
should be made optional though, perhaps by another parameter in said
dict in the settings that would just make it load from different URLs
and files?

-- 
 Magnus Hagander
 Me: https://www.hagander.net/
 Work: https://www.redpill-linpro.com/

---

From: Célestin Matte <[email-masked]>
Date: Wed, 19 Jan 2022 10:48:28 +0100

> dict in the settings that would just make it load from different URLs

All done in attached series of patches!

-- 
Célestin Matte

From c963e245891267a854da0fa30fddebbe8b8cd51e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Wed, 19 Jan 2022 10:44:22 +0100
Subject: [PATCH 1/4] Add context processor to define organization info

This patch adds a new context processor PGListerContextProcessor that imports
organization infos (name and motto) defined in settings.py
---
 web/pglister/contexts.py | 9 +++++++++
 web/pglister/settings.py | 6 ++++++
 2 files changed, 15 insertions(+)
 create mode 100644 web/pglister/contexts.py

diff --git a/web/pglister/contexts.py b/web/pglister/contexts.py
new file mode 100644
index 0000000..5e310ff
--- /dev/null
+++ b/web/pglister/contexts.py
@@ -0,0 +1,9 @@
+from django.conf import settings
+
+
+# Template context processor to add information about organization name
+# and motto defined in settings.py
+def PGListerContextProcessor(request):
+    return {
+        'organization_info': settings.ORGANIZATION_INFO,
+    }
diff --git a/web/pglister/settings.py b/web/pglister/settings.py
index 122768d..da9d7df 100644
--- a/web/pglister/settings.py
+++ b/web/pglister/settings.py
@@ -70,6 +70,7 @@ TEMPLATES = [
                 'django.template.context_processors.request',
                 'django.contrib.auth.context_processors.auth',
                 'django.contrib.messages.context_processors.messages',
+                'pglister.contexts.PGListerContextProcessor',
             ],
             'loaders': [
                 'django.template.loaders.filesystem.Loader',
@@ -115,6 +116,11 @@ DATETIME_FORMAT = "Y-m-d H:i:s"
 
 STATIC_URL = '/media/'
 
+ORGANIZATION_INFO = {
+    'name': 'PostgreSQL',
+    'motto': "The world's most advanced open source database"
+}
+
 # Override in local settings
 USE_PG_COMMUNITY_AUTH = True  # Right now we *always* do, but this is used to turn on/off some local features
 PGAUTH_REDIRECT = "http://localhost:8000/account/auth/12/"
-- 
2.34.1

From 7e167a0ff4bbd3382a023e165d0ec900af948959 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Tue, 18 Jan 2022 18:56:17 +0100
Subject: [PATCH 2/4] Use organization name and motto in template to make them
 organization-generic

---
 web/pglister/lists/templates/base.html                | 6 +++---
 web/pglister/lists/templates/home.html                | 8 ++++----
 web/pglister/lists/templates/unsubscribe_confirm.html | 2 +-
 web/pglister/lists/templates/unsubscribe_help.html    | 4 ++--
 web/pglister/lists/templates/unsubscribe_link.html    | 2 +-
 5 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/web/pglister/lists/templates/base.html b/web/pglister/lists/templates/base.html
index feb1e57..21e964d 100644
--- a/web/pglister/lists/templates/base.html
+++ b/web/pglister/lists/templates/base.html
@@ -3,7 +3,7 @@
           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
   <head>
-    <title>{%if title%}{{title}} - {%endif%}PostgreSQL mailing lists</title>
+    <title>{%if title%}{{title}} - {%endif%}{{organization_info.name}} mailing lists</title>
     <meta name="viewport" content="width=device-width, initial-scale=1.0"></meta>
     <link href="/media/css/bootstrap.min.css" rel="stylesheet" media="screen"></link>
     <link href="/media/css/pglister.css" rel="stylesheet" media="screen"></link>
@@ -14,8 +14,8 @@
     <div class="container">
       <div class="row">
 	<div class="col-sm-12" id="pglisterhdr">
-	  <a href="/"><img src="/media/img/hdr_left.png" alt="PostgreSQL" /></a>
-	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" alt="The world's most advanced open source database" />
+	  <a href="/"><img src="/media/img/hdr_left.png" alt="{{organization_info.name}}" /></a>
+	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" alt="{{organization_info.motto}}" />
 	</div>
       </div>
 {%if messages%}
diff --git a/web/pglister/lists/templates/home.html b/web/pglister/lists/templates/home.html
index d122a4b..6dbe363 100644
--- a/web/pglister/lists/templates/home.html
+++ b/web/pglister/lists/templates/home.html
@@ -1,13 +1,13 @@
 {%extends "base.html"%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{{organization_info.name}} mailing lists</h1>
 <p>
   <a class="btn btn-lg btn-primary" href="/manage/">Manage subscriptions</a>
   <a class="btn btn-lg btn-primary" href="/unsubscribe/">Unsubscribe</a>
   <br/><br/>
 </p>
 <p>
-  From this site you can manage all your PostgreSQL mailing list
+  From this site you can manage all your {{organization_info.name}} mailing list
   subscriptions.  To manage them, click on the link above.
 </p>
 <b>Note 1:</b> Please ensure you read the <a href="https://www.postgresql.org/about/policies/archives/">Archive Policy</a>
@@ -26,7 +26,7 @@ unable to deliver mail to our list members.
 </p>
 
 <p>
-  If you are not already logged into your PostgreSQL Community account,
+  If you are not already logged into your {{organization_info.name}} Community account,
   you will be redirected and asked to log in first.  Once you're logged
   in, you can see all of the lists which you are subscribed to with the
   email address associated with your community account.
@@ -38,7 +38,7 @@ unable to deliver mail to our list members.
   using those addresses as well.
 </p>
 <p>
-  If you are a moderator of PostgreSQL mailing lists, you'll have a link
+  If you are a moderator of {{organization_info.name}} mailing lists, you'll have a link
   at the bottom of the page which says "Manage/Moderate lists".  If you
   believe you should have such a link and you do not, please contact the
   PostgreSQL WWW Mailing list.
diff --git a/web/pglister/lists/templates/unsubscribe_confirm.html b/web/pglister/lists/templates/unsubscribe_confirm.html
index af1cd3f..57c8181 100644
--- a/web/pglister/lists/templates/unsubscribe_confirm.html
+++ b/web/pglister/lists/templates/unsubscribe_confirm.html
@@ -1,6 +1,6 @@
 {%extends "base.html"%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{{organization_info.name}} mailing lists</h1>
 <h2>Unsubscribe</h2>
 <p>
 {{view.message}}
diff --git a/web/pglister/lists/templates/unsubscribe_help.html b/web/pglister/lists/templates/unsubscribe_help.html
index 3889ad0..5173a35 100644
--- a/web/pglister/lists/templates/unsubscribe_help.html
+++ b/web/pglister/lists/templates/unsubscribe_help.html
@@ -1,10 +1,10 @@
 {%extends "base.html"%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{{organization_info.name}} mailing lists</h1>
 <h2>Unsubscribe</h2>
 <h3>With account</h3>
 <p>
-  If you have subscribed to a PostgreSQL mailinglist using your community account,
+  If you have subscribed to a {{organization_info.name}} mailinglist using your community account,
   the easiest way to unsubscribe is to use the
   <a href="/manage/">manage subscriptions</a> page, logged in to the
   same account. If you have lost your password, you can use the lost
diff --git a/web/pglister/lists/templates/unsubscribe_link.html b/web/pglister/lists/templates/unsubscribe_link.html
index badce53..e8eee77 100644
--- a/web/pglister/lists/templates/unsubscribe_link.html
+++ b/web/pglister/lists/templates/unsubscribe_link.html
@@ -1,6 +1,6 @@
 {%extends "base.html"%}
 {%block content%}
-<h1>PostgreSQL mailing lists</h1>
+<h1>{{organization_info.name}} mailing lists</h1>
 <h2>Unsubscribe</h2>
 {%if not done%}
 <p>
-- 
2.34.1

From 53c37a7b63d71675876f8a408e72f14c50bcc08c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Wed, 19 Jan 2022 10:36:52 +0100
Subject: [PATCH 3/4] Add options in settings.py to be able to select banner
 files

---
 web/pglister/lists/templates/base.html | 4 ++--
 web/pglister/settings.py               | 8 +++++++-
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/web/pglister/lists/templates/base.html b/web/pglister/lists/templates/base.html
index 21e964d..d957b86 100644
--- a/web/pglister/lists/templates/base.html
+++ b/web/pglister/lists/templates/base.html
@@ -14,8 +14,8 @@
     <div class="container">
       <div class="row">
 	<div class="col-sm-12" id="pglisterhdr">
-	  <a href="/"><img src="/media/img/hdr_left.png" alt="{{organization_info.name}}" /></a>
-	  <img class="pull-right hidden-xs" src="/media/img/hdr_right.png" alt="{{organization_info.motto}}" />
+	  <a href="/"><img src="/media/img/{{organization_info.banner_left}}" alt="{{organization_info.name}}" /></a>
+	  <img class="pull-right hidden-xs" src="/media/img/{{organization_info.banner_right}}" alt="{{organization_info.motto}}" />
 	</div>
       </div>
 {%if messages%}
diff --git a/web/pglister/settings.py b/web/pglister/settings.py
index da9d7df..e65d00c 100644
--- a/web/pglister/settings.py
+++ b/web/pglister/settings.py
@@ -118,7 +118,13 @@ STATIC_URL = '/media/'
 
 ORGANIZATION_INFO = {
     'name': 'PostgreSQL',
-    'motto': "The world's most advanced open source database"
+    'motto': "The world's most advanced open source database",
+    # To use a different banner, change file names here and place images
+    # in /media/img/.
+    # You can use hdr_left_generic.png and hdr_right_generic.png to remove
+    # mentions of PostgreSQL
+    'banner_left': 'hdr_left.png',
+    'banner_right': 'hdr_right.png',
 }
 
2.34.1

From 6a4e9a16611d7e7ceefca9084e65eb7ad2099a2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Wed, 19 Jan 2022 10:37:13 +0100
Subject: [PATCH 4/4] Add generic banner files (no mention of PostgreSQL)

---
 web/media/img/hdr_left_generic.png  | Bin 0 -> 10258 bytes
 web/media/img/hdr_right_generic.png | Bin 0 -> 5672 bytes
 2 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 web/media/img/hdr_left_generic.png
 create mode 100644 web/media/img/hdr_right_generic.png

diff --git a/web/media/img/hdr_left_generic.png b/web/media/img/hdr_left_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..2cb2a16f90e839ce15312eef850b42355f2d0876
GIT binary patch
literal 10258

literal 0
HcmV?d00001

diff --git a/web/media/img/hdr_right_generic.png b/web/media/img/hdr_right_generic.png
new file mode 100644
index 0000000000000000000000000000000000000000..45cf265ee5c846b92f05eab5554f4df40ca529e4
GIT binary patch
literal 5672

literal 0
HcmV?d00001

-- 
2.34.1

---

From: Célestin Matte <[email-masked]>
Date: Tue, 25 Jan 2022 10:36:21 +0100

Hi there. Would it be easier if I sent pglister-related patches in MR on gitlab instead of the list?

-- 
Célestin Matte

---

From: Magnus Hagander <[email-masked]>
Date: Tue, 25 Jan 2022 21:48:18 +0100

> Hi there. Would it be easier if I sent pglister-related patches in MR on gitlab instead of the list?

Doesn't really matter from our perspective I think. We're just
generally backlogged and slow to review them regardless of where
they're submitted - sorry about that. I think if anything this list
might get marginally higher visibility and at least in theory attract
an extra reviewer. In practice, I don't think it makes a difference.

---

From: Célestin Matte <[email-masked]>
Date: Wed, 7 Aug 2024 22:31:14 +0200

Adding to this series of patches the possibility to configure links in the banner

-- 
Célestin Matte
From 6664bc9b3d2793944f2947b7f5f02f0699822a23 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Wed, 7 Aug 2024 16:27:39 +0200
Subject: [PATCH 5/6] Add possibility to add additional links in the banner

---
 web/pglister/lists/templates/base.html | 3 +++
 web/pglister/settings.py               | 2 ++
 2 files changed, 5 insertions(+)

diff --git a/web/pglister/lists/templates/base.html b/web/pglister/lists/templates/base.html
index d957b86..b73f67d 100644
--- a/web/pglister/lists/templates/base.html
+++ b/web/pglister/lists/templates/base.html
@@ -16,6 +16,9 @@
 	<div class="col-sm-12" id="pglisterhdr">
 	  <a href="/"><img src="/media/img/{{organization_info.banner_left}}" alt="{{organization_info.name}}" /></a>
 	  <img class="pull-right hidden-xs" src="/media/img/{{organization_info.banner_right}}" alt="{{organization_info.motto}}" />
+          {%for l in organization_info.links%}
+          <a href="{{ l.href }}" class='btn btn-lg btn-primary'>{{ l.name }}</a>
+          {%endfor%}
 	</div>
       </div>
 {%if messages%}
diff --git a/web/pglister/settings.py b/web/pglister/settings.py
index e65d00c..41f7d7a 100644
--- a/web/pglister/settings.py
+++ b/web/pglister/settings.py
@@ -125,6 +125,8 @@ ORGANIZATION_INFO = {
     # mentions of PostgreSQL
     'banner_left': 'hdr_left.png',
     'banner_right': 'hdr_right.png',
+    # Additional links to add in the banner.
+    'links': [{'name': 'PostgreSQL', 'href': 'https://postgresql.org'}],
 }
 
2.45.2

From 4ceb157e8556503b58e3bd5955264d2972daab10 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email-masked]>
Date: Wed, 7 Aug 2024 22:26:42 +0200
Subject: [PATCH 6/6] Reduce right side of banner to leave space for links

---
 web/media/img/hdr_right_generic.png | Bin 5672 -> 6603 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/web/media/img/hdr_right_generic.png b/web/media/img/hdr_right_generic.png
index 45cf265ee5c846b92f05eab5554f4df40ca529e4..72e218180ca8285441e4d3d2cc037e43265db949 100644
GIT binary patch
delta 2716
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
Ap8x;=

delta 1944
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

-- 
2.45.2