Magnus Hagander [Wed, 19 Jun 2024 15:21:06 +0000 (17:21 +0200)]
Make deadlines even more clear on the sponsor dashboard
Bold, and write it in two places. Also, specify the exact timezone.
Magnus Hagander [Wed, 19 Jun 2024 14:51:47 +0000 (16:51 +0200)]
Trap exceptions when posting to social media
The providers themselves would catch some exceptions and turn them into
proper error messages, but for the cases where they don't, we want the
loop in the sender to do so for us and just log the exception message.
Magnus Hagander [Tue, 18 Jun 2024 15:22:51 +0000 (17:22 +0200)]
Allow re-sending contracts to instant buy levels
These levels by definitoin don't need a contract, but some sponsors
still want it...
Magnus Hagander [Sun, 16 Jun 2024 14:25:24 +0000 (16:25 +0200)]
Make it possible to have some benefits not included in token data
Magnus Hagander [Sun, 16 Jun 2024 14:17:51 +0000 (16:17 +0200)]
Fix typo
Magnus Hagander [Sun, 16 Jun 2024 13:51:45 +0000 (15:51 +0200)]
Render linebreaks in multi-line text sponsor benefits
We'll want to look into markdown support at some point, but as a
quickfix at least render newlines in large texts.
Magnus Hagander [Sun, 16 Jun 2024 12:11:42 +0000 (14:11 +0200)]
Add basic rate limiter for Mastodon API calls
It seems at leaast mastodon.social may have implemented rate limiting at
the TCP level (afaict). To work aroud this, implement a 15 second rate
limit for Mastodon API calls to individual providers (allow other calls
to go quicker). As this is done per-process it only affects batch jobs,
but those are also the only ones with the issue.
Uncertain if this will actually work since the limit isn't documented
(unlike the http level limit), but it's worth a try.
Magnus Hagander [Fri, 14 Jun 2024 08:53:39 +0000 (10:53 +0200)]
Always sort benefits by id in token based json update
This can otherwise lead to weird diffs in downstream projects that pull
it down, when unordered data changes.
Magnus Hagander [Tue, 11 Jun 2024 08:28:21 +0000 (10:28 +0200)]
Stop referring to "new style jinja root"
This hasn't been new style for many many years, and there is only one
style supported anyway. (Change only to help text)
Magnus Hagander [Thu, 6 Jun 2024 20:55:46 +0000 (22:55 +0200)]
Teach sponsor VAT validation about the Greece exceptoin
Other than validating the VAT number (which worked), we also ensured the
first two characters were the ISO code of a valid country. Turns out
this only applies to all other countries thant Greece -- Greece uses EL
which is not a valid country code. So map the Greece exception to the
Greece country code, thus allowing signups from there.
Magnus Hagander [Thu, 6 Jun 2024 20:42:48 +0000 (22:42 +0200)]
Accept paypal code T0700 as a payment
This is one never seen before and seems to be used for shipping labels.
Bring it in and treat it like any other.
Noted by Christophe Pettus, but not his patch - going for a minimalistic
one. This code may need some further refactoring down the road.
Magnus Hagander [Thu, 30 May 2024 20:36:38 +0000 (22:36 +0200)]
Actually sort the tracks by the tracks sort key in the cfp form
Previously it was only used in the backend, not in the cfp form, which
is just wrong.
Magnus Hagander [Thu, 30 May 2024 18:59:32 +0000 (20:59 +0200)]
Return sponsors inside level in predictable order in tokendata
It doesn't really matter which order as the receiver is supposed to sort
it by whatever their rules are, but we should at least make it
predictable so we don't generate unnecessarily large diffs.
Magnus Hagander [Tue, 28 May 2024 20:03:52 +0000 (22:03 +0200)]
Add a class to conference feedback fieldsets
Magnus Hagander [Tue, 28 May 2024 16:15:30 +0000 (18:15 +0200)]
Trap and handle really invalid URLs from sponsor signup
If a URL is *really* invalid, we could crash with an exception instead
of showing a form error.
Magnus Hagander [Fri, 24 May 2024 21:21:03 +0000 (23:21 +0200)]
Fix attendee emails for direct-recipient addressing
Magnus Hagander [Wed, 22 May 2024 20:04:27 +0000 (22:04 +0200)]
Clearly sort unconfirmed sponsors by signup date
Magnus Hagander [Wed, 22 May 2024 20:00:53 +0000 (22:00 +0200)]
Teach fetch_sponsorfiles.py to optionally add downloaded files to git
Magnus Hagander [Wed, 22 May 2024 12:19:41 +0000 (14:19 +0200)]
Fix copy/paste error
Magnus Hagander [Wed, 22 May 2024 11:53:22 +0000 (13:53 +0200)]
Fix typo
Magnus Hagander [Mon, 20 May 2024 19:23:07 +0000 (21:23 +0200)]
Show error when trying to set value to non-existant dynamic field
When no dynamic field at all exists, the list is empty string. Which
python splits into an array of a single empty string, which would then
allow us to try to set the value on a field with no name (which of
course didn't work, but failed silently). So instead fail with a proper
error message.
Spotted by Melanie Plageman
Magnus Hagander [Sun, 19 May 2024 18:03:21 +0000 (20:03 +0200)]
Send notification when secondary speaker is added during cfp
When speaker A adds speaker B as a co-speaker of a session, send a
notification to speakear B about this so they're not surprised by it.
This only happens during the cfp process, not if admins make changes in
the backend (and per that it cannot happen after the cfp has closed).
Suggested by Karen Jex
Magnus Hagander [Sat, 18 May 2024 09:57:45 +0000 (11:57 +0200)]
Implement max submission count in call for papers
This makes possible to optionally restrict how many submissions someone
can make to a conference call for papers.
Fixes #70
Magnus Hagander [Sat, 18 May 2024 08:28:18 +0000 (10:28 +0200)]
Implement messaging config validation for Mastodon
This was clearly missed when Mastordon support was added, and is pretty
trivial to do - we just need to try to fetch our own account info (like
we already do on twitter)
Magnus Hagander [Sat, 18 May 2024 08:23:43 +0000 (10:23 +0200)]
Add basic Linkedin messaging provider
For now, this provider only supports basic publishing of entries as
post. It does not support any polling, and it does not support
collecting sponsor/speaker id's and highlighting them in notices. This
can be added later, but it can't be done properly without linkedin app
credentials that are not rate limited (the default), and you can't get
those credentials without already having an app.
As linkedin doesn't support the offline code flow for logins, this also
implements an oauth endpoint for incoming oauth flows for messaging
provider.
Finally, unlike the other messaging providers, linkedin actually expire
their oauth tokens - 2 months for the access token and 12 months for the
refresh token. To handle that, implement token refresh as part of the
validation flow, and simply flag that one as failed if the login doesn't
work.
Magnus Hagander [Sat, 18 May 2024 07:51:53 +0000 (09:51 +0200)]
Fix scheduling of message integration checker
This time schedule for this integration was incorrectly configured,
resulting in it not being scheduled at all by default.
Magnus Hagander [Thu, 16 May 2024 21:02:38 +0000 (23:02 +0200)]
Add ability for social media providers to specify help for fields
Magnus Hagander [Thu, 16 May 2024 21:01:06 +0000 (23:01 +0200)]
Make it possible to filter social media fields per source
This allows a media provider to for exapmle say that it can only
register sponsor accounts, not speaker accounts. All existing
implementations support all kinds of registrations, but it's
infrastructure for the future.
Magnus Hagander [Thu, 16 May 2024 19:26:49 +0000 (21:26 +0200)]
Fix typo
Magnus Hagander [Thu, 16 May 2024 19:10:18 +0000 (21:10 +0200)]
Remove unused import
Magnus Hagander [Thu, 16 May 2024 10:18:41 +0000 (12:18 +0200)]
Fix typo
Magnus Hagander [Thu, 16 May 2024 09:11:58 +0000 (11:11 +0200)]
Fix indentation error from copy/pasting text for sponsor emails
The actual emails going out were correctly indented, but the
notification to admins that it had been sent had a weird mix.
Magnus Hagander [Tue, 14 May 2024 18:24:17 +0000 (20:24 +0200)]
Add ability to schedule attendee emails for the future
This includes both direct attendee emails, and also those that are for
example sent to speakers of a session. This also removes the support for
sending such emails *without* storing them as attendee emails, as that
wouldn't leave us with a way to track what's been sent and what hasn't.
Fixes #90
Magnus Hagander [Tue, 14 May 2024 14:17:36 +0000 (16:17 +0200)]
Add ability to schedule confsponsor emails for the future
Start proper work on #90, but is not complete yet
Magnus Hagander [Tue, 14 May 2024 13:03:05 +0000 (15:03 +0200)]
Add ability to low-level queue emails in the future
Most of the system won't be using this, but it's still good to have for
completeness sake.
Magnus Hagander [Tue, 14 May 2024 12:12:24 +0000 (14:12 +0200)]
Track regtime separate from sendtime on queued emails
The regtime is always set to the extact time that an email was added. If
a different sendtime is specified, it's still good to be able to track
when something was added to the queue.
Magnus Hagander [Tue, 14 May 2024 12:07:34 +0000 (14:07 +0200)]
Disable USE_L10N
This is default on in Django 4.2, but that makes it sometimes pick a
different default date format thatn we normally want. Since we want to
be in full control of that, turn off this in django.
Magnus Hagander [Tue, 14 May 2024 12:02:26 +0000 (14:02 +0200)]
Fix typo
Magnus Hagander [Tue, 14 May 2024 11:46:20 +0000 (13:46 +0200)]
Complete the sendtime handling for mailqueue
Sync up the "warning button" filtering with that of the alerts, which
means we don̈́'t alert for emails that aren't supposed to be sent yet.
This becomes more relevant as we also stop trying to send emails that
are set to be sent in the future, in preparation for upcoming
functionality to schedule email sending.
Magnus Hagander [Mon, 13 May 2024 08:21:19 +0000 (10:21 +0200)]
Sync up old migrations after django 4.2 update
Seems django 4.2 reqiures some fields to be defined slightly differently
for the same thing. Backpatch this into the old migrations, as there are
no actual changes to the models or to the result of the migration.
Magnus Hagander [Mon, 13 May 2024 08:19:46 +0000 (10:19 +0200)]
Put a default of "no database" into the github checks
This removes the confusing warning about trying to contact the database
to check migration consistency, since we don't want that check anyway.
Magnus Hagander [Sun, 12 May 2024 09:08:15 +0000 (11:08 +0200)]
Add instance.id check to get_list() calls in backend editor
Some get_list() implementations for backend editors did not properly
check that the instance they were passed actually existed, and could
crash if it didn't (most prominent example being the the
sessions<->slides link). Some of these are can't-happen (because the
object doesn't support adding new empty ones), but this commit adds a
guard to those as well just to be on the safe sid for future changes.
Magnus Hagander [Sun, 12 May 2024 09:04:27 +0000 (11:04 +0200)]
Fix incorrect field access when reloading a stripe payment page
Typical case is if an invoice is open for payment in two different tabs,
it's then paid in one tab and then reloaded in the other, the Strip
integration would crash because it accessed the wrong field. This has
been wrong since day one of the Strip integration, so the comment
stating it won't "normally happen" was entirely correct...
Magnus Hagander [Thu, 9 May 2024 16:49:21 +0000 (18:49 +0200)]
Fix bad field name twice more
The bug fixed in
35355999 was copy/pasted to two more places, that the
bugfix missed.
Magnus Hagander [Thu, 9 May 2024 06:05:43 +0000 (08:05 +0200)]
Fix invalid field name in select_related
Magnus Hagander [Thu, 9 May 2024 06:05:12 +0000 (08:05 +0200)]
Fix attempt to deference many2many before pk exists
Magnus Hagander [Wed, 8 May 2024 16:14:39 +0000 (18:14 +0200)]
Update devrequirements to Django 4.2
Magnus Hagander [Wed, 8 May 2024 15:08:04 +0000 (17:08 +0200)]
Don't try to access invoice history before invoice exists
Magnus Hagander [Wed, 8 May 2024 14:13:49 +0000 (16:13 +0200)]
Fix field selection for messaging provider in sender
The messaging field is directly on the queue object, not on the
registration (unlike the messaging config field). Django 3.2 would
ignore this incorrect fetch and just work (but without getting the
field, so causing an extra query). Django 4.2 throws an error.
Magnus Hagander [Wed, 8 May 2024 13:43:23 +0000 (15:43 +0200)]
Switch from pytz to zoneinfo for timezone data
This is deprecated in newer Django, and will be removed in 5.0. We're
using only very little of the library functionality directly, and the
rest of it's already i django, and since Django 4.2 switched the primary
library, we switch as well for it.
Magnus Hagander [Wed, 8 May 2024 10:18:23 +0000 (12:18 +0200)]
Fix sponsor benefit tweet preview when no messaging providers exist
Instead of just returning "None", return a short descriptive text
telling the user *why* the preview is not available.
Magnus Hagander [Wed, 8 May 2024 08:48:13 +0000 (10:48 +0200)]
Update signal syntax for django 4.2
Magnus Hagander [Mon, 6 May 2024 14:15:32 +0000 (16:15 +0200)]
Add ability to copy linked objects in backend forms
And use this to make it possible to copy individual sponsorship benefits
inside a conference.
Magnus Hagander [Mon, 6 May 2024 13:14:48 +0000 (15:14 +0200)]
Fix dumb typo in query
Magnus Hagander [Mon, 6 May 2024 13:12:59 +0000 (15:12 +0200)]
Fix ordering of benefits in at-a-glance data
Since three is a sortkey field on the benefit, we should use that to
sort by first.
Magnus Hagander [Fri, 3 May 2024 15:39:35 +0000 (17:39 +0200)]
Add sessionid attribute to cross conference sessions
These sessions also have an id, and we want to expose it to the
schedule. We cannot do that using 'id' now as there are many schedule
templates out there that use the lack of 'id' to determine if a session
is cross conference or not, so we create a new one.
Magnus Hagander [Fri, 3 May 2024 09:42:39 +0000 (11:42 +0200)]
Include conflicting session name in room conflicts report
This requires a rewrite to a join, but having this informatino makes
tracking things down a lot easier.
Magnus Hagander [Fri, 3 May 2024 09:27:11 +0000 (11:27 +0200)]
Make overwriting sponsorsfiles optional
Magnus Hagander [Fri, 3 May 2024 09:25:00 +0000 (11:25 +0200)]
Include cross schedule sessions in overlapping rooms query
Magnus Hagander [Tue, 16 Apr 2024 14:36:06 +0000 (16:36 +0200)]
Update url configs to use re_path
The url() alias of re_path() was deprecated in 3.1 and will be removed.
Dave Page [Fri, 3 May 2024 09:22:26 +0000 (10:22 +0100)]
Fix typo.
Dave Page [Fri, 3 May 2024 09:20:07 +0000 (10:20 +0100)]
Fix typo.
Daniel Gustafsson [Thu, 2 May 2024 13:51:39 +0000 (15:51 +0200)]
Add functionality to draw circles
This adds circle as a recognized object for drawing. Each circle
takes x, y and radius and can have a strok and fill color.
Reviewed-by: Magnus Hagander
Closes: #159
Daniel Gustafsson [Thu, 2 May 2024 13:43:41 +0000 (15:43 +0200)]
Support setting strokecolor for boxes
This adds the capability to specify a color for the strokecolor on
a box. Defining stroke as True will give black color as backwards
compatibility.
Reviewed-by: Magnus Hagander
Closes: #159
Daniel Gustafsson [Tue, 30 Apr 2024 11:47:46 +0000 (13:47 +0200)]
Fix typo in exception
Spotted while hacking on other things in the jinjapdf code.
Magnus Hagander [Wed, 17 Apr 2024 19:33:39 +0000 (21:33 +0200)]
Fix lack of sponsor name in matrix on admin dashboard
In merging commit
39385c3b1, the wrong column ended up being referenced
as sponsor name. Oops.
Noted by Daniel Gustafsson
Magnus Hagander [Wed, 17 Apr 2024 08:44:22 +0000 (10:44 +0200)]
Properly fix the hashval not null issue
Previous commit (
878d1540) applied the wrong fix. The field should still
be NOT NULL, the bug was actually in the trigger being created in the
earlier migration which was incorrectly missing INSERT. Fix this and
change the field back, which more or less reverts
878d1540 but does it
with a new migration so that any existing data gets fixed.
Magnus Hagander [Tue, 16 Apr 2024 21:02:12 +0000 (23:02 +0200)]
Fix whitespace in if construct
Magnus Hagander [Tue, 16 Apr 2024 21:01:52 +0000 (23:01 +0200)]
Fix hashval NULLability
Needs to allow NULL on INSERT, which will then get overwritten by the
trigger.
Magnus Hagander [Tue, 16 Apr 2024 14:38:18 +0000 (16:38 +0200)]
Replace ugettext_laxy with gettext_lazy in country module
This is an imported module that has not been updated, but this change is
just removing an alias that has been deprecated so it should be safe to
meddle in it this way.
Magnus Hagander [Tue, 16 Apr 2024 14:35:36 +0000 (16:35 +0200)]
Change force_text to force_str
Deprecated in django 3.0 and will br removed in 4
Magnus Hagander [Mon, 15 Apr 2024 13:22:24 +0000 (15:22 +0200)]
Don't crash on overly long filenames for sildes
We directly copied the filename from an upload into the name vaule of a
ConferenceSessionSlide, without verifying the length. Uploading a
*really* long filename would cause a crash. Fix this by instead
detecting when it's too long and give a proper error message.
Magnus Hagander [Mon, 15 Apr 2024 13:29:49 +0000 (15:29 +0200)]
Truncate slide URL when generating name field in backend interface
We already did this in the normal user interface, which explains why
plenty such URLs are already in the system. But apparently this was
missed in the admin interface, thereby causing errors whan adding urls
the backwards way.
Fixes #151
Magnus Hagander [Fri, 12 Apr 2024 11:20:35 +0000 (13:20 +0200)]
Don't crash when trying to set dynamic fields on zero rows
This is similar to the fix in
55f1f7eb9 which fixed this problem for
generating a report. But it did not consider that one might proceed to
save the values even when the report was empty -- this path needs the
same fix.
Magnus Hagander [Wed, 10 Apr 2024 19:56:47 +0000 (21:56 +0200)]
Add support for token download of sponsor claimed benefits
This allows downloading a json/yaml file with all the claimed benefits
(including information on if they are confirmed or not).
This also adds a tool called fetch_sponsorfiles.py that will parse this
data and be able to download related files, such as "Logo for the
website" benefits.
The details being provided probably need some more going over with some
reasl world experience, so for now this should be considered
experimental.
Magnus Hagander [Wed, 10 Apr 2024 08:13:59 +0000 (10:13 +0200)]
Store and use hash of benefit images
Store the hash (md5 is good enough here) of the benefit images, and
maintain it using a trigger. This hash is used to implement
etag-handling for downloads of the image. We don't expect that part to
pay off very well since it's logged in users only, but the hash will be
useful in some upcoming patches, and once we have it implementing the
etag handling is basically free.
Magnus Hagander [Mon, 8 Apr 2024 18:02:15 +0000 (20:02 +0200)]
Add support for token-downloads of sponsor level metadata
In passing, this adds support for YaML format downloads of all token
based data.
The token data will generate json or yaml with information about all
sponsorship levels and benefits created in the system. The idea being
this can be pulled into a context file and thereby guaranteed to be the
same in the static and dynamic parts of the site. We'know from
experience these can easily get slightly out of sync.
Magnus Hagander [Mon, 8 Apr 2024 13:52:04 +0000 (15:52 +0200)]
Implement multi-claim sponsorship benefits
This basically allows a single benefit to be claimed multiple times with
different data, for benefit classes that support it (which is most but
not all). This can be used for things like "two sessions in the sponsor
track" or "send two different pieces of merch", to avoid the previously
used workarounds of creating mutiple benefits with slightly different
names.
Magnus Hagander [Mon, 15 Apr 2024 17:30:23 +0000 (19:30 +0200)]
Activate the conference timezone when fetching sponsor object
When using _get_sponsor_and_admin() to get the information we'd leave
the timezone at the system default, which is not correct when a
conference is run in a different timezone from the main one on the
server. Timezones haven't really mattered to sponsor info before (more
or less only the list of emails would be affected), but now that we have
deadlines configured it must be done.
Vik Fearing [Thu, 11 Apr 2024 19:26:36 +0000 (21:26 +0200)]
Add video links to session page
Magnus Hagander [Tue, 9 Apr 2024 14:33:25 +0000 (16:33 +0200)]
Don't force deadline date to be inside the conference dates
For most real world conferences that makes it useless.
Spotted by Steve Singer
Magnus Hagander [Tue, 9 Apr 2024 07:37:46 +0000 (09:37 +0200)]
Fix typos
Noted by Andreas Scherbaum
Magnus Hagander [Mon, 8 Apr 2024 13:33:25 +0000 (15:33 +0200)]
Fix field name
This name was fixed in the model, but docs were lagging behind.
Magnus Hagander [Sun, 7 Apr 2024 12:26:24 +0000 (14:26 +0200)]
Fix typo
Magnus Hagander [Sun, 7 Apr 2024 12:23:19 +0000 (14:23 +0200)]
Add an (optional) deadilne to sponsorship benefits
This will both indicate the deadline on the dashboard (and not as
before, only in the details text or the contract) and prevents the
sponsor from claiming a benefit past the deadline.
Magnus Hagander [Sun, 7 Apr 2024 11:49:08 +0000 (13:49 +0200)]
Prevent claiming sponsorship benefits past the end fo the conference
Magnus Hagander [Mon, 1 Apr 2024 17:12:13 +0000 (19:12 +0200)]
Remove jquery reference from skinning docs
The skinned part of the site no longer uses jquery, and if the skin
*itself* uses it they can put it wherever they want.
Magnus Hagander [Mon, 25 Mar 2024 18:25:18 +0000 (19:25 +0100)]
Fix off-by-one-regexp in URL matching for speakers
We're not suppose to allow / in the speaker name, as that can cause
infinite recursions. But due to an extra . in the regexp, if we loaded
the speaker from the schedule (not the session list) we could, which if
you had a bad link somwehere a bot could then end up traversing into
without getting a 404.
Magnus Hagander [Fri, 22 Mar 2024 17:38:24 +0000 (18:38 +0100)]
Disallow arbitrary emails from contract sender address
This was intended for contracts only, not general contacts, so don't
allow arbitrary emails from it either.
Magnus Hagander [Fri, 22 Mar 2024 17:29:56 +0000 (18:29 +0100)]
Add function to send email to arbitrary external recipients
Allow sending of simple short emails to external addresses
with the sender set to one of the conference addresses (contact,
sponsors, contract). This makes it possible to send email from the
"official addresses" which will be sent from the appropriate servers
with correct DKIM etc, making it pass spam filters more easily.
Magnus Hagander [Thu, 21 Mar 2024 02:09:50 +0000 (03:09 +0100)]
Don't crash invoice saving when using unavailable accounts
If an automated system added an accounting account to an invoice that
did not have the checkbox for "available in invoicing", we would first
not show the account on the invoice, and if it was saved (to change the
payment providers for example), we would crash. This is normally a
misconfiguration, but we sohuldn't crash hard on it...
Crashed and diagnosed by Steve Singer
Magnus Hagander [Wed, 20 Mar 2024 18:10:06 +0000 (19:10 +0100)]
Show election introduction text on results page too
Magnus Hagander [Wed, 20 Mar 2024 18:04:02 +0000 (19:04 +0100)]
Add an "intro" field to elections
This field (which can take markdown for nice formatting) is shown on the
voting form for the election, and can contain overview information about
the election, candidates etc.
Suggested by Matthias van de Meent
Magnus Hagander [Wed, 20 Mar 2024 16:39:48 +0000 (17:39 +0100)]
Attempt to properly identify wise accounts with wrong primary currency
Our check only worked properly if the primary currency was the one we
used, and it seems wise can open a new balance and just chance the
primary currency on us, so update the check.
Magnus Hagander [Tue, 19 Mar 2024 19:27:46 +0000 (20:27 +0100)]
Add ability to send email to attendees with wiki permissions
Sometimes we have wiki pages available only to a specific subset of
users - in this case, it can be useful to be able to send emails
directly to those users from the wiki admin page.
Fixes #73
Magnus Hagander [Tue, 19 Mar 2024 17:46:53 +0000 (18:46 +0100)]
Make it possible to pass query params instead of idlist to attendee mail
When doing for example signup emails to large signups the list of ids
can be very long, and the materialization also gets delayed (so the
response status may have changed since the email was initiated). For
this reason, allow passing down query parameters other than just integer
ids, and expand those when creating the email rather than ahead of time.
Magnus Hagander [Tue, 19 Mar 2024 17:22:39 +0000 (18:22 +0100)]
Make it possible to send signup emails based on multiple responses
Magnus Hagander [Mon, 18 Mar 2024 20:51:38 +0000 (21:51 +0100)]
Register signup emails as attendee emails
This allows for signup emails to be stored on the registration page so
people can go back and view them later, and basically puts them under
the same sending framework as other emails (which will come in handy
once we make that one more advanced).
Magnus Hagander [Mon, 18 Mar 2024 20:30:09 +0000 (21:30 +0100)]
Break out attendee email sending functionality to own file
Magnus Hagander [Mon, 18 Mar 2024 19:43:28 +0000 (20:43 +0100)]
Poliy and attachment urls should work with and without trailing slash
We always send out the link including the trailing slash, but apparently
either some MUAs or browsers remove the trailing slash. In this case our
rule would not match. And since we have legacy urls that include the
register/ part, they get captured by that rule (with the conference name
being "policy" or "attach") instead of the django default rule.
So, update the regexp to allow these links with or without the trailing
slash.