From 0906f9d27c93a7504b2f1e3ffdc60cddfebcd625 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 11 Jun 2024 21:23:15 +0200 Subject: [PATCH 01/16] List spec fee. --- src/members-print.scm | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/members-print.scm b/src/members-print.scm index 360e316..211fd54 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -531,6 +531,10 @@ payment total balance + (let ((spec-fee (brmember-spec-fee mr))) + (if spec-fee + spec-fee + "normal")) ))) raw-members)) (balances (map (lambda (m) @@ -552,8 +556,7 @@ (let ((total (list-ref member 5))) (list (list-ref member 0) (list-ref member 1) - "---" - + (sprintf "\t~A" (list-ref member 5)) (sprintf "\t~A" (list-ref member 2)) (sprintf "\t~A" (list-ref member 3)) (sprintf "\t~A" (list-ref member 4)) From 90930391d0f314d53c162579ca7591e0b7055478 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 11 Jun 2024 21:25:25 +0200 Subject: [PATCH 02/16] Wrong list ref. --- src/members-print.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/members-print.scm b/src/members-print.scm index 211fd54..ef70c01 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -556,7 +556,7 @@ (let ((total (list-ref member 5))) (list (list-ref member 0) (list-ref member 1) - (sprintf "\t~A" (list-ref member 5)) + (sprintf "\t~A" (list-ref member 7)) (sprintf "\t~A" (list-ref member 2)) (sprintf "\t~A" (list-ref member 3)) (sprintf "\t~A" (list-ref member 4)) From 079551e41a890fd8c3d8bc1c9e88bf3faa0c955b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 11 Jun 2024 21:29:06 +0200 Subject: [PATCH 03/16] Proper lookup. --- src/members-print.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/members-print.scm b/src/members-print.scm index ef70c01..47478dc 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -534,7 +534,10 @@ (let ((spec-fee (brmember-spec-fee mr))) (if spec-fee spec-fee - "normal")) + (member-calendar-entry->fee + (list (*current-month*) + (brmember-flags mr) + spec-fee)))) ))) raw-members)) (balances (map (lambda (m) From bc5db8db9966909841950ac963ab586d913318d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 11 Jun 2024 21:33:12 +0200 Subject: [PATCH 04/16] Current totals. --- src/members-print.scm | 5 +++-- src/texts.scm | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/members-print.scm b/src/members-print.scm index 47478dc..33d0869 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -576,10 +576,11 @@ (let* ((fees (foldl + 0 (map (lambda (b) (ldict-ref b 'fees)) balances))) (credit (foldl + 0 (map (lambda (b) (ldict-ref b 'credit)) balances))) (payment (foldl + 0 (map (lambda (b) (ldict-ref b 'payment)) balances))) - (total (- (+ credit payment) fees))) + (total (- (+ credit payment) fees)) + (current-total (foldl + 0 (map (lambda (m) (list-ref m 7)) members)))) (list (list (ansi-string #:bold "Total") "" - "" + (ansi-string "\t" #:bold (sprintf "~A" current-total)) (ansi-string "\t" #:bold (sprintf "~A" fees)) (ansi-string "\t" #:bold (sprintf "~A" credit)) (ansi-string "\t" #:bold (sprintf "~A" payment)) diff --git a/src/texts.scm b/src/texts.scm index 2bd8193..d6781f4 100644 --- a/src/texts.scm +++ b/src/texts.scm @@ -39,7 +39,7 @@ (chicken format)) ;; Short banner - (define banner-line "HackerBase 1.16.2 (c) 2023-2024 Brmlab, z.s.") + (define banner-line "HackerBase 1.17-dev (c) 2023-2024 Brmlab, z.s.") ;; Banner source with numbers for ANSI CSI SGR (define banner-source " From 1840f5675beaf78e43383527ce89e64023c29f35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 2 Jul 2024 20:21:33 +0200 Subject: [PATCH 05/16] Fix erroneous newline when sending notifications. --- src/duck-extract.scm | 6 ------ src/hackerbase.scm | 2 +- src/members-print.scm | 5 ----- src/sgr-block.scm | 1 - src/table-processor.scm | 2 -- src/table.scm | 1 - 6 files changed, 1 insertion(+), 16 deletions(-) diff --git a/src/duck-extract.scm b/src/duck-extract.scm index 3948e2d..968621b 100644 --- a/src/duck-extract.scm +++ b/src/duck-extract.scm @@ -135,18 +135,12 @@ res)))))) (define (print-duck-signature sig) - ;;(print sig) (let* ((curry-depth (get-curry-depth sig)) (name (get-signature-name sig)) (nameline (format " ~A~A" (make-string curry-depth #\() name)) (spaceline (make-string (add1 (string-length nameline)) #\space)) (args (gather-signature-arguments sig)) (eargs (expand-signature-arguments args))) - ;;(print " curry depth = " curry-depth) - ;;(print " name = " name) - ;;(print " args = " args) - ;;(printf " eargs = ~S" eargs) - ;;(newline) (if (null? eargs) (print nameline ")") (let loop ((args eargs) diff --git a/src/hackerbase.scm b/src/hackerbase.scm index 6579723..0633a49 100644 --- a/src/hackerbase.scm +++ b/src/hackerbase.scm @@ -378,7 +378,7 @@ (print "Mailman synchronization disabled with manually specified current month.")))) ((notify) (let ((nmembers (members-to-notify MB (-notify-months-)))) - (newline) + (stdout-newline) (if (null? nmembers) (print "Everyone paid on time.") (let () diff --git a/src/members-print.scm b/src/members-print.scm index 33d0869..4d5b2dd 100644 --- a/src/members-print.scm +++ b/src/members-print.scm @@ -129,8 +129,6 @@ (ptbl (table->string pdata #:border '(((#:right light) ... none) ...)))) - ;;(print pdata) - ;;(write ptbl)(newline) (list k ptbl))) ((fee) (let* ((pdata @@ -150,8 +148,6 @@ (ptbl (table->string pdata #:border '(((#:right light) ... none) ...)))) - ;;(print pdata) - ;;(write ptbl)(newline) (list k ptbl))) (else (if v @@ -182,7 +178,6 @@ (list (list (ansi-string #:red "DokuWiki") (ansi-string #:red "---"))))) (result (filter identity (append head body mailman dokuwiki)))) - ;;(write result)(newline) (table->string result #:border '(((#:bottom #:right light) ... (#:bottom light)) ... diff --git a/src/sgr-block.scm b/src/sgr-block.scm index d3c2bbc..f8e1f8a 100644 --- a/src/sgr-block.scm +++ b/src/sgr-block.scm @@ -366,7 +366,6 @@ slw)) state))) (let ((sln (sgr-list-neutralize sl))) - ;;(write sln)(newline) (values (list sln) initial-state)))) ;; Renders all the lines and appends the resulting blocks diff --git a/src/table-processor.scm b/src/table-processor.scm index 956d9fd..ff79d9f 100644 --- a/src/table-processor.scm +++ b/src/table-processor.scm @@ -204,8 +204,6 @@ (tbl1 (render-cells-widths ptbl col-widths)) ;;(_ (print tbl1)) (tbl2 (map expand-row-height tbl1))) - ;;(write tbl1)(newline) - ;;(write tbl2)(newline) ;; Just return the result - both the table and cached column widths (values tbl2 col-widths)))) diff --git a/src/table.scm b/src/table.scm index 43041ff..719fb1a 100644 --- a/src/table.scm +++ b/src/table.scm @@ -88,7 +88,6 @@ (borders (expand-table-style border-spec num-columns num-rows)) (col-separators (table-col-separators? borders)) (rows (merge-rows ptbl borders col-separators unicode?))) - ;;(write rows)(newline) (let loop ((rows rows) (borders borders) (res '()) From 8c436f6910c5acc7d49a00dfcf3397447da86189 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 2 Jul 2024 20:31:49 +0200 Subject: [PATCH 06/16] Update historical changelog. --- CHANGELOG.md | 77 ++++++++++++++++++++++++++++++++-------------------- 1 file changed, 47 insertions(+), 30 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03cbc12..8a86fbd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,13 +28,13 @@ ChangeLog current date) * fix showing basic information without MLs loaded -1.15 - released 2024-12-24 +1.15 - released 2023-12-24 -------------------------- * increase membership fees starting 2024-01 (specification.rkt) * add support for explicit fee amounts for specified period -1.14 - released 2024-12-06 +1.14 - released 2023-12-06 -------------------------- * add support for dynamic terminal size @@ -42,14 +42,14 @@ ChangeLog * fix sqlite3 database locking issue * allow limiting -fees output to -active only -1.13 ----- +1.13 - released 2023-12-05 +-------------------------- * add dokuwiki problems to summary emails * handle more SEPA payments -1.12 ----- +1.12 - released 2023-11-16 +-------------------------- * switch to eggs: srfi-1, sqlite3 * semi-automatic export for brmdoor @@ -57,83 +57,100 @@ ChangeLog * redirect dokuwiki plugin to login page if not logged in * sync council and revision mailing lists -1.11 ----- +1.11 - released 2023-09-23 +-------------------------- * add support for CC in emails * update manual page * setup new cron jobs -1.10 ----- +1.10 - released 2023-09-17 +-------------------------- * direct access of mailman 3 database -1.9 ---- +1.9 - released 2023-09-16 +------------------------- * implement support for mailman 3 * add total debt to long-term debtors listings -1.8 ---- +1.8 - released 2023-07-29 +------------------------ * remove old compatibility static web pages generator * update documentation * update Fio fetcher to handle new limits imposed by the bank * output plain list of active members (used by BrmBar project) -1.7 ---- +1.7 - released 2023-07-04 +------------------------- * include current month in stats * right-alignment in table cells * functionality improvements of dokuwiki plugin * checking council group between dokuwiki and members database -1.6 ---- +1.6.2 - released 2023-06-29 +--------------------------- + +* fix passing members to remove_members mailman binary + +1.6.1 - released 2023-06-27 +--------------------------- + +* fix ML removal +* fix sync re-read + +1.6 - released 2023-06-27 +------------------------- * dokuwiki plugin * delete generated files for destroyed members * verify dokuwiki users information -1.5 ---- +1.5 - released 2023-06-19 +------------------------- * improved table renderer * show membership fees and payments balances history * improved generator of static web pages -1.4 ---- +1.4 - released 2023-05-26 +------------------------- * vim and joe syntax highlighting support * improved Fio bank statement fetcher and merger -1.3 ---- +1.3 - released 2023-05-22 +------------------------- * organizational bodies membership -1.2 ---- +1.2.1 - released 2023-05-19 +--------------------------- + +* fix email string argument passing +* use bi-directional mailman communication + +1.2 - released 2023-05-19 +------------------------- * split configuration and action command-line options * support for git annotate * show suspended members that are about to expire * optimized utf-8 support -1.1 ---- +1.1 - released 2023-05-14 +------------------------- * support for suppressing output (used in cron jobs) * sorted members in notifications * report missing keys in member files * internal ML membership synchronization -1.0 ---- +1.0 - released 2023-04-23 +------------------------- This was the first oficially released version which contains all the functionality required to take over the original solution. From 7d1101657f7a18cefc7dc0f9a5a80bd417474028 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 2 Jul 2024 20:50:43 +0200 Subject: [PATCH 07/16] Add support for full email addresses. --- src/util-mail.scm | 38 ++++++++++++++++++++++++++------------ 1 file changed, 26 insertions(+), 12 deletions(-) diff --git a/src/util-mail.scm b/src/util-mail.scm index 8a7e8b5..8e5fb4f 100644 --- a/src/util-mail.scm +++ b/src/util-mail.scm @@ -39,6 +39,7 @@ (chicken base) (chicken keyword) (chicken string) + (chicken irregex) util-io util-utf8 util-string @@ -61,6 +62,14 @@ sent to the address stored within.") "?=") subj)) + ;; Extracts only usernam@domain from given full RFC email address + (define (extract-email-email str) + (let* ((irr (irregex "(?:\"?([^\"]*)\"?\\s)?(?:]+)>?)")) + (em (irregex-match irr str)) + (name (irregex-match-substring em 1)) + (email (irregex-match-substring em 2))) + email)) + ;; Sends an email using the UNIX mail(1) utility. (define*/doc (send-mail body-lines #:from (from #f) @@ -83,17 +92,22 @@ Sends email using mail(1) command. The arguments ```#:to``` and tos)) (header-args (flatten - (map - (lambda (h) (list "-a" h)) - headers)))) - (apply process-send/recv - "mail" - (append (if from - (list "-r" from) - '()) - (list "-s" (encode-subject subject)) - real-tos - header-args) - body-lines))) + (append + (if from (list (sprintf "From: ~A" from)) '()) + (map + (lambda (h) (list "-a" h)) + headers))))) + (let ((from-email (if from + (extract-email-email from) + #f))) + (apply process-send/recv + "mail" + (append (if from + (list "-r" from-email) + '()) + (list "-s" (encode-subject subject)) + real-tos + header-args) + body-lines)))) ) From 6a8282162667790edaa9c17a999658aed0f82f5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 2 Jul 2024 20:52:27 +0200 Subject: [PATCH 08/16] Start writing down 1.17 changes. --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a86fbd..526d15d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,14 @@ ChangeLog ========= +1.17 +---- + +* add "Current Fee" column to -fees to see special discounts +* add EUR account to members page +* fix erroneous newlines in cronjobs +* add support for full RFC email addresses in *email-from* configuration + 1.16.2 - released 2024-05-07 ---------------------------- From 661d7540838bdc1821c2d56f228070a203533b5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 2 Jul 2024 20:58:11 +0200 Subject: [PATCH 09/16] Missing format import. --- src/util-mail.scm | 1 + 1 file changed, 1 insertion(+) diff --git a/src/util-mail.scm b/src/util-mail.scm index 8e5fb4f..31680d5 100644 --- a/src/util-mail.scm +++ b/src/util-mail.scm @@ -40,6 +40,7 @@ (chicken keyword) (chicken string) (chicken irregex) + (chicken format) util-io util-utf8 util-string From dbc52833f06ca059822e2de5a59e6a35aa1c2288 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 2 Jul 2024 21:40:38 +0200 Subject: [PATCH 10/16] Update relevant copyright years. --- README.md | 2 +- src/util-mail.scm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9fcb37f..48798c6 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ License ISC License -Copyright 2023 Brmlab, z.s. +Copyright 2023-2024 Brmlab, z.s. Dominik Pantůček Permission to use, copy, modify, and/or distribute this software diff --git a/src/util-mail.scm b/src/util-mail.scm index 31680d5..9ab448c 100644 --- a/src/util-mail.scm +++ b/src/util-mail.scm @@ -5,7 +5,7 @@ ;; ;; ISC License ;; -;; Copyright 2023 Brmlab, z.s. +;; Copyright 2023-2024 Brmlab, z.s. ;; Dominik Pantůček ;; ;; Permission to use, copy, modify, and/or distribute this software From 065d406e9c86f2deaccdf2a2623c3e9ca2f00be9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 10 Sep 2024 18:42:19 +0200 Subject: [PATCH 11/16] Coerce suspend start to month when calculating suspended months. --- src/brmember.scm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/brmember.scm b/src/brmember.scm index e83c9dd..496dc96 100644 --- a/src/brmember.scm +++ b/src/brmember.scm @@ -423,7 +423,8 @@ (if (brmember-suspended? mr) (let ((period (cal-periods-match (brmember-info mr 'suspend)))) (if period - (cal-month-diff (cal-period-since period) (*current-month*)) + (cal-month-diff (cal-ensure-month (cal-period-since period)) + (*current-month*)) 0)) 0)) From 488499cf23cca23529d02abddfa9770c078cf19a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 10 Sep 2024 18:49:19 +0200 Subject: [PATCH 12/16] When creating cal-period, ensure months for periods. --- src/cal-period.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cal-period.scm b/src/cal-period.scm index ea1cf3d..e88954c 100644 --- a/src/cal-period.scm +++ b/src/cal-period.scm @@ -138,7 +138,10 @@ (not (null? (cdr args)))) (cadr args) #f))) - (list TAG-CAL-PERIOD since before scomment bcomment))) + (list TAG-CAL-PERIOD + (if since (cal-ensure-month since) since) + (if before (cal-ensure-month before) before) + scomment bcomment))) ;; Simple accessors (define cal-period-since cadr) From f95f7a05433356d3cc4538a53ec93821d4f76204 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 10 Sep 2024 18:54:55 +0200 Subject: [PATCH 13/16] Revert "When creating cal-period, ensure months for periods." This reverts commit 488499cf23cca23529d02abddfa9770c078cf19a. --- src/cal-period.scm | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/cal-period.scm b/src/cal-period.scm index e88954c..ea1cf3d 100644 --- a/src/cal-period.scm +++ b/src/cal-period.scm @@ -138,10 +138,7 @@ (not (null? (cdr args)))) (cadr args) #f))) - (list TAG-CAL-PERIOD - (if since (cal-ensure-month since) since) - (if before (cal-ensure-month before) before) - scomment bcomment))) + (list TAG-CAL-PERIOD since before scomment bcomment))) ;; Simple accessors (define cal-period-since cadr) From 09b971ad9347222fb292f365e6e5b1701c68c7eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 10 Sep 2024 20:20:33 +0200 Subject: [PATCH 14/16] Fix soon expires list append. --- src/notifications.scm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/notifications.scm b/src/notifications.scm index 86c888a..52d11f8 100644 --- a/src/notifications.scm +++ b/src/notifications.scm @@ -167,7 +167,7 @@ brmember Date: Tue, 1 Oct 2024 20:34:44 +0200 Subject: [PATCH 15/16] Fix handling members without any fees or payments. --- src/export-web-static.scm | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/export-web-static.scm b/src/export-web-static.scm index 8ed8abc..4b0b15d 100644 --- a/src/export-web-static.scm +++ b/src/export-web-static.scm @@ -44,7 +44,8 @@ cal-day util-git configuration - texts) + texts + logging) ;; HTML entities (define (sanitize-html str) @@ -100,7 +101,11 @@ (brmember-nick mr) "") (print "
Member ID, Variable Symbol for Payments
(Členské číslo, variabilní symbol plateb)
" (brmember-id mr) "
") - (print "
Balance in CZK
(Zůstatek v Kč)
" (caar (reverse bhs)) "
") + (print "
Balance in CZK
(Zůstatek v Kč)
" + (if (null? bhs) + "0" + (caar (reverse bhs))) + "
") (print "
Account for Payments
(Účet pro platbu příspěvků)
CZK: 2500079551/2010
EUR: CZ93 2010 0000 0021 0007 9552
") (print "") (print "") From a86063e7221d998005e2764b01998430cc350922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Pant=C5=AF=C4=8Dek?= Date: Tue, 1 Oct 2024 20:36:28 +0200 Subject: [PATCH 16/16] Release 1.17. --- CHANGELOG.md | 5 +++-- src/texts.scm | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 526d15d..32d0c05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,13 +1,14 @@ ChangeLog ========= -1.17 ----- +1.17 - released 2024-10-01 +-------------------------- * add "Current Fee" column to -fees to see special discounts * add EUR account to members page * fix erroneous newlines in cronjobs * add support for full RFC email addresses in *email-from* configuration +* handling of members without any fees or payments 1.16.2 - released 2024-05-07 ---------------------------- diff --git a/src/texts.scm b/src/texts.scm index d6781f4..6771016 100644 --- a/src/texts.scm +++ b/src/texts.scm @@ -39,7 +39,7 @@ (chicken format)) ;; Short banner - (define banner-line "HackerBase 1.17-dev (c) 2023-2024 Brmlab, z.s.") + (define banner-line "HackerBase 1.17 (c) 2023-2024 Brmlab, z.s.") ;; Banner source with numbers for ANSI CSI SGR (define banner-source "