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.
Magnus Hagander [Mon, 26 Feb 2018 19:20:38 +0000 (20:20 +0100)]
Include totals on registration list
Per request from Vik
Magnus Hagander [Mon, 26 Feb 2018 19:12:40 +0000 (20:12 +0100)]
Change some links to buttons for consistency
Magnus Hagander [Mon, 26 Feb 2018 19:08:59 +0000 (20:08 +0100)]
Include waitlist information on new registration list
Magnus Hagander [Mon, 26 Feb 2018 16:09:54 +0000 (17:09 +0100)]
Stop using javascript for selection in list
As pointed out by Vik, that makes for too many issues (and downright
bugs...) when trying to copy/paste things. Instead, use an icon to view.
Magnus Hagander [Mon, 26 Feb 2018 16:03:59 +0000 (17:03 +0100)]
That's supposed to be a semicolon
Magnus Hagander [Mon, 26 Feb 2018 15:56:49 +0000 (16:56 +0100)]
Add admin views to view registrations
This removes the need to use the /admin/ interface, and makes it easier
to drill down into some types of information such as how a registration
was paid.
Magnus Hagander [Mon, 26 Feb 2018 15:57:18 +0000 (16:57 +0100)]
Break out signup querying to it's own function
Magnus Hagander [Mon, 26 Feb 2018 15:25:00 +0000 (16:25 +0100)]
Add properties to get more detailed payment information
This brings back information, recursively through the steps, for exactly
how a bulk payment or invoice was paid.
Magnus Hagander [Mon, 26 Feb 2018 13:41:53 +0000 (14:41 +0100)]
Fix a few incorrect Http404 errors
404 means not found. Not "you don't have permissions".
Magnus Hagander [Mon, 26 Feb 2018 13:34:29 +0000 (14:34 +0100)]
Alert for sessions in Submitted state when schedule is public
We can't start alerting for sessions in submitted state all the time,
but once the schedule is public there should be no sessions in this
state (they should either be rejcted or pending), so highlight the
button at this time to make it clear.
Magnus Hagander [Mon, 26 Feb 2018 13:29:05 +0000 (14:29 +0100)]
Make some buttons on events admin dashboard alert for states
When reports of missing data (missing registrations, missing rooms
etc) are non-empty, the buttons will now highlight the same way we
already did for notifications and waitlist.
Magnus Hagander [Sun, 25 Feb 2018 17:50:52 +0000 (18:50 +0100)]
Fix title of voting button
Magnus Hagander [Sun, 25 Feb 2018 17:50:29 +0000 (18:50 +0100)]
Make it more clear when votes have been cast
Explicitly inform the member that they have voted, and that they can
still change the votes.
Magnus Hagander [Sun, 25 Feb 2018 14:07:37 +0000 (15:07 +0100)]
Teach CM scraper to bypass the personal data request
The website have started requesting a landline phonenumber. At least for
now it's possible to bypass this by asking to be reminded later, so
teach the scraper to do just that.
Magnus Hagander [Sun, 25 Feb 2018 11:31:20 +0000 (12:31 +0100)]
Make sure we load jquery for volunteer schedule
This should really be driven from a template tag instead to avoid
duplicating so much, but one step at a time.
Magnus Hagander [Wed, 21 Feb 2018 18:07:50 +0000 (19:07 +0100)]
Fix unregistered staff report for NULL attendees
Magnus Hagander [Tue, 20 Feb 2018 09:58:16 +0000 (10:58 +0100)]
Fix detection of pending multiregs
The correct detection of pending multiregs is required to show the
"Create invoice" button to users. However, the existing code would look
at the first registration in the list (with no order by) and check if it
was pending, never bothering to look at the rest. Instead, it's supposed
to look at all of them, and indicate true if *any* pending registrations
exist.
Magnus Hagander [Tue, 20 Feb 2018 09:51:50 +0000 (10:51 +0100)]
Handle multiregs with zero cost
This can happen when a user registers multiple users using the new
workflow, and they all use either free reg types (like speaker) or
discount voucher codes.
Magnus Hagander [Mon, 19 Feb 2018 16:15:42 +0000 (17:15 +0100)]
Properly flag vouchercodes as unused on canceled bulk invoices
This was very uncommon before, but now that we use bulk invoices for
multi-reg processing it becomes more common, and this case shows up more
often. We need to mark the vouchercodes as unused in the system,
otherwise we will fail to generate a new invoice for the same
registration once one has been canceled.
Magnus Hagander [Mon, 19 Feb 2018 10:07:50 +0000 (11:07 +0100)]
Fix wording
Magnus Hagander [Mon, 19 Feb 2018 09:32:30 +0000 (10:32 +0100)]
Don't attempt to add errors to a form that's empty
The add_error method of a form will fail if is_valid() has not been
called. So only add the errors in this case -- which means that finalize
was picked. Since this is just the invoice form it's not an issue (it's
a catch-all error path which will only be called if something passed
verification earlier but is now no longer valid, such as an expired
discount code)
Magnus Hagander [Sat, 17 Feb 2018 10:09:10 +0000 (11:09 +0100)]
Add missing import
Magnus Hagander [Fri, 16 Feb 2018 18:30:01 +0000 (19:30 +0100)]
Fix two cases of incorrect casing
Andreas 'ads' Scherbaum [Wed, 7 Feb 2018 19:43:36 +0000 (20:43 +0100)]
Clarify labels on some buttons on event dashboard
Dave Page [Wed, 7 Feb 2018 16:45:51 +0000 (16:45 +0000)]
Show the news on the homepage again.
Magnus Hagander [Wed, 7 Feb 2018 15:16:12 +0000 (16:16 +0100)]
Increase timeout for VAT number lookup service
Magnus Hagander [Wed, 7 Feb 2018 12:13:03 +0000 (13:13 +0100)]
Fix crash in multireg when trying to delete nonexisting reg
We can't delete a registration until it has been saved at least once. So
just avoid trying.
Magnus Hagander [Mon, 5 Feb 2018 12:27:40 +0000 (13:27 +0100)]
Fix register-for-somebody-else wrt special reg types
For a register-for-somebody-else, the attendee is actually NULL when we
try to validate the registration type. We need to especially forbid this
case - those that use these regtypes will just have to make individual
registrations, as they have to be mapped to the actual user account.
Magnus Hagander [Fri, 2 Feb 2018 19:12:12 +0000 (20:12 +0100)]
Change title of bulk invoices
Instead of always saying "bulk invoice", say either "<conf>
registration" or "<conf> multiple registrations" depending on how many
registrations are on it. With the new register for somebody else
workflow it's possible to have a a bulk payment with just one
registration on it, so try to be more clear.
Also change the pages viewing a bulk payment when coming in through the
multireg workflow, to not use that word. Since the old way to do bulk
payments is still around, keep the page titles there.
Vik Fearing [Tue, 30 Jan 2018 12:12:47 +0000 (13:12 +0100)]
Change ConferenceRegistration.payconfirmedat to timestamptz
Patryk Kordylewski [Thu, 1 Feb 2018 15:27:23 +0000 (16:27 +0100)]
Allow sorting talks by speaker in talkvote page
Original patch by author, actual query modified for simplicity by
Magnus.
Magnus Hagander [Mon, 29 Jan 2018 12:18:38 +0000 (13:18 +0100)]
Implement new workflow for registering multiple attendees
In yet another attempt to make it easier for the cases where either
somebody wants to register for multiple colleagues, or just for a single
colleague who cannot register themselves.
This separates out the registrator role from the attendee role in the
database. Regular registrations still work the same way, and sets
registrator and attendee to the same. But it's now also possible to,
using a separate form for each one, make multiple registrations for
other people, by filling out all their details (including email). These
registrations will then automatically generate a bulk invoice.
When the bulk invoice is paid, the registrations attached to it will get
marked as confirmed by the system. They will then also be attached to
the community account of the attendee, if one exists. If one does not
exist, and email is sent to the attendee with a link using the secret
registration token, that makes it possible to attach this registration
to a different account. This means that the user can sign up for an
account (especially easy now that we have oauth logins available) after
the registration has been created, or they can attach it to a different
account if they already have one but it has a different email address
than used on the registration.
Magnus Hagander [Fri, 19 Jan 2018 09:45:39 +0000 (10:45 +0100)]
Update CM scraper
Seems the CM website now requires that you follow *three* redirects as
part of the login process, not two.
Since thre's now that many of them, refactor the code a bit for
readability and ease of use. Who knows when there will be four..
Magnus Hagander [Sat, 13 Jan 2018 17:13:09 +0000 (18:13 +0100)]
Fix typo in comment
Vik Fearing [Fri, 12 Jan 2018 10:57:27 +0000 (11:57 +0100)]
Fix markup thinko
Magnus Hagander [Mon, 8 Jan 2018 16:03:30 +0000 (17:03 +0100)]
Don't explicitly rollback transaction in paypal_error
We can't do that inside a @transaction.atomic block. It's also not
necessary, because paypal_error is only called before any database
modifications are made, and returns out of the view directly.