* 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.
I can't find the form that should be displayed here, so the simplest
thing I can do at 11pm is to make this a link. That's unsatisfying but
hopefully works.
* HTML5 browsers have some clevers to do client-side validation of
forms
* Django activates this by default for certain field types
* However, in this case, there are three forms on this page. We rely
on two of them being invalid in order to figure out what processing
to do.
* So we need to disable the client-side validation.
* 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 code was initialising the dataTable twice - once in the parent
block and once in the child. This doesn't actually work and just
caused errors.
Switch to only initializing it once. Unfortunately this creates
copy-pasta :(
* 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.
* Audience is visible on review details, but not the list. Perhaps
useful for cases where reviwer wishes to only review for a
particular audience. This change adds audience to the list view.
* Format is not visible anywhere. This changes adds it to list and
detail views for the reviewers.
This change also adds some buttons to control visibility of the new
columns.
* The base model requires a value here
* But we aren't using one; so there's none on the form
* This change supplies a custom enumeration that's specific for this
particular model, which has one value, which is a default value,
which simply says that the field is N/A
* This does mean that when viewing or reviewing the proposal one sees
the Target Audience field, but it will say N/A.
* Testing has shown that this does not affect the other types which
descend from the base Proposal class; they still use the default
enumeration.
- 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
Add clearer notes about the preconditions for using a csv to populate
the schedule.
Update the sample data to one that makes it clear which date format
must be used.