Magnus Hagander [Thu, 5 Apr 2018 14:34:17 +0000 (16:34 +0200)]
Don't give admin edit link when creating new objects
It doesn't work anyway.
Magnus Hagander [Thu, 5 Apr 2018 14:33:42 +0000 (16:33 +0200)]
Support two-step creation of new objects
Allows a pick of object in the first step followed by the actual edit
form later, for new backend objects.
Magnus Hagander [Thu, 5 Apr 2018 13:02:27 +0000 (15:02 +0200)]
Add editor for feedback questions
Magnus Hagander [Thu, 5 Apr 2018 13:02:11 +0000 (15:02 +0200)]
Don't set form-control on checkboxes
This renders spectacularly badly in newer firefoxes :)
Magnus Hagander [Thu, 5 Apr 2018 12:52:13 +0000 (14:52 +0200)]
Editor for additional options
Magnus Hagander [Tue, 3 Apr 2018 14:22:10 +0000 (16:22 +0200)]
Automatically validate that all dates are within conference date
Can be overriden on a per-field bases, if we ever find a reason to.
Magnus Hagander [Tue, 3 Apr 2018 14:15:08 +0000 (16:15 +0200)]
Add backend forms for ScheduleSlots and VolunteerSlots
Magnus Hagander [Tue, 3 Apr 2018 14:14:55 +0000 (16:14 +0200)]
Add ability to change display field in backend list
Magnus Hagander [Mon, 2 Apr 2018 15:13:51 +0000 (17:13 +0200)]
Add a state graph for the different conference session statuses
This shows a state graph indicating which actions (by either speaker or
by administrator) should cause a move between the different states.
Wrote this a long time ago, but clearly forgot to commit.
Magnus Hagander [Mon, 2 Apr 2018 15:12:55 +0000 (17:12 +0200)]
Implement editing of session statuses in backend
This implements the core of the workflow in a way that at least does a
decent job of guiding the user not to move sessions between incorrect
statuses.
Magnus Hagander [Mon, 2 Apr 2018 15:08:58 +0000 (17:08 +0200)]
Move session notify queue into /events/admin/
Magnus Hagander [Mon, 2 Apr 2018 12:20:02 +0000 (14:20 +0200)]
Backend editors for sessions, rooms and tracks
Sessions are somewhat limited as some editing is still done through the
talkvote page. This should be fixed...
Magnus Hagander [Mon, 2 Apr 2018 12:00:18 +0000 (14:00 +0200)]
Don't list "None" in backend lists
Instead, just leave it empty...
Magnus Hagander [Mon, 2 Apr 2018 11:57:22 +0000 (13:57 +0200)]
Support overriding column headers in backend lists
This is needed when the value is computed (such as converting a status
int to a string)
Magnus Hagander [Mon, 2 Apr 2018 11:56:32 +0000 (13:56 +0200)]
Remove conference name from autogenerated room/track names
These are reall only used in the admin interface today, so it should
make no real difference.
Magnus Hagander [Mon, 2 Apr 2018 10:55:18 +0000 (12:55 +0200)]
Move scheule creation and json to /events/admin/ urls
Magnus Hagander [Mon, 2 Apr 2018 10:54:09 +0000 (12:54 +0200)]
Fix schedule creation permissions
Both voters and admins should be able to work on the draft schedule, not
just testers. And admins should be able to publish the schedule, not
just superusers.
Magnus Hagander [Mon, 2 Apr 2018 10:48:34 +0000 (12:48 +0200)]
Move reports under /events/admin/ url
Magnus Hagander [Fri, 30 Mar 2018 16:14:11 +0000 (18:14 +0200)]
Attempt to better handle payment exceptions in adyen processing
The invoice API actually allows us to get the reason for why the
processing failed, so use that instead of just throwing an exception.
In particular this lets us track the case of invalid size payment in
relation to invoice amount (never happened so far), and also payments
that happen after the invoice has been deleted (theoretically possible
with creditcard payments, but very much realistic with iban payments --
it's more surprising it hasn't happened before).
In these cases create an empty accounting record that can be processed,
instead of leaving things in incomplete state.
Magnus Hagander [Fri, 30 Mar 2018 10:15:38 +0000 (12:15 +0200)]
Fix JSON/badge report when there are regs with no regtype
This could only occur for attendees that aren't actually confirmed, so
normally they would not be included in such a report because of a
filter. However, just "dump everything" is a pretty common use-case for
testing, and obviously we shouldn't *crash* in this scenario.
Spotted by ads, when doing exactly that.
Magnus Hagander [Thu, 29 Mar 2018 18:09:56 +0000 (20:09 +0200)]
Don't allow changing a reg cost after it's been used
Magnus Hagander [Thu, 29 Mar 2018 18:03:47 +0000 (20:03 +0200)]
Don't show additionaloptions fields if none exist on the conference
Magnus Hagander [Thu, 29 Mar 2018 16:50:36 +0000 (18:50 +0200)]
Remove redundant link to edit a registration in /admin/
Magnus Hagander [Thu, 29 Mar 2018 16:01:26 +0000 (18:01 +0200)]
Properly capitalize title in backend object list
Magnus Hagander [Thu, 29 Mar 2018 16:01:06 +0000 (18:01 +0200)]
Add editor for RegistrationDay
This can be used as an example for how to add a trivial form where it
should be supported to both add, delete and edit items.
Magnus Hagander [Thu, 29 Mar 2018 15:55:31 +0000 (17:55 +0200)]
Generate buttons for superuser to shortcut to django admin
Magnus Hagander [Thu, 29 Mar 2018 15:45:13 +0000 (17:45 +0200)]
Support auto-calculating VAT fields in backend forms
All entries are without VAT, but it's a nice feature to be able to
calculate the value with VAT before it's saved.
Magnus Hagander [Thu, 29 Mar 2018 15:10:48 +0000 (17:10 +0200)]
Use a HTML5 date picker for Date fields in backend
Magnus Hagander [Thu, 29 Mar 2018 14:54:25 +0000 (16:54 +0200)]
Include conference in pdfschedule template
This is needed to generate the breadcrumbs, and was clearly missed
before.
Magnus Hagander [Thu, 29 Mar 2018 14:52:34 +0000 (16:52 +0200)]
Refactor conference authentication on the backend side
This removes massive amounts of duplicated code to check that "is the
user either a superuser or an admin for this conference". Centralizing
that into the get_authenticated_conference() functions simplifies things
a lot, and deleted code is always the best type of code.
Magnus Hagander [Thu, 29 Mar 2018 14:30:35 +0000 (16:30 +0200)]
Lay the groundwork for moving metadata into the backend system
Previously all metadata was edited throuhg /admin/, which wan't very
user friendly, gave no way to separate out "normal things" and "internal
things" when editing, and made it hard to do permissions checking.
This commit creates the new concept of a "backend list" and "backend
form", which can be used as shortcuts to implement editors in the normal
backend framework instead of the admin framework. These editors are
based off a regular Form (inherited from BackendForm), and can create
all things automatically for all simple cases. All access is
automatically authenticated to conference administrators for the
specific conference.
The term backend was picked specifically to avoid name-confusion with
the builtin django admin module.
Finally, to prove the functionality, a few forms and lists were
implemented as part of the original step:
* Editor for the conference metadata itself (limited fields)
* Editor for a registration (limited fields)
* List and editor for registration classes
* List and editor for registration types
There are many more to come there before things are finished, but it's a
starting point.
Magnus Hagander [Thu, 29 Mar 2018 14:28:45 +0000 (16:28 +0200)]
Add some form utility template filters
Mostly imported from other project, adds:
* label_class (adds a class to the label for a field)
* field_class (adds a class to the field itself)
* ischeckbox (returns true if a field is a checkbox)
* isrequired_error (returns true if the error is that a field is
required)
Magnus Hagander [Thu, 29 Mar 2018 14:18:07 +0000 (16:18 +0200)]
Update verbose fieldnames for RegistrationType and RegistrationClass
In passing, also set a default=0 for cost and give it a help text.
Magnus Hagander [Thu, 29 Mar 2018 14:02:59 +0000 (16:02 +0200)]
Add a middleware to support redirects using raise
This is maybe not pretty, but very convenient..
Magnus Hagander [Thu, 29 Mar 2018 12:09:59 +0000 (14:09 +0200)]
Include "share email" on registration view
We might want to consider removing this field completely, but as long as
it exists it should of course be listed on the registration.
Magnus Hagander [Thu, 29 Mar 2018 12:07:28 +0000 (14:07 +0200)]
Add verbose names and helptexts to a bunch of fields on Conference
Magnus Hagander [Thu, 29 Mar 2018 12:00:32 +0000 (14:00 +0200)]
Don't allow welcome email to be enabled without setting contents
Magnus Hagander [Thu, 29 Mar 2018 11:59:55 +0000 (13:59 +0200)]
Make it possible to update protected fields after form is built
This is necessary to protect forms where fields are removed in the
constructor.
Andreas 'ads' Scherbaum [Thu, 29 Mar 2018 10:03:44 +0000 (12:03 +0200)]
Nicer CSS for signup admin page
Magnus Hagander [Sun, 25 Mar 2018 14:49:58 +0000 (16:49 +0200)]
Fix template loaders for django 1.11
Seems django 1.11 automatically enables caching template loader, which
of course breaks the ability to make any changes to the pages of a
website without restarting it. And there is no way to turn it off other
than to explicitly configure individual loders (the logic to turn it on
in non-debug configurations is hardcoded and cannot be changed).
Magnus Hagander [Sun, 25 Mar 2018 14:36:43 +0000 (16:36 +0200)]
No need for double headers saying Accounting
Magnus Hagander [Sun, 25 Mar 2018 14:34:10 +0000 (16:34 +0200)]
Add base template forgotten in previous commit
Magnus Hagander [Sun, 25 Mar 2018 14:32:52 +0000 (16:32 +0200)]
Centralize and clean accounting javascript
Move it to it's own .js file to avoid duplicates
Magnus Hagander [Sun, 25 Mar 2018 14:12:36 +0000 (16:12 +0200)]
Clean up HTML in accounting system
It's still pretty horrid, but this moves it closer to the standard
bootstrap templates, and removes some of the worst stuff. The direct
benefit is that it's now able to use the full width of the screen.
Magnus Hagander [Sun, 25 Mar 2018 12:43:46 +0000 (14:43 +0200)]
Move waitlist message template into admin framework
Magnus Hagander [Sun, 25 Mar 2018 12:43:39 +0000 (14:43 +0200)]
Add proper breadcrumbs to registration list
Magnus Hagander [Sun, 25 Mar 2018 12:20:10 +0000 (14:20 +0200)]
Move prepaid batch handling into the admin framework
This includes both the HTML framework like most previous commits, but
also management.
A conference admin (non-superuser) can now view prepaid batches, since
it no longer uses /admin/. They can also create new prepaid batches with
vouchers as necessary (though of course only for their own conferences).
This also removes the last legacy connection to the previous invoice
management system that was in confreg, namely relying on the invoice
management permission from that system.
And finally, it changes the creation form to use selectize and the
django plugin to do the search-for-users-when-the-list-is-too-long
functionality, so it uses the same as everything else.
Magnus Hagander [Sun, 25 Mar 2018 11:15:29 +0000 (13:15 +0200)]
Remove jon-jinja confwiki frontend templates
This was missed in commit
5507e11db6c8588d490ae16c11af018ecfb734dc which
only handled confreg, but they are both rendered the same way so these
templates are no longer used.
Magnus Hagander [Sat, 24 Mar 2018 12:22:15 +0000 (13:22 +0100)]
Move attendee reports into admin framework
In passing, fix hiding of listboxes (never worked, but was probably
supposed to..)
Magnus Hagander [Sat, 24 Mar 2018 11:56:43 +0000 (12:56 +0100)]
Render feedback results in the admin templates
Results should be in the same framework as the admin, including
breadcrumbs etc. Unlike the user facing side which should of course be
in the conference framework.
Magnus Hagander [Sat, 24 Mar 2018 11:42:10 +0000 (12:42 +0100)]
Integrate Create Schedule in the admin framework
It really just means render it under the same header, to make the
breadcrumbs work.
Magnus Hagander [Sat, 24 Mar 2018 09:28:36 +0000 (10:28 +0100)]
Fix invoice generation for bulk invoices as well
And change the previous fix to a better one while at it.
Magnus Hagander [Sat, 24 Mar 2018 09:21:08 +0000 (10:21 +0100)]
Fix invoicerow saving in create_invoice
The rows need to be saved individually before saving the invoice itself.
Magnus Hagander [Fri, 23 Mar 2018 18:18:33 +0000 (19:18 +0100)]
Fix pagination with >10 pages of accounting entries
Magnus Hagander [Fri, 23 Mar 2018 17:43:57 +0000 (18:43 +0100)]
Null parameter has no meaning on ManyToManyField
New django causes warning, so remove it even though it was and is a
no-op.
Magnus Hagander [Fri, 23 Mar 2018 15:51:55 +0000 (16:51 +0100)]
render -> render_to_response for payment processing
This udpates adyen, braintree, paypal and trustly to use the new
rendering functions.
Magnus Hagander [Fri, 23 Mar 2018 15:20:47 +0000 (16:20 +0100)]
Use render instead of render_to_response in more apps
Now also confreg, confsponsor, confwiki, newsevents, the old invoice
system and the root.
Magnus Hagander [Fri, 23 Mar 2018 15:20:39 +0000 (16:20 +0100)]
Fix template bug
Magnus Hagander [Fri, 23 Mar 2018 15:20:14 +0000 (16:20 +0100)]
Fix incorrect number of columns in list in template
Magnus Hagander [Fri, 23 Mar 2018 15:18:48 +0000 (16:18 +0100)]
Remove cannot-reach codepath for conference template rendering
All user-facing conference templates have been migrated to jinja, so
there is no way to reach this fallback codepath anymore.
Magnus Hagander [Fri, 23 Mar 2018 15:17:53 +0000 (16:17 +0100)]
Fix model diffing to work on new django
Still works on the old one, so no reason not to use the cleaner
functions.
Magnus Hagander [Fri, 23 Mar 2018 15:16:59 +0000 (16:16 +0100)]
ModelChoiceFields must reference a manager
Can't just reference the class, has to be a manager. We're going to
overwrite the actual queryset in __init__ anyway, so just specify id=-1
to get something.
Magnus Hagander [Fri, 23 Mar 2018 14:26:38 +0000 (15:26 +0100)]
Update template configuration to be compatible with new django
Backwards compatible change, so might as well do all of it.
Magnus Hagander [Fri, 23 Mar 2018 14:26:20 +0000 (15:26 +0100)]
form._changed_data doesn't exist anymore
Magnus Hagander [Fri, 23 Mar 2018 14:26:00 +0000 (15:26 +0100)]
template.render() should not use a context, just a dict
Magnus Hagander [Fri, 23 Mar 2018 14:25:26 +0000 (15:25 +0100)]
Fix InvoicePresentationWrapper not to inherit
It already stored the value inside itself, so there's no value to
inheritance and it breaks with newer djangos
Magnus Hagander [Fri, 23 Mar 2018 14:24:30 +0000 (15:24 +0100)]
Use render instead of render_to_response in some apps
For accounting, elections, invoices and memberships use the new way of
doing rendering. This is a backwards compatible mechanical change for
the simple apps.
Magnus Hagander [Fri, 23 Mar 2018 14:22:28 +0000 (15:22 +0100)]
Update format of URL listings
Needed for compatibility with newer django. Fully backwards compatible.
In passing, tabify the list of urls, since we're rewriting every line
anyway.
Magnus Hagander [Fri, 23 Mar 2018 14:19:07 +0000 (15:19 +0100)]
Remove unused import
Magnus Hagander [Fri, 23 Mar 2018 13:50:14 +0000 (14:50 +0100)]
Use selectable for registrator in /admin/
This was missed when the registrator field was added for multireg
Magnus Hagander [Fri, 23 Mar 2018 13:48:10 +0000 (14:48 +0100)]
Upgrade django-selectable import
Magnus Hagander [Tue, 20 Mar 2018 15:11:32 +0000 (16:11 +0100)]
Add small tool to refund (bulk) paypal donations
Mostly untested for now since the paypal sandbox is down as usual.
Magnus Hagander [Tue, 20 Mar 2018 09:33:40 +0000 (10:33 +0100)]
Truncate paypal refund texts at 200 characters
Seems the new style fraud reversal refunds put the entire email in the
transaction text. Our accounting system is limited at 200..
Magnus Hagander [Tue, 20 Mar 2018 09:30:48 +0000 (10:30 +0100)]
Oops, paypal donation text was in two places
Turn it into a settings.py variable instead, so this mistake isn't made
next time.
Magnus Hagander [Tue, 20 Mar 2018 09:22:12 +0000 (10:22 +0100)]
New transaction text from new style paypal donation button
Need to match this one to not generate errors and thus emails to
treasurer@.
Magnus Hagander [Tue, 20 Mar 2018 09:20:41 +0000 (10:20 +0100)]
Seems there was one more unicode issue in the paypal reports
Magnus Hagander [Tue, 20 Mar 2018 09:19:54 +0000 (10:19 +0100)]
Attempt another unicode fix in paypal reports
Magnus Hagander [Sun, 18 Mar 2018 13:38:51 +0000 (14:38 +0100)]
Add check constraint to enforce payment fields
We cannot have both an invoice_id and a bulkpayment_id on a registration
(because it can really only be paid once). Enforce this with a CHECK
constraint.
Magnus Hagander [Sun, 18 Mar 2018 13:27:20 +0000 (14:27 +0100)]
Reference a new paypal donation button
Let's see if cycling the donation button id stops some of the spam :/
Magnus Hagander [Mon, 12 Mar 2018 15:22:01 +0000 (16:22 +0100)]
Unicode fix for signup emails
Magnus Hagander [Sun, 11 Mar 2018 17:47:08 +0000 (18:47 +0100)]
Make it possible to control badge pagebreaks in report generation
Just like borders it makes sense to be able to control this when the
PDFs are written, not just when the template is built.
Vik Fearing [Sun, 11 Mar 2018 06:34:15 +0000 (01:34 -0500)]
Fix waitlist field showed on registration list
Text said offered until, but time shown was offered since. Change to
actually show offered until, as that's the most useful value.
Magnus Hagander [Sat, 10 Mar 2018 15:01:37 +0000 (10:01 -0500)]
Support using google charts trendlines in time reports
Instead of just assuming that nothing at all will happen from the
current day, use the trendline functionality in google charts to map it.
Trendlines will be applied to only the latest of the conferences if more
tha none is picked -- this seems to be what google supports.
Trendlines are only supported for multiconference reports, mostly for
this reason.
Magnus Hagander [Thu, 8 Mar 2018 15:20:46 +0000 (10:20 -0500)]
Add basic ability to cancel registrations without invoices/refunds
For registrations that have a single invoice *and* are eligible for a
refund, we already had working cancelation. But it did not work for bulk
invoices or non-refundable cancelations, which both required manual work
through /admin/ to cancel them. This still does not automate bulk
invoice refunding, but at least provides the ability to perform such
refunds as two-step operations, and it fully supports canceling without
refund.
This also adds sending of email on all cancelations, both those that are
done without refund, and those that are done with a refund like before.
Previously, attendees of those would only receive an invoice refund
notice. We now also send an explicit "your registration has been
canceled" email, if welcome emails have been enabled for the conference.
Magnus Hagander [Wed, 7 Mar 2018 18:35:45 +0000 (13:35 -0500)]
Don't flag vouchers/discounts as used until multireg completed
If the invoice details are not filled in, we generate an error in the
form. But at the time we had already flagged the voucher/code as used,
and thus the next create would now fail saying the code has already been
used.
Fix this by setting a savepoint at the beginning and roll back to it in
the failure case.
Magnus Hagander [Wed, 7 Mar 2018 18:16:42 +0000 (13:16 -0500)]
Don't ask for invoice details for zero-euro invoices in multireg
We're not going to create an invoice anyway, so let's not ask for the
details.
Magnus Hagander [Wed, 7 Mar 2018 18:09:39 +0000 (13:09 -0500)]
Move create invoice higher up on multireg page
Magnus Hagander [Wed, 7 Mar 2018 16:19:43 +0000 (11:19 -0500)]
More clearly indicate a registration isn't paid in the admin list
Instead of just using red color, also use words!
Daniel Gustafsson [Tue, 6 Mar 2018 13:16:42 +0000 (14:16 +0100)]
Update links to postgresql.org to avoid redirection
Fix http -> https and URL update for the new mailinglist pages.
Daniel Gustafsson [Tue, 6 Mar 2018 13:12:46 +0000 (14:12 +0100)]
We only have a single list so avoid plural wording
If we add more at some point, we can revisit this, but for now
let's use appropriate wording.
Daniel Gustafsson [Tue, 6 Mar 2018 10:43:33 +0000 (11:43 +0100)]
Fix incorrect variable name in ownvote template
The typoed variable name caused the printed text to be ".. you
voted for in , and what .."
Vik Fearing [Mon, 5 Mar 2018 10:04:10 +0000 (11:04 +0100)]
Fix sorting of new attendee list
Use the registration creation date to make sure that the sorting becomes
deterministic, in the event a sort key is not unique (such as
registration type)
Magnus Hagander [Mon, 5 Mar 2018 09:40:30 +0000 (10:40 +0100)]
Fix crash in JSON dump when no badge color was set
There was protection in place for the foreground color, but not for the
background color...
Magnus Hagander [Sun, 4 Mar 2018 17:57:14 +0000 (18:57 +0100)]
Show more status about uncompleted regs
Show if invoice is created, or if bulkpay is created.
Magnus Hagander [Sun, 4 Mar 2018 17:47:46 +0000 (18:47 +0100)]
Don't list unfinished registrations as speakers for unattached sessions
Magnus Hagander [Thu, 1 Mar 2018 15:52:13 +0000 (16:52 +0100)]
Include all volunteers in statistics, not just active ones
Magnus Hagander [Thu, 1 Mar 2018 15:20:19 +0000 (16:20 +0100)]
Fix query for emails to signups
By a copy/paste mistake, the query would always exclude people who had
responded, even when picking "all" or "people who have signed up".
Magnus Hagander [Thu, 1 Mar 2018 14:57:12 +0000 (15:57 +0100)]
Indicate sender and suffix on the signup email form
Content was already there in the mail, but make it clear to the user
what it looks like.
Magnus Hagander [Thu, 1 Mar 2018 14:51:13 +0000 (15:51 +0100)]
Fix relative links on registration form
With the new multireg system, all relative links need to be prefixed
with a variable, but the mails, signups and wikis were missed. Absolute
links and page-relative links don't require a prefix.
Magnus Hagander [Wed, 28 Feb 2018 10:19:58 +0000 (11:19 +0100)]
Add functionality to send email to people based on signup
This makes it possible both to send to people who have been added to a
signup (for exampe, to announce the signup), but also to people based on
which selections they made in the signup (e.g. yes or no).
It's only possible to pick one specific answer, so if one wants to cover
multiple answers (such as "yes", and "yes with a +1") emails simply have
to be sent more than once.
Emails are delivered as-is, and a note sent to conference organizers. In
particular, they do *not* show up on the dashboard under sent emails.
For things to show up there, the regular email sending must be done.