public inbox for [email protected]  
help / color / mirror / Atom feed
From: Célestin Matte <[email protected]>
To: Magnus Hagander <[email protected]>
Cc: PostgreSQL WWW <[email protected]>
Subject: Re: [PATCHES] pglister: make organization name generic
Date: Wed, 19 Jan 2022 10:48:28 +0100
Message-ID: <[email protected]> (raw)
In-Reply-To: <CABUevEzBBjh7Ha9dXT4AU+0s4GmBR9sYjqXbcK_aULn=mqqY0A@mail.gmail.com>
References: <[email protected]>
	<CABUevEw9uzwxnVqSTCgOYCYPNy2DbUW7uv7Fj3yk_ntkfpp5jg@mail.gmail.com>
	<[email protected]>
	<CABUevEzBBjh7Ha9dXT4AU+0s4GmBR9sYjqXbcK_aULn=mqqY0A@mail.gmail.com>

> 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?

All done in attached series of patches!

-- 
Célestin Matte

Attachments:

  [text/x-patch] 0001-Add-context-processor-to-define-organization-info.patch (1.9K, 2-0001-Add-context-processor-to-define-organization-info.patch)
  download | inline diff:
From c963e245891267a854da0fa30fddebbe8b8cd51e Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email protected]>
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



  [text/x-patch] 0002-Use-organization-name-and-motto-in-template-to-make-.patch (5.4K, 3-0002-Use-organization-name-and-motto-in-template-to-make-.patch)
  download | inline diff:
From 7e167a0ff4bbd3382a023e165d0ec900af948959 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email protected]>
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



  [text/x-patch] 0003-Add-options-in-settings.py-to-be-able-to-select-bann.patch (1.9K, 4-0003-Add-options-in-settings.py-to-be-able-to-select-bann.patch)
  download | inline diff:
From 53c37a7b63d71675876f8a408e72f14c50bcc08c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email protected]>
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',
 }
 
 # Override in local settings
-- 
2.34.1



  [text/x-patch] 0004-Add-generic-banner-files-no-mention-of-PostgreSQL.patch (15.0K, 5-0004-Add-generic-banner-files-no-mention-of-PostgreSQL.patch)
  download | inline diff:
From 6a4e9a16611d7e7ceefca9084e65eb7ad2099a2f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?C=C3=A9lestin=20Matte?= <[email protected]>
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
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

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
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
Y$-Btfn02`)0oDOv*sruZXXCl!zl~G>egFUf

literal 0
HcmV?d00001

-- 
2.34.1



reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: [email protected]
  Cc: [email protected], [email protected], [email protected]
  Subject: Re: [PATCHES] pglister: make organization name generic
  In-Reply-To: <[email protected]>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox