Magnus Hagander [Fri, 5 Sep 2025 14:13:58 +0000 (16:13 +0200)]
Populate name and email on transfer invoices when picking an account
Magnus Hagander [Thu, 4 Sep 2025 21:33:50 +0000 (23:33 +0200)]
Add support for bulk downloading benefit images and files
This will return a .tar.gz of all the benefit uploaded images and files.
This can be useful for example to archive the contents of a conference
without having to use a token to loop over all files etc.
Magnus Hagander [Thu, 4 Sep 2025 16:31:52 +0000 (18:31 +0200)]
Fix typo
Magnus Hagander [Wed, 3 Sep 2025 19:52:04 +0000 (21:52 +0200)]
When a sponsorship benefit is unclaimed, delete the attached data
If an image or a file is attached to the benefit, it should be deleted.
Magnus Hagander [Wed, 3 Sep 2025 14:43:39 +0000 (16:43 +0200)]
Add support for generic file upload sponsorship benefit class
This allows the upload of a generic file, not just an image. It can be
restricted by mime types if wanted (to for example say only EPS and SVG
files), and will then validate the MIME header. It will *not* attempt
any further validation beyond the MIME header. If no MIME type is
specified on the benefit, then it will accept any uploaded file formats
and leave it entirely to the administrator to handle.
To make this work, also add support to the InlineEncodedStorage to store
metadata, and use that to store the filename so we can reuse it later.
Steve Singer [Wed, 3 Sep 2025 09:28:36 +0000 (11:28 +0200)]
Add CSV exporter for the sessions list to token options
This way a static site (for example) can pull down all sessions and
their data.
Dave Page [Wed, 3 Sep 2025 08:43:01 +0000 (10:43 +0200)]
Support CARD_CASHBACK transactions in Wise
They behave the same as BALANCE_CASHBACK, but are labeled differently.
Magnus Hagander [Fri, 29 Aug 2025 13:15:16 +0000 (15:15 +0200)]
Don't serialize full objects in ConcurrentProtectedModelForm
The idea behind the form is to serialize the state of the data from the
form before it's rendered and then make sure it hasn't changed before
it's submitted, since that would overwrite concurrent changes. The
problem with the implementation is it serialized the entire objects on
the other side of a foreign key or manytomany relationship, which could
be very large if it was for example Speaker records with photos. (One
example found made a simple form over 2.5Mb due to this, which triggered
the oversize form limits)
Update this to instead just serialize the primary key of the object. The
way forms work that *should* always exist at this point otherwise it
cannot be added. And this makes the form a *lot* smaller and faster.
Per bug report from Karen Jex
Magnus Hagander [Tue, 26 Aug 2025 09:49:15 +0000 (11:49 +0200)]
Change stripe payments to do server side redirect
It makes little sense to load a separate page, which loads a third party
javascript, and then executes it inline just to perform a redirect to an
URL that's already in the response from the API.
It does lead to one extra (cheap) stripe api call if the user initates
the payment at stripe, doesn't complete it, and rstarts the process from
the invoice. But in all other (thus, the normal) cases it leads to less
calls, and avoiding to load 3rd party javascript inline in general is a
good thing.
Magnus Hagander [Mon, 25 Aug 2025 10:43:59 +0000 (12:43 +0200)]
Use utcfromtimestamp() when compating bluesky token expiry
This hopefully fixes the strange "token expired" errors we get that seem
to auto recover after 30 minutes.
Magnus Hagander [Wed, 20 Aug 2025 14:11:53 +0000 (16:11 +0200)]
Show slugified version of sponsor display name on dashboard
Fixes #166
Magnus Hagander [Mon, 18 Aug 2025 12:40:49 +0000 (14:40 +0200)]
Fix spelling error
Magnus Hagander [Mon, 18 Aug 2025 10:27:16 +0000 (12:27 +0200)]
Allow the generic account lookup to search by email as well
Magnus Hagander [Mon, 18 Aug 2025 10:24:58 +0000 (12:24 +0200)]
Add "transfer registration" button to dashboard view
Previously one had to go to the specific transfer page to initiate the
transfer, but adding this as an option directly from an existnig
registration makes it easier since that's usually where the user starts
the flow.
Magnus Hagander [Mon, 18 Aug 2025 10:17:10 +0000 (12:17 +0200)]
Make transfer registration use ajax selectize for account names
Loading the transfer registration form actually loaded a list of every
single user account on the system into the HTML, which was very slow.
This is because it doesn't use the generic form interface, which means
the JS to set it up to load async was not present - so we now instead
make an explicit initialization.
Magnus Hagander [Mon, 18 Aug 2025 10:16:59 +0000 (12:16 +0200)]
Add missing import
Magnus Hagander [Mon, 11 Aug 2025 14:26:17 +0000 (16:26 +0200)]
Prevent submitting two talks with the same title on a cfp
Submissions *by the same speaker* should have different titles. A common
case for these duplicates are flaky networks where one hits submit more
than once, and then we really want just one of the two entries to go
through.
Magnus Hagander [Mon, 11 Aug 2025 13:00:00 +0000 (15:00 +0200)]
Fix styling for select-multiple-boxes in talkvote
This needs a more explicit styling to work whent he content gets big.
Magnus Hagander [Mon, 11 Aug 2025 12:43:25 +0000 (14:43 +0200)]
Minor docs wordings update
Magnus Hagander [Mon, 11 Aug 2025 12:43:25 +0000 (14:43 +0200)]
Add ability to do bulk status update on talkvote page
This can be used to for example reject all sessions below a certain
number etc. Can be combined with the existing filtering system to get
reasonably granular control and efficiency.
Fixes #128
Magnus Hagander [Mon, 11 Aug 2025 12:43:25 +0000 (14:43 +0200)]
Layout and styling for the status change dialog
Magnus Hagander [Mon, 11 Aug 2025 12:43:25 +0000 (14:43 +0200)]
Move sessionvote JS and CSS code to separate files
Magnus Hagander [Mon, 11 Aug 2025 12:43:25 +0000 (14:43 +0200)]
Reimplement JS code in talk editor without JQuery
Use native code instead, which speeds it up and removes some
dependencies (much more to go on other pages though).
As a bonus, this fixes #132, which was referencing an incorrect variable
before.
Magnus Hagander [Mon, 11 Aug 2025 12:43:25 +0000 (14:43 +0200)]
Reimplement talkvote page in a more flexible way
This reimplements the talkvote page mostly client-side, making it
possible to do all the filtering without an expensive server roundtrip
(it gets expensive to do this due to the page being big for large
conferences). Also implement column on/off checkboxes.
This also means getting rid of the bootstrap accordion controls, in
favor of native CSS, which as a bonus is faster.
Based on ideas from Karen Jex, and several years of discussions.
Fixes #193, along with many other things
Magnus Hagander [Sun, 10 Aug 2025 12:58:08 +0000 (14:58 +0200)]
Add "check-in message" to registration types
This message will be shown (highlighed) when an attendee is checked in,
and can be used to for example alert the person doing the check-in that
they should validate the registration by checking a student-id.
To do so, the "highlight this field" functionality is moved into the
backend and returned as part of the API, instead of the very limited "if
' NOT ' is present in the field text then highlight it" (used only for
unconfirmed policies) that was previously used.
Fixes #190
Vik Fearing [Wed, 30 Jul 2025 08:38:50 +0000 (10:38 +0200)]
Fully rename Twitter to "Social Media"
Commit
6cad91e just renamed the button on the admin page but failed to change
it throughout the entire codebase. This commit also changes the name in the
documentation as well as on the model, this fixing the entire system.
One thing that this does *not* do is rename the actual code as that seems like
too much of an invasive change.
Steve Singer [Thu, 7 Aug 2025 19:07:49 +0000 (21:07 +0200)]
Include feedback URL QR code on the callforpapers page
This makes it easy for speakers to include the feedback QR
code in their slides
Magnus Hagander [Thu, 31 Jul 2025 12:44:24 +0000 (14:44 +0200)]
Fix tag stripping to return just the string
Magnus Hagander [Thu, 31 Jul 2025 12:40:49 +0000 (14:40 +0200)]
Attempt best-effort on transferwise transactions with no permissions
If a transferwise transaction is sent from another user of their bank,
the id of the transaction belongs to the *other user*, and the recipient
has no permissions to get to the details. So when this happens, do a
best-effort set of details based on what we can find in the activity
(which generally does not contain payment references for example), and
leave it to the user - rather than just ignoring it.
The same seems to happen for direct debit transactions, so process them
the same.
Dave Page [Thu, 31 Jul 2025 12:23:21 +0000 (14:23 +0200)]
Treat wise DIRECT_DEBIT_TRANSACTION as a TRANSFER
They seem to be similar except we don't have permissions to read the
details. But we shouldn't crash on it.
Magnus Hagander [Thu, 31 Jul 2025 11:50:43 +0000 (13:50 +0200)]
Import latest version of pg community auth plugin
This enables v3 authentication
Magnus Hagander [Tue, 15 Jul 2025 10:34:36 +0000 (12:34 +0200)]
Remove "chosen" jquery library
We don't seem to be using this anywhere, and may never have, so let's
not keep it around.
Magnus Hagander [Tue, 15 Jul 2025 10:24:04 +0000 (12:24 +0200)]
Fix django filter for handling multiple parameters
Django template filters can't take more than one parameter, so we have
to split it on comma ourselves. This filter was never used with more
than one parameter, even though it claimed to support it.
Magnus Hagander [Mon, 14 Jul 2025 12:18:39 +0000 (14:18 +0200)]
Fix missing links in uotgoing session notifications
Commit
c2816116 accidentally removed the confirm link for pending and
pending reserve sessions. Add it back!
Magnus Hagander [Thu, 10 Jul 2025 10:29:40 +0000 (12:29 +0200)]
Add missing </div>
Magnus Hagander [Thu, 10 Jul 2025 10:24:17 +0000 (12:24 +0200)]
Remove wrapping <p>
Output of the markdown filter always includes its own <p>.
Magnus Hagander [Thu, 10 Jul 2025 10:24:08 +0000 (12:24 +0200)]
Remove extra <br/>
Copy/paste error
Magnus Hagander [Thu, 10 Jul 2025 10:22:09 +0000 (12:22 +0200)]
Make formatting of filter fields a bit nicer and add headers
Magnus Hagander [Thu, 10 Jul 2025 09:45:20 +0000 (11:45 +0200)]
Allow filtering talk votes page by tag
Magnus Hagander [Thu, 10 Jul 2025 09:27:25 +0000 (11:27 +0200)]
Show speaker company more clearly on talk voting page
Magnus Hagander [Thu, 10 Jul 2025 09:24:27 +0000 (11:24 +0200)]
Display session tags on voting page
Magnus Hagander [Wed, 9 Jul 2025 16:31:37 +0000 (18:31 +0200)]
Remove hardcoded reference to speaker reg type
Magnus Hagander [Wed, 9 Jul 2025 16:17:11 +0000 (18:17 +0200)]
Adapt session notify email based on submission count
Since we *know* if the user has submitted more than one session, we can
easily adapt the notification emails to exclude the part about "if you
have made multiple submissions" if they haven't.
Magnus Hagander [Tue, 8 Jul 2025 16:00:10 +0000 (18:00 +0200)]
Make it possible to add secondary submit buttons to admin forms
Magnus Hagander [Tue, 8 Jul 2025 11:59:58 +0000 (13:59 +0200)]
Add support for auto-booking transferwise cashback
Transferwise re-invented interest and call it cashback (it's the same as
interest..), and we already knew how to classify these transactions. So
instead of leaving them as pending, automatically book them against a
predefined account.
Magnus Hagander [Mon, 7 Jul 2025 10:18:34 +0000 (12:18 +0200)]
Show more information about pending registrations
In particular, make it possible to show the bulk payment invoice
directly from the registration page, if one exists.
Magnus Hagander [Wed, 2 Jul 2025 13:01:54 +0000 (15:01 +0200)]
Add django admin view for transferwise payouts
Magnus Hagander [Wed, 2 Jul 2025 12:53:32 +0000 (14:53 +0200)]
Attempt to make transferwise payouts half-complete
Due to the new transferwise restrictions, creating payouts would crash.
This change attempts to make it complete the parts that work and leave
the rest for a manual approval in the transferwise web interface,
hopefully keeping the rest of the system working.
When half way complete, send a notification to the user to go complete
it manually.
Magnus Hagander [Tue, 24 Jun 2025 13:11:47 +0000 (15:11 +0200)]
Enforce maximum height of signwell fields
Signwell have implemented a size limitation that no fields can have a
height bigger than 34px. Unfortunately, their own GUI editor allows the
creation of fields that are larger than this, and once one has done that
they can no longer be loaded for editing or sent through the API (it
appears the limitation is only in the public API and not their internal
ones).
So to make signing work at all, when editing a contract enforce the
limit to 34px (with a warning). Things might not look very nice anymore
but they should at least work.
Support case has been opened with Signwell to see if this was actually
intentional (the max size in the UI editor appears to be 74), and if so
if they are planning to align the UI with the API. This commit goes in
pending a possible change on their side and we can revert if if we end
up not needing it permanently.
Magnus Hagander [Mon, 16 Jun 2025 12:46:38 +0000 (14:46 +0200)]
Negate *all* wise transactions based on "Sent by ..." in text
Turns out we need to do this both for primary ands secondary amounts
(which makes sense). Clarify the comment a bit further after more
research that still shows Wise API returns that incoming payments are
actually outgoing. Sigh.
Magnus Hagander [Mon, 16 Jun 2025 12:10:13 +0000 (14:10 +0200)]
Include "balance cashback" as text on transactions
It's just for display and they're easier to identify this way.
Magnus Hagander [Mon, 16 Jun 2025 12:07:45 +0000 (14:07 +0200)]
Show the actual value of the sender, not the name of the variable...
Magnus Hagander [Mon, 16 Jun 2025 12:07:18 +0000 (14:07 +0200)]
Show transaction sender if there is no description
Magnus Hagander [Fri, 13 Jun 2025 09:01:33 +0000 (11:01 +0200)]
Fix accidental reference to old style transferwise API
Clearly missed one field in the update, that was still referencing the
old API structure.
Magnus Hagander [Wed, 4 Jun 2025 13:45:19 +0000 (15:45 +0200)]
New transferwise APIs no longer allow downloading statements
So remove the scheduled job that handles them, as well as the database
table that stores them.
Magnus Hagander [Tue, 3 Jun 2025 13:17:58 +0000 (15:17 +0200)]
Update transferwise integration for new APIs
Unfortunately, Wise decided one is no longer allowed to access
information about ones own transactions when in Europe, unless
registered as a European payment provider. This is of course stupid, but
what can we do.
Attempt to re-implement the transferwise support over their new
activities API.
Unfortunately there are likely bugs still hiding around, since for
example amounts are now returned in some self-invented html-like markup
like '<positive> 2,000 EUR</positive>' instead of as a number like
before (and sometimes they are returned as <positive> with a negative
number inside). But we have to start somewhere...
Unfortunately, it seems there's a permanent loss of funcionality in that
the account number (IBAN) of the sender is no longer available anywhere
in the API. This means that in practice, automatic refunds of transfers
are no longer possible. (This information appears to also no longer be
available on their website). We keep the refund functionality itself in
the system for now, as we might want to extend it later with the ability
to refund while manually specifying an IBAN number.
Magnus Hagander [Wed, 11 Jun 2025 13:54:42 +0000 (15:54 +0200)]
Add support for targeting cross-conference emails at volunteers
Magnus Hagander [Mon, 9 Jun 2025 13:51:12 +0000 (15:51 +0200)]
Fix sponsor display and warnings for explicit-contract sponsors
Make sure the warning is actually shown in all cases, so one doesn't
accidentally click through a sponsor that's actually waiting for a
contract.
Magnus Hagander [Tue, 3 Jun 2025 13:38:52 +0000 (15:38 +0200)]
Add support for sponsors requesting explicit contract at click-through levels
Click-through contracts makes it easier for most, but some sponsor
organisations require an actual contract at these levels as well. To
handle this, add an option during contract/address verification to
request an explicit contract, which can then be either manual or
digital, and will both prevent the clickthrough contract and invoice to
be sent until thsi contract has been completed.
Magnus Hagander [Mon, 2 Jun 2025 09:34:15 +0000 (11:34 +0200)]
Don't crash on misspelled http/https in sponsor signup
Instead, give a proper error message.
Magnus Hagander [Wed, 28 May 2025 08:12:51 +0000 (10:12 +0200)]
When using digital contracts, show signing time for pending sponsors
Magnus Hagander [Tue, 27 May 2025 12:35:14 +0000 (14:35 +0200)]
Fix incorrect remaining mentions of "instant buy" levels
Magnus Hagander [Tue, 27 May 2025 12:29:10 +0000 (14:29 +0200)]
Properly remove "confirm preview" checkbox on broken uploads
When an image uploaded as a sponsor benefit was broken (unparseable), we
would incorrectly still show the "confirm preview looks ok" checkbox
below the error message. If the user confirmed that the preview (which
was non-existant and replaced with an error message) looked OK, we would
store an empty image in the database and consider the benefit OK.
Instead, we're of course not supposed to show the preview checkbox at
all if the image uploaded is broken.
Magnus Hagander [Tue, 27 May 2025 07:39:42 +0000 (09:39 +0200)]
Don't add click-though text to non-clickthrough contracts
If the clickthrough fields were added to a contract, we'd include the
text even if the level wasn't clickthrough. This can happen when fields
are copied between contracts, thereby ending up with clickthrough fields
on non-clickthrough contracts.
Magnus Hagander [Mon, 26 May 2025 14:25:07 +0000 (16:25 +0200)]
Include link to waitlist management in admin notification
Fixes #183
Magnus Hagander [Fri, 23 May 2025 13:29:57 +0000 (15:29 +0200)]
Sync dates for reg and sponsorship open form with list
In the list of open sponsorships we stopped listing sponsors once the
conference was started. But if one had saved away the URL for the signup
form it still worked. Make those two be in sync.
For registrations there were some places that would still list it and
others wouldn't, but the form would still work. So make the same fix
here, except trigger it on the *end* date of the conference so walk-up
registrations still work.
Magnus Hagander [Wed, 21 May 2025 16:05:11 +0000 (18:05 +0200)]
Use secret based link to sponsor-vouchers invoice on dashboard
There can be multiple managers of a sponsorship, so for all of them to
be able to view (and pay) the invoice, we need to use the secret-url
link rather tha th eone expecting the user to be the same one as the one
who created it.
Spotted by Cornelia Biacsics
Magnus Hagander [Wed, 21 May 2025 15:41:43 +0000 (17:41 +0200)]
Don't try to do feedback on sessions without start time
These sessions aren't listed in the session list or schedule, but if
they are linked to externally we would allow them and then crash later
when checking the starttime. So instead of crashing, just disallow the
feedback form on sessions that shouldn't have it.
Magnus Hagander [Mon, 19 May 2025 16:40:12 +0000 (18:40 +0200)]
Update LinkedIN API version
Linkedin killed off 202405 as an API version. Try a blind update to
202505 and hope they didn't change any of the (very few) API calls we
use :)
Magnus Hagander [Thu, 15 May 2025 15:58:40 +0000 (17:58 +0200)]
Add one more sentence about using third party digital signatures
Magnus Hagander [Thu, 15 May 2025 15:53:00 +0000 (17:53 +0200)]
Fix typo
Magnus Hagander [Thu, 15 May 2025 15:24:43 +0000 (17:24 +0200)]
Update docs for click-through contracts
Magnus Hagander [Fri, 28 Feb 2025 15:59:03 +0000 (16:59 +0100)]
Replace "instantbuy" setting on sponsorship levels with contract levels
This allows explicit specification of "No contract, Click-through
contract or Full contract", instead of the definitely-hard-to-grok
combination of whether a contract existed and if the checkbox was set or
not.
Magnus Hagander [Wed, 26 Feb 2025 17:18:42 +0000 (18:18 +0100)]
Implement better handling of click-through contracts
This generates an actual contract for click-through ("instantbuy with
contract") levels, replacing the signature with a static text saying
"Click-through agreement".
Magnus Hagander [Mon, 28 Apr 2025 20:52:00 +0000 (22:52 +0200)]
Use proper timezone when rendering tentative schedule slots
In particular, when publishing a schedule we'd use the server default
timezone when showing the difference (reported in #180) and also when adding
new sessions.
Fixes #180
David E. Wheeler [Mon, 28 Apr 2025 20:41:32 +0000 (22:41 +0200)]
Fix some CSS issues on Safari
Fixes #176.
Kaiting Chen [Thu, 24 Apr 2025 21:20:07 +0000 (17:20 -0400)]
Fix bug in calculation of circle location
Magnus Hagander [Wed, 23 Apr 2025 18:15:42 +0000 (20:15 +0200)]
Add conference date to prepaid vouchers invoice
Do this by removing the word "prepaid" from the title of the invoice to
make it more likely to fit. Instead, add it to the individual invoice
rows where there should be more space available.
Magnus Hagander [Tue, 15 Apr 2025 12:48:01 +0000 (14:48 +0200)]
Set expiresAt on Adyen payment links
The default expiry is 24 hours. That means that if an invoice was due to
be canceled in say 4 hours, and the user clicked the payment link they
would be able to use that one past when the invoice was actually
canceled, thereby causing errors. This happened at least once, where the
user forwarded the Adyen link (instead of the invoice link) to the
person who was supposed to do the payment, and that person made the
payment after the invoice was expired.
So, if the invoice is set to be canceled in <24 hours, we set the
expiresAt flag when creating the payment link, so Adyen will reject that
payment.
Reviewed-By: Daniel Gustafsson
Magnus Hagander [Wed, 26 Feb 2025 15:32:10 +0000 (16:32 +0100)]
Make it possible for a sponsor to view signed contract
Once a contract is digitally sign we normally (unless something goes
wrong) store a copy of the PDF of the signed contract. This was already
visible on the admin page, but there is no reason not to let the sponsor
view their own contract as well.
Fixes #173
Magnus Hagander [Fri, 11 Apr 2025 08:49:09 +0000 (10:49 +0200)]
When deciding to put bank info on invoices, only look at active methods
If a payment method that had bank info on it was added to an invoice, we
would include the bank data on the PDF even if the method was not marked
as active. It would still not show on the webpage of available methods,
but if someone forwarded the PDF alone for payment, they would get the
bank info for an inactive method. So fix that.
Magnus Hagander [Tue, 11 Mar 2025 13:03:48 +0000 (14:03 +0100)]
Add "Potential registrations" to waitlist status dashboard
This is the number of registrations that would be completed if *all*
entries on the waitlist are offered and accepted. This can be helpful
when projecting venue size increasing.
Magnus Hagander [Tue, 4 Mar 2025 14:54:42 +0000 (15:54 +0100)]
Log to registration pages when reminders are sent
When we send "you haven't paid yet" reminders, log it to the
registration page so we can see when someone was last reminded.
Magnus Hagander [Mon, 10 Mar 2025 00:20:14 +0000 (01:20 +0100)]
Don't crash rendering XML schedule if room is missing
We normally don't have session on the schedule with no room, but if we
do the XML schedule still shouldn't crash. (regular schedule and ical
were fine..)
Magnus Hagander [Fri, 28 Feb 2025 15:59:55 +0000 (16:59 +0100)]
Attempt to fix the bluesky profile link
This was clearly not quite completed whent he Bluesky support was added.
Reported by Andreas Scherbaum
Magnus Hagander [Fri, 28 Feb 2025 13:21:00 +0000 (14:21 +0100)]
Write the body of a failed transferwise request to stderr
Vik Fearing [Wed, 26 Feb 2025 13:18:13 +0000 (14:18 +0100)]
fix typo
Magnus Hagander [Thu, 20 Feb 2025 20:27:21 +0000 (21:27 +0100)]
Don't hardcode commandline to deploystatic in docker image
Magnus Hagander [Thu, 20 Feb 2025 18:54:11 +0000 (19:54 +0100)]
Add github action to build deploystatic container
Builds the container and publishes it to the github container
registry. Also schedules a rebuild once a month to pick up updates to
the base packages.
Magnus Hagander [Thu, 20 Feb 2025 17:46:09 +0000 (18:46 +0100)]
Add proper facets for hashtags when posting to bluesky
Magnus Hagander [Thu, 20 Feb 2025 16:49:09 +0000 (17:49 +0100)]
Decode URL as UTF-8
Apparently this is done automtatically in some versions of requests, and
not others.
Magnus Hagander [Thu, 20 Feb 2025 16:38:01 +0000 (17:38 +0100)]
Implement "facet shortering" for bluesky posting
Turns out bluesky doesn't actually shorten URLs if they are posted
through the API even if they have a matching "facet", and the example
code they have ignores this. So we have to implement our own that
basically shortens the "inside" of a facet to an appropriate length.
We'll re-use the twitter-url-shortener-length to make things predictable
between providers.
Magnus Hagander [Thu, 20 Feb 2025 14:32:35 +0000 (15:32 +0100)]
Give more detailed error message when failing to post to bluesky
Magnus Hagander [Wed, 19 Feb 2025 18:29:48 +0000 (19:29 +0100)]
Add cli command to export a set of invoices or receipts by id
Andreas Scherbaum [Mon, 17 Feb 2025 20:35:32 +0000 (21:35 +0100)]
s/regsitered/registered/
Along the way fix some minor issues
Magnus Hagander [Wed, 5 Feb 2025 15:24:37 +0000 (16:24 +0100)]
Show which track a session is accepted into, if available
Noted by Melanie Plageman
Magnus Hagander [Wed, 29 Jan 2025 07:17:27 +0000 (08:17 +0100)]
Properly list pronouns as a dynamic field
Somehow it ended up with half the listing in dynamic and half in static,
which sometimes crashes.
Magnus Hagander [Fri, 24 Jan 2025 16:40:43 +0000 (17:40 +0100)]
Add missing parameter in function call
Vik Fearing [Fri, 24 Jan 2025 10:50:21 +0000 (11:50 +0100)]
Rename "Twitter post queue"
This hasn't been accurate since other social media providers were added, and
now with the directive from the Board that we no longer use X/Twitter, it is
even less accurate.
Magnus Hagander [Thu, 23 Jan 2025 19:00:53 +0000 (20:00 +0100)]
Add special registration type that includes cfp team members
Since we have the list of actual user accounts used for talkvoters, we
can trivially create a special registration type that lets those people
register automatically, without having to deal with vouchers etc.