[06:22:19] (03CR) 10CI reject: [V: 04-1] Localisation updates from https://translatewiki.net. [extensions/DonationInterface] (REL1_41) - 10https://gerrit.wikimedia.org/r/1007085 (owner: 10L10n-bot) [06:37:49] 03Fundraising Tech - Chaos Crew, 06Fundraising-Backlog: Change URL in WMF Recurring Failure template - https://phabricator.wikimedia.org/T354185#9582421 (10MSuijkerbuijk_WMF) Thanks @jgleeson I understand now. Tested and working for me. [12:20:55] (03CR) 10Damilare Adedoyin: [C: 03+2] Update django-banner-stats build [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1007003 (owner: 10Jgleeson) [12:21:28] (03CR) 10Damilare Adedoyin: [V: 03+2 C: 03+2] Update django-banner-stats build [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1007003 (owner: 10Jgleeson) [12:27:01] thanks damilare ! [12:27:22] np [12:28:19] I'm reviewing the other patches in the chain to get them all merged into dev [12:29:13] thank you! [12:30:38] 03Fundraising Tech - Chaos Crew, 06Fundraising-Backlog: Change URL in WMF Recurring Failure template - https://phabricator.wikimedia.org/T354185#9583289 (10jgleeson) Awesome! thanks [12:33:07] 03Fundraising Tech - Chaos Crew, 06Fundraising-Backlog: Change URL in WMF Recurring Failure template - https://phabricator.wikimedia.org/T354185#9583296 (10jgleeson) a:03jgleeson [12:33:52] 03Fundraising Tech - Chaos Crew, 06Fundraising-Backlog: Investigate whether we can use mysql EXPLAIN checks to prevent runaway dedupe queries - https://phabricator.wikimedia.org/T355807#9583313 (10jgleeson) a:03jgleeson [12:34:43] thanks for approving the merge request also. i can speak to rel-eng about getting that published [12:43:30] (03CR) 10Damilare Adedoyin: [C: 03+2] Add scripts for managing contributon-tracking sequence ID [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1005849 (https://phabricator.wikimedia.org/T358267) (owner: 10Jgleeson) [12:43:32] (03CR) 10Damilare Adedoyin: [V: 03+2 C: 03+2] Add scripts for managing contributon-tracking sequence ID [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1005849 (https://phabricator.wikimedia.org/T358267) (owner: 10Jgleeson) [12:43:38] (03CR) 10Damilare Adedoyin: [C: 03+2] "Just asked a small clarifying questing" [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1004780 (owner: 10Jgleeson) [12:44:19] thanks damilare. I don't see the question [12:45:38] sorry I initially had composed a question inline but I found the answer in your commit. Forgot to delete the response at the top also [12:45:50] ahhh np [12:46:01] (03CR) 10Damilare Adedoyin: [V: 03+2 C: 03+2] Update repo for docker-pkg to anon http. [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1004780 (owner: 10Jgleeson) [12:47:07] I'm having a small challenge with consuming items in the queue, don't think it has anything to do with the current patches [12:47:28] when I run the consume queue script it runs but the queues still has the items in it [12:47:38] oh rly [12:47:44] lemme try on my mac [12:48:50] (03CR) 10Damilare Adedoyin: "Not sure what this xml file does, please can we have some more details and maybe test instructions on this. Thanks!" [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1004776 (owner: 10Jgleeson) [12:49:15] yh I'm not sure why [12:51:20] so I was just able to import a recurring donation into civicrm [12:52:20] I did have to install smashpig as it errored out at first due to it missing. that civicrm-consume scripts seems to consume stuff outside of civi also so we might want to rename it [12:52:25] ahh okk [12:52:39] I just realised we are discarding the logs [12:52:56] +1 to renaming [12:53:13] oh yeah ejegg|away added some tweaks to quiet down the debug noise [12:53:20] some tail magic [12:54:06] yh that's it, apparently my civi container wasn't running [12:54:19] ah [12:54:40] the error log was discarded with the debug noise [12:54:48] ohhh I see [12:54:55] that's not good [12:57:56] damilare: so the xdebug run config is the thing that phpstorm uses to manage the run config behind the scenes. I exported my own to that directory to make it easier for people to set up debugging locally [12:58:13] if you just open that file in phpstorm, it should say somewhere "add to run config" [12:58:43] ahh ok, lemme try [12:58:49] and then it will create a debug config for you and you just have to point that to your local server [12:59:02] I could show you on a call too if that helps [13:02:32] ohh hey that worked [13:03:26] It brought up a command that says "Open Run/Debug Configurations" [13:03:52] Clicking on that and then clicking Ok added it to the configuration [13:04:05] awesome [13:04:16] Would be nice if there was a config to automatically create the local server also [13:04:34] yeah it doesn't seem to store that in config annoying [13:04:37] ly* [13:04:42] it just points to it [13:05:11] cool, this is definitely good to have. One less thing to worry about. [13:05:38] yeah and it saves us having to set it up all from scratch each time [13:05:55] and avoids the "it works for me" ha [13:06:15] yep definitely [13:07:01] just submitted and merged all the changes [13:07:24] was hoping it'd be a bit more dramatic on IRC with all the notifications [13:07:50] seems the gerrit integration is down [13:07:57] brb [13:08:07] ah is it [13:19:03] thanks for reviewing and merging all those patches damilare|brb ! [13:48:49] damilare|brb: I just went through some of the run config on mac and I can see the config is different when setting up the local cli interpreter with docker services as I had to select my mac-specific docker desktop socket connection so I don't know if we'd want to export that even if we could as we'd run into OS wars ha [13:49:07] I might add some screenshots and setup steps to the read for that [13:49:17] as it is a bit fiddler on mac [13:50:28] fiddlier* [13:50:36] no fiddles needed [13:56:46] fr-tech, today's album recommendation is Armik - Gypsy Flame. A really great Flamenco/Spanish guitar album. https://music.youtube.com/playlist?list=OLAK5uy_nVJl7fIuxID7yXKZPogQieWSbG9812LcU [14:20:37] (03PS2) 10Ejegg: Add adyen ACH link [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1006193 (https://phabricator.wikimedia.org/T324517) (owner: 10Wfan) [14:20:39] (03CR) 10Ejegg: [V: 03+2 C: 03+2] Add adyen ACH link [wikimedia/fundraising/dev] - 10https://gerrit.wikimedia.org/r/1006193 (https://phabricator.wikimedia.org/T324517) (owner: 10Wfan) [14:22:32] 06Fundraising-Backlog: https://community-crm.wmcloud.org/ is down - https://phabricator.wikimedia.org/T358662#9583727 (10fnegri) The server was up, but the `mysql` process was down, it was killed with an OOM error: ` root@community-crm:~# systemctl status mysql ● mariadb.service - MariaDB 10.5.23 database server... [14:26:28] Dev's nightmare: AI generated bug reports - https://www.theregister.com/2024/01/04/aiassisted_bug_reports_make_developers/ [14:39:19] ughh [14:39:41] I had no idea bamboleo meant sway [14:39:43] https://en.wikipedia.org/wiki/Bambol%C3%A9o#:~:text=The%20word%20bamboleo%20means%20%22wobble,live%20my%20life%20this%20way.%22 [14:57:48] (03CR) 10Ejegg: [C: 04-1] "Mostly looks good! Just got some questions in line" [wikimedia/fundraising/SmashPig] - 10https://gerrit.wikimedia.org/r/1006476 (https://phabricator.wikimedia.org/T324517) (owner: 10Wfan) [15:17:06] (03PS3) 10Ejegg: Extract getConversionRate [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005181 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:17:44] (03CR) 10Ejegg: [C: 03+2] "Looks good, maybe we can use the getter for the original currency in the exception message in a follow-on patch" [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005181 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:26:14] (03PS8) 10Ejegg: Move converstion rate handling to getters [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005182 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:27:06] (03CR) 10Ejegg: [C: 03+2] "Thanks for making that rounding consistent! This looks like an OK change since the exchange rates are cached and we don't need to make an " [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005182 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:29:08] (03PS8) 10Ejegg: Simplify setting of amounts [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005183 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:29:15] (03CR) 10Ejegg: [C: 03+2] Simplify setting of amounts [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005183 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:29:49] 06Fundraising-Backlog, 10FR-donorservices: Civi "thank you letter summary" feature request - https://phabricator.wikimedia.org/T299096#9584131 (10SHust) [15:30:04] (03PS9) 10Ejegg: Simplify early return check on money [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005184 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:30:30] (03CR) 10Ejegg: [C: 03+2] "Nice, also gets rid of that 'or' and 'and' syntax" [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005184 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:34:16] 06Fundraising-Backlog, 10FR-donorservices: Civi "thank you letter summary" feature request - https://phabricator.wikimedia.org/T299096#9584186 (10SHust) [15:39:03] (03Merged) 10jenkins-bot: Extract getConversionRate [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005181 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:45:19] (03Merged) 10jenkins-bot: Move converstion rate handling to getters [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005182 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:45:35] (03PS10) 10Ejegg: Fold the amount wrangling back into the parent [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005185 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:45:42] (03CR) 10Ejegg: [C: 03+2] Fold the amount wrangling back into the parent [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005185 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:47:56] (03Merged) 10jenkins-bot: Simplify setting of amounts [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005183 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:48:20] (03PS1) 10Ejegg: Use getter for currency in exception message [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007365 (https://phabricator.wikimedia.org/T357471) [15:48:35] (03Merged) 10jenkins-bot: Simplify early return check on money [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005184 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [15:51:30] (03CR) 10Ejegg: [C: 04-1] "Sounds like we may have to map from two fields, and that 'PAC Match' and 'User Donation' are separate values. See https://phabricator.wiki" [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1006599 (https://phabricator.wikimedia.org/T354911) (owner: 10Eileen) [15:52:46] jgleeson|skrun: yh I wasn't looking to go that deep, just the path mappings and port selections. [16:04:18] (03Merged) 10jenkins-bot: Fold the amount wrangling back into the parent [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1005185 (https://phabricator.wikimedia.org/T357471) (owner: 10Eileen) [16:12:22] 06Fundraising-Backlog, 10fundraising-tech-ops, 10FR-Email: Update Acoustic Unsubscribe landing page domain to be served by a secure wikimedia.org domain - https://phabricator.wikimedia.org/T336000#9584310 (10greg) SSL cert finally procured: {T346394} [16:34:18] damilare: sorry didnt finish last night besides the cancels but just updated the autorescue spreadsheet of the ones that I settled, I updated all their statuses too [16:35:07] awesome! [16:37:02] so we are good to go for the next round of tests [16:37:29] yeah i think another 20 or so? [16:37:44] make sense to me [16:43:22] damilare: do you think we still need a separate script? https://phabricator.wikimedia.org/T358627 [16:44:31] yh so I'm not sure, the script I had in mind would help when we have a ton of authorised but not captured rescued [16:44:45] so we won't have to do a manual update on each row [16:47:08] And it'd basically follow the process, thereby creating the contribution and linking to the recurring. [16:47:36] but I don't think we need that for now [16:48:14] yeah they should come in on the audit for now [16:48:27] but yeah if we had a huge chunk that needed to be done I could see a need [16:50:17] yhh would the audit link them up too or would it be reflected as an individual contribution, it'd be great if it does [16:52:07] it should be smart enough to link them up [16:54:35] awesome, in that case we may not need that script as the ApprovePayment script also allows for bulk captures [17:02:15] (03CR) 10Ejegg: "huh, that leaves it with a confusing prefix then :(" [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1003517 (https://phabricator.wikimedia.org/T346814) (owner: 10Wfan) [17:22:47] (03CR) 10Wfan: Add adyen ACH to smashpig (034 comments) [wikimedia/fundraising/SmashPig] - 10https://gerrit.wikimedia.org/r/1006476 (https://phabricator.wikimedia.org/T324517) (owner: 10Wfan) [18:35:50] 06Fundraising-Backlog, 10fundraising-tech-ops, 10FR-Email: Update Acoustic Unsubscribe landing page domain to be served by a secure wikimedia.org domain - https://phabricator.wikimedia.org/T336000#9585011 (10EWilfong_WMF) I don't have access to the referenced task. Could you please add me or otherwise give m... [19:02:02] 06Fundraising-Backlog, 10fundraising-tech-ops, 10FR-Email: Update Acoustic Unsubscribe landing page domain to be served by a secure wikimedia.org domain - https://phabricator.wikimedia.org/T336000#9585149 (10Dwisehaupt) Cert info sent via email. [19:32:31] 03Fundraising Tech - Chaos Crew, 06Fundraising-Backlog, 10FR-donorservices: Deduper causing deadlocks - https://phabricator.wikimedia.org/T355677#9585278 (10Dwisehaupt) All fr-tech devs have been granted reader access to the project. This does not apply permissions needed for the transition to the prod vps. [19:33:21] 06Fundraising-Backlog: https://community-crm.wmcloud.org/ is down - https://phabricator.wikimedia.org/T358662#9585281 (10Dwisehaupt) All fr-tech devs have been granted reader access to the project. This does not apply permissions needed for the transition to the prod vps. [19:34:15] 06Fundraising-Backlog: https://community-crm.wmcloud.org/ is down - https://phabricator.wikimedia.org/T358662#9585283 (10Dwisehaupt) @fnegri Thanks for stepping in to restart mysql on this host. [19:38:30] (03PS5) 10Wfan: Add adyen ACH to smashpig [wikimedia/fundraising/SmashPig] - 10https://gerrit.wikimedia.org/r/1006476 (https://phabricator.wikimedia.org/T324517) [20:06:37] 06Fundraising-Backlog, 10fundraising-tech-ops, 10FR-Email: Update Acoustic Unsubscribe landing page domain to be served by a secure wikimedia.org domain - https://phabricator.wikimedia.org/T336000#9585384 (10EWilfong_WMF) Received, thank you. I have provided the certificate info to Acoustic and will provide... [20:27:49] 03Fundraising Sprint: canOfWorms(🪱), 06Fundraising-Backlog, 10FR-Email, 10FR-email-preferences, and 2 others: Make unsubscribe work in EmailPreferences, delete Unsub extension - https://phabricator.wikimedia.org/T223330#9585430 (10AnnWF) Got the response from @DBu-WMF that we would use the existing email p... [20:39:12] (03CR) 10Eileen: [C: 03+2] "OH let's do this - although my goal is to get rid of that whole function" [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1006964 (owner: 10Ejegg) [20:43:44] (03PS5) 10Eileen: Generic WMFQueue:consume() [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1002753 (https://phabricator.wikimedia.org/T356115) [21:04:14] i'm wondering how you use civiproxy now [21:04:19] well I was just confused going to that form & seeing a bit notice about paypal not working & then also having the button [21:04:33] i think paypal works if you're not on tor [21:04:43] arguably, maybe the pop up should show up only if we find you're using tor [21:04:55] but then, uh... we could just not show the button at all then ;) [21:05:01] so for civiproxy we use it for our email preferences centre- basically a form to edit your details that you access with a checksum [21:05:02] thing is, donate.torproject.org is a static website [21:05:09] ooh nice [21:05:23] we have https://newsletter.torproject.org/ for that [21:05:28] another part of the middleware [21:05:38] we don't submit direct to the CiviCRM from that form - but we do populate it from CiviCRM [21:05:40] i guess we could scrap that in favor of civiproxy, that would be NICE [21:06:00] oh, so you still need a middleware? [21:06:14] Well because we have our queue system we queue everything [21:06:37] so where does civiproxy lives? [21:06:42] also - performance ... [21:06:44] sorry for my billion and a half question, it's a lot right now :) [21:06:45] yeah for sure [21:07:21] well Jeff_Green or dwisehaupt know better where it is installed but I guess basically it's outside the firewall [21:07:43] it restricts the apis that can be accessed & maps the api key [21:09:20] hmm.. i guess i need to read more about how civiproxy works [21:10:07] quite a few sites - esp in Netherlands, Germany use CiviProxy direct from the internet [21:10:41] but civiproxy doesn't talk to civi? [21:12:05] to ask this another way: does civiproxy have a privileged access to the civicrm backend, or does it communicate over the redis queue as well? [21:12:07] so basically your external form would send api calls to civiproxy - which vets them & passes them on to civi [21:12:52] right, so civiproxy does have api access to civi, kind of a firewall bypass [21:13:07] yeah - civiproxy is installed on an ip address that is allowed to https to the civi server [21:13:34] gotcha [21:13:37] makes sense! [21:13:40] & it know the site key & api key for the civi server [21:13:45] yeah of course [21:13:54] but civiproxy is configured to only permit specific api calls [21:13:58] can civi have scoped tokens? [21:14:06] like, what happens if there's a civiproxy compromise? [21:14:13] scoped tokens sounds like the AuthX jwt [21:14:50] ejegg|food: is off getting food but he worked on that in this PR https://github.com/systopia/CiviProxy/pull/67 [21:16:10] https://docs.civicrm.org/civiproxy/en/latest/configuration/ [21:16:26] iirc we aren't exposing civiproxy directly to the outside world [21:18:31] hhmm... how is civiproxy exposed then? [21:19:10] it's running on the same application server as civicrm does, and it only accepts requests from the "frdata" server [21:20:00] I'm a little rusty on what happens on the frdata server, I think there's a layer of code there that's formulating the backend requests to civicproxy [21:20:38] yep - that layer is part of civiproxy [21:21:17] okay, so it's more a replacement to the redis queue thing than a frontend form processor [21:21:30] in fact we only use that part of civiproxy - there is also an extension you can install but we don't install it [21:21:58] hmm - well we use it to allow data to go OUT from Civi [21:22:07] oh [21:22:08] *out* [21:22:14] but other sites use it both ways [21:22:17] eileen: so the part that's on frdata in the donorwiki codebase? [21:22:20] * anarcat checks notes [21:23:10] * anarcat confused :) [21:23:11] Jeff_Green: the donorwiki bit just makes rest API calls to civiproxy [21:23:25] i thought civiproxy was taking API requests *in* and passing them to civicrm if it was allowed [21:23:27] ah yeah, I see it extensions/DonationInterface/extras/civiproxy/CiviproxyConnect.php -- right? [21:23:27] civiproxy I think is installed on the same box as civi but listens on a different port [21:23:31] how is it used on the way *out*? [21:23:45] to pre-populate the donor preferences form [21:23:48] yeap anarcat it just takes the API requests IN and then replies [21:23:55] oh okay, that makes sense ejegg [21:24:15] eileen: right, the donor prefs form makes API requests to get that data to prepopulate [21:24:19] okay, so there's something in donorwiki that is allowed to talk to civiproxy [21:24:26] right okay [21:24:39] the good thing about the queues approach is recoverability [21:24:58] so we COULD have that donor prefs form then make API calls via civiproxy to directly update the db [21:25:33] but as eileen says instead it sends messages to a queue, and those messages are processed by a batch job [21:25:36] but because we would never give up our queues approach for perfomance reasons it makes sense to do as a queue [21:25:43] yeah of course [21:25:44] that makes sense [21:36:40] * damilare eavesdropping [21:38:42] * anarcat too :p [21:38:48] well, i had a lot of answers to my questions [21:38:59] i find it really interesting that we both ended up using redis as a middleware [21:39:13] i think i might start looking at using civiproxy to replace our mailing list registration forms [21:39:32] i'm not sure i can escape our django rewrite, as there's no way we'll be installing mediawiki to handle donations :p [21:39:45] but we might use coworker or something to handle redis on the other end, or something [21:39:51] i wonder if there's something more standard there [21:50:56] yeah coworker doesn't replace the queues - it kinda replaces the cron configuration (within limits) [21:51:07] i see [21:51:39] so far we are mostly using if for imports & working through some logging issues with it [22:14:21] (03PS2) 10Ejegg: build: Updating npm dependencies [extensions/DonationInterface] (REL1_41) - 10https://gerrit.wikimedia.org/r/996973 (owner: 10Libraryupgrader) [22:14:25] (03CR) 10Ejegg: [V: 03+2] build: Updating npm dependencies [extensions/DonationInterface] (REL1_41) - 10https://gerrit.wikimedia.org/r/996973 (owner: 10Libraryupgrader) [22:25:53] (03PS1) 10Eileen: Remove call to fredge prep data - it does nothing [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007442 (https://phabricator.wikimedia.org/T357469) [22:27:34] (03CR) 10Ejegg: [C: 03+2] Remove call to fredge prep data - it does nothing [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007442 (https://phabricator.wikimedia.org/T357469) (owner: 10Eileen) [22:46:18] (03Merged) 10jenkins-bot: Remove call to fredge prep data - it does nothing [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007442 (https://phabricator.wikimedia.org/T357469) (owner: 10Eileen) [23:04:49] (03PS1) 10Eileen: Move data wranging for fredge to extension [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007451 (https://phabricator.wikimedia.org/T357469) [23:08:22] (03PS2) 10Eileen: Move data wranging for fredge to extension [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007451 (https://phabricator.wikimedia.org/T357469) [23:11:25] 03Fundraising Sprint: canOfWorms(🪱), 06Fundraising-Backlog: Test Adyen Auto-Rescue - https://phabricator.wikimedia.org/T357458#9585780 (10Cstone) Ran another set of test transactions through today results are in the same spreadsheet: https://docs.google.com/spreadsheets/d/1renXdXB2eDMh-pelEHPoQgI9kMvi764hkI6a... [23:37:15] (03CR) 10Eileen: [C: 03+2] Use getter for currency in exception message [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007365 (https://phabricator.wikimedia.org/T357471) (owner: 10Ejegg) [23:38:41] this is a pretty minor patch to the test class - https://gerrit.wikimedia.org/r/c/wikimedia/fundraising/crm/+/1004795 [23:39:16] (03Abandoned) 10Eileen: Code simplification [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1003521 (https://phabricator.wikimedia.org/T357469) (owner: 10Eileen) [23:55:44] (03Merged) 10jenkins-bot: Use getter for currency in exception message [wikimedia/fundraising/crm] - 10https://gerrit.wikimedia.org/r/1007365 (https://phabricator.wikimedia.org/T357471) (owner: 10Ejegg)