| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Fixes #201
|
|
Fixes #199
|
|
For refund patterns to work well, there should be no gaps (a day in
between two defined patterns where there are suddenly no refunds would
be strange) and it should have something open-ended at the beginning.
|
|
This makes it possible for an attendee to request a cancelation of their
registration using a button on the registration dashboard (while signed
in, which means it's known who the attendee is, and there is no need to
verify emails). When they do so, a cancelation request is recorded and
visible on the admin dashboard and an notification is sent to the
admins. The actual cancelation still has to be done at this point, which
gives the admin a chance to double check that refund patterns were OK
and override if necessary.
|
|
This can warn the user about inconsistent data, for example.
|
|
This moves the constraint that an email has to be unique per conference
to only applying to non-canceled registrations, making it possible to
cancel a registration and then restart the process with a new one if
necessary, while logged in as the same user. This can for example be
used to cancel a general registration for someone who then wants to
register as a speaker, and can use the same email and userid.
The canceled registration will remain, but have the attendee set to NULL
and move the attendee to registrator, meaning we can still track it and
the attendee can still see it themselves, making it possible to access
things like invoices after the completion.
The cross conference email is set up to handle this case without sending
duplicates email. There are likely some other places around that may
need some adjustments that haven't been found yet.
|
|
This also changes the field order of the csv export session export
|
|
|
|
|
|
Sometimes the senders underpay and the correct that, and this way we can
process that without doing it manually.
Just like multi-invoice matching, this does not support payments with
fees, those still have to be handled manually.
|
|
This tool can use templating to map session names/times/whatevers to
filenames matching session recordings, and then upload those files to
youtube and build a playlist for them. Session descriptions and speakers
are also copied to the playlist, with the formatting of the title etc
controlled by jinja2 templates.
The source for the session data is the "json schedule dump" saved or
downloaded using a token URL.
|
|
This is a trivial tool to generate images for each session in
the system. This can be used to for example generate screens
to show on monitors outside the conference rooms, or tor
generate slides to show in the rooms in between talks.
Based off an idea from Chris Ellis but reimplemented using jinja2
templates (and python instead of node.js) to use the same templates as
the rest of the system uses.
|
|
This adds a framework for uploading structured data to the system, which
will then be merged with existing data.
It also adds an implementation that allows uploading of video links to
populate the database.
|
|
This also changed when they killed the old API, but we hadn't seen one
yet..
|
|
|
|
|
|
Previosly the code catered for "has a registration of a type that's free
but it's not confirmed", but these days the zero cost registrations
*also* get the payconfirmedat flag set, so we don't need to look beyond
that.
|
|
Adds the ability to show and filter on pronouns. This was mistakenly
omitted and only included in the json dumps.
Spotted by Karen Jex
|
|
In passing, also make it just include the name in the query, for
efficiency.
|
|
If an additional option was that required a specific regtype was
selected but the registration had *no* regtype (can happen on a new
registration, if the user ignores the regtype selection at the top and
just ticks off the additional option at the bottom), instead of crashing
just tell the user what the required regtypes are.
|
|
Previously we explicitly called the API about the withdrawal entry, but
that API is now restricted. And we don't *really* need it -- refunds
show up on the ledger, so just use that.
The only case this doesn't work is refunds in a different currency, and
in that case we just estimate the fees and send a notice to hope for the
best :) It's not a common scenario, and not worth spending too much on
(in production it has never happened outside of testing).
To do this, we now track refund transactions int he TrustlyWithdrawals
table, and also store the orderid on them if we have them.
This removes the separate job to match trustly refunds, and handles it
all from the fetch withdrawals job.
Not fully tested since it needs production data, so expect some
follow-up commits..
|
|
Naming it .md will for example make github render it as markdown.
|
|
|
|
To ease building docker images and prevent having to maintain an
in-tree file for local settings, allow a pgeu_system_global_settings
module anywhere in the PYTHONPATH for configuration.
In addition, also allow overrides to be applied after loading the
skin through a pgeu_system_override_settings module in PYTHONPATH.
|
|
This was already blocked in the frontend, but this is something that
should be checked in the backend too.
|
|
Previously a search for "first last" would require it to be specified
exactly like that as part of either first or last name, and thus
unlikely ever match anything.
Change that to split the search string on whitespace and search
individually for each of the names.
Fixes #191
|
|
Commit 1a0b919c prevented submission of a session with the same title as
already existed to avoid "bounces". But we want to accept the same title
as long as they're on different tracks, for example if someone wants to
submit both a long and a short version for consideration.
Reported by Karen Jex
|
|
Commit 1a0b919c added verification that one didn't submit the same
session twice, but as a side-effcect that also prevented editing an
existing session.
Reported by Andrey Borodin
|
|
This will be prepended to the check-in message that's set on the
registration type, if both are set. Can be used to highlight an
individual attendee for specific handling during check-in, e.g. brint
attention about a keynote speaker.
|
|
Avoid querying all the fields that we're never going to use. Makes it
worth it since it can be a lot of data.
In passing also fix some typos in the field references that could end up
with bad sorting.
|
|
The fields allowed incomplete registrations to be added to the list of
users for an additional options, but the lookups that generated the
autocomplete lists did not include them, so in the end it couldn't
actually be used. To fix it we have to create a new lookup that includes
this set of users.
Spotted by Andreas Scherbaum
|
|
This is needed so they can be shown on a badge when doing trial
printing.
Reported by Jimmy Angelakos
|
|
|
|
Contrary to their own documentation, Paypal now returns a json object
with no 'transaction_details' key when there are no matching
transactions (previously and per documentation they should return an
empty array). To work around this, treat the case of missing key the
same as an empty array.
|
|
s/menas/means/, spotted while doing event maintenance this
morning.
|
|
|
|
|
|
As some platforms can be challenging to find the correct versions of the
required files, add a pre-built docker container that people can use,
similar to what we do with deploystatic.
|
|
This will simply print the whole template output from jinja, before
trying to load it as json. Helps debug when rendering problems generate
output that just isn't json.
|
|
|
|
Commit a7ca59dc added to the dashboard for human consumption but it
makes sense to also have it in the json/yaml data downloads.
This also makes it possible to simplify the fetch_sponsorfiles.py script
since it no longer needs a copy of the django slugify function.
|
|
Cutmarks are what most printers want. Instead of having to hardcode them
into individual badges, add system support for drawing them
automatically.
In relation to this, also add support for calculating bleed for both
cutmarks and borders
|
|
|
|
|
|
|
|
Contextutil is loaded by jinjapdf, but didn't work without patching away
access to settings. Fix that, so it's back to working independently.
|
|
|