* Add a note about the creation date of boarding pass
* Add a link to ticket review page
* Try to handle some of the expected errors in the boarding pass
sending process
* don't just 502, try to handle the error and move on.
- Use the first template in the system
- If there's no template, use /tickets/review as it at least gives
- people an overview of what they've paid for and warns them of
missing categories
* The qrcode contains no information that isn't in the URL you used to
access the code, so information is being leaked
* Allowing unauthenicated access lets people see the image in their
mail client
Not ideal. Let's revert this later and think of something better next
year - perhaps spending some more time researching best practices on
images in email..
* Switch to showing the PNG version by default, as this reflects what
will actually be rendered and sent to the printer
* Include the greyscale filter
* Include the twemoji font we'll use for rendering the badges
* The slot object updates its name every time it is saved
* But sometimes its slotrooms are changed underneath it, and so the
name can become out of date
* This method is a simple way of updating the names for all the slots
This allows for the boarding functionality to be safely tested with
just a subset of users first. Once you're ready to go live Fur Reals,
just delete the group and all users will become eligible.
Shows summary of all attendees with a paid ticket, including
boarding_pass status.
Currently, regidesk allows staff with the requisite permission the
ability to view the checkin status of attendees, and email the user
their boarding pass email.
Included is a view for the user to retrieve their own QR code (in case
they got the plain-text version of the email, they can use this to
download an image to their phone for faster checkin)
* A TimeOrStockLimit limit can apply a limit to a whole category, or
to specific products
* This report was only counting the products directly listed
* Take advantage of the new all_products property to include the
products indirectly listed as well as those directly listed
It's common to need to query the fill list of products covered by a
Flag - whether directly, or by being in an included category.
Add an all_products property which does this.
* Add a greyscale filter to text for more accurate preview
* Always default to SVG preview as it's the most accurate (cairo
doesn't do a great job of handling custom fonts when it converts to
png/pdf)
* Always use roboto font.
* Undo some of the debugging done early in this series of patches
* Add ability for a user to preview their own badge
* Add a template for the LCA2018 badge
* lca2018 has a situation where we have multiple slots starting at the
same time, but ending at different times
* The headers of the timetable grid are sorted by room sort order
* In sqlite at least, ordering by start,order seems to implicitly
resolve duplicate start times by looking at the other sort fields
first, and will only sort on order if all other fields are identical
* This results in the slot that ends first going in column 1, which
gets out of sync with the room listed in the header
* I can't figure out how to solve this in the database, so...
* Force the slots to be sorted by room order.
* Then, for each start_time, select out slots starting at that time
and operate on them
* This both gets the slots in the right order *and* keeps multi-room
slots with the right colspan. Yay!
* It's possible that this wouldn't be needed on some DBs which might
do the sorting differently.
In many parts of the schedule there are multiple slots with the same
start/end times, and it can be hard to find the one you want to edit.
Make this slightly simpler by listing the room names in the admin list.
* Whether a Flag is disable-if-false or enable-if-true is a very
important detail
* But one that's easy to get wrong
* And it's hard to spot problems without inspecting every single flag
This change adds the Condition into the various admin list views, so
that it's easier to scan them all for problems and look for inconsistencies.
* Old implementation needs to see exactly the same rooms in exactly
the same order every time it loads new data, otherwise it will
create a duplicate entry for the room that differs only in display
order.
* New implementation ignores the display order when checking to see
if the room already exists.
- This has the effect of bouncing people to the login page if they're
unauthenticated, rather than returning a 502 because 'home' doesn't
exist.
- If they're authenticated but don't have a speaker profile, send them
to the speaker profile create page rather than just to the
dashboard.
Closes#26