Magnus Hagander [Mon, 11 Jun 2018 13:50:31 +0000 (15:50 +0200)]
Fix error message from twitter validator
Magnus Hagander [Mon, 11 Jun 2018 12:13:55 +0000 (14:13 +0200)]
Fix fix for file not found
The old one was broken for URLs with .. in them, the new one was broken
for everything else. Let's see if we can get them both fixed at once.
Magnus Hagander [Mon, 11 Jun 2018 11:51:15 +0000 (13:51 +0200)]
Fix error handling for static fallback not found
This should raise an actual 404 error and not throw a random exception
caused by the django upgrade..
Daniel Gustafsson [Mon, 4 Jun 2018 17:56:42 +0000 (19:56 +0200)]
Fix typo
Magnus Hagander [Wed, 23 May 2018 19:40:39 +0000 (21:40 +0200)]
Remove accidental field from header of voucher report
Magnus Hagander [Wed, 23 May 2018 18:54:52 +0000 (20:54 +0200)]
Add support for token based access to admin information
This adds a new object for each conference that is an AccessToken. This
token can be given permissions to access specific types of data in a
structured format, which can then be loaded using an URL with that token
in it.
Initially this exports a number of datasets that are useful to feed into
a budget spreadsheet or similar, but the model and code is structured to
make it easy to add completely different exports as well in the future.
Magnus Hagander [Wed, 23 May 2018 17:49:05 +0000 (19:49 +0200)]
Add a ChoiceArrayField to form utils
This allows the rendering of a postgres array of choices in a field.
Magnus Hagander [Wed, 23 May 2018 17:48:09 +0000 (19:48 +0200)]
Remove old debugging code
Magnus Hagander [Wed, 23 May 2018 17:46:25 +0000 (19:46 +0200)]
Support setting initial values on backend form instances
Magnus Hagander [Wed, 23 May 2018 17:32:31 +0000 (19:32 +0200)]
Support readonly fields in backend editors
Magnus Hagander [Tue, 22 May 2018 10:43:13 +0000 (12:43 +0200)]
Update user agent for twitter checks
Seems twitter started returning redirects for how we did it, so change
our user agent to pretend to be Firefox.
In passing, rewrite check to use requests, because everything becomes
much easier that way.
Magnus Hagander [Tue, 22 May 2018 08:39:02 +0000 (10:39 +0200)]
Fix location for nordic pgday in activities report
Guillaume Lelarge [Mon, 21 May 2018 13:35:01 +0000 (15:35 +0200)]
Fix year typos
Guillaume Lelarge [Mon, 21 May 2018 13:31:02 +0000 (15:31 +0200)]
Add activities and financial reports for GA 2018
Magnus Hagander [Fri, 18 May 2018 09:21:56 +0000 (11:21 +0200)]
Track when a sponsor signed up, not just when it was confirmed
Noted by Daniel that this can be quite useful when tracking down
sponsors with missing contracts.
Magnus Hagander [Thu, 17 May 2018 19:42:16 +0000 (21:42 +0200)]
Implement proxy voting in meeting-votes
A proxy voter is given a name and a unique proxy voting key. This voting
key (generated the same way as our other "secure tokens") can be used to
access the voting for this member, and then return the same access to
the meeting.
A proxy voter can be assigned up to 4 hours before the meeting, this
being the same time as when a regular member can log in to access their
meetings.
Including review/fixes from Dave
Magnus Hagander [Wed, 16 May 2018 10:54:30 +0000 (12:54 +0200)]
Use actual URL field for the sponsor signup URLs
This enables both client side validation that what's put in there is an
URL, and server side verification of that.
We don't ping back and check the URL, because that could be used to do
evil things to say APIs that check source IP. We may want to look into
doing that securely in the future, but this is a good starting point.
Magnus Hagander [Tue, 15 May 2018 12:48:52 +0000 (14:48 +0200)]
Fix sponsor email admin viewing to use correct template
Magnus Hagander [Tue, 15 May 2018 12:47:09 +0000 (14:47 +0200)]
Add missing breadcrumbs to sponsor pages
Magnus Hagander [Tue, 15 May 2018 12:44:29 +0000 (14:44 +0200)]
Show sponsor emails on the send mail page
So that previous emails sent can be viewed
Magnus Hagander [Mon, 14 May 2018 13:12:49 +0000 (15:12 +0200)]
Add extra fields to all VAT queries
It seems some countries, such as Spain, will fail in VAT validation if a
set of extra fields are not included. These fields can be set to blank
and it works -- and it seems to work fine to include them for other
countries as well, so let's include them in all requests and set them to empty.
Magnus Hagander [Mon, 14 May 2018 13:11:10 +0000 (15:11 +0200)]
Add simple view to test VAT number validation for sponsors
Previously the only way to test it was either commandline on the server
or by actually creating an invoice. Instead, add a simple field to paste
a VAT number into for testing.
Dave Page [Fri, 11 May 2018 15:45:41 +0000 (16:45 +0100)]
Note that the policy may change at any time, and that if it does, we'll notify the general mailing list.
Magnus Hagander [Wed, 9 May 2018 15:21:41 +0000 (17:21 +0200)]
Make twitter and nickname fields optional on conference level
Just like we can turn on/off the asking of tshirt and food information,
make it possible to decide if a conference should ask for twitter and
nickname information.
Magnus Hagander [Wed, 9 May 2018 12:06:49 +0000 (14:06 +0200)]
Pass conference to reports template
This fixes missing breadcrumbs in backend interface.
Magnus Hagander [Wed, 9 May 2018 12:05:19 +0000 (14:05 +0200)]
Don't ask all registrants for phone numbers
We don't really need it, so we shouldn't ask for it.
Instead, make it possible to ask for it on a per-registration-type
basis, and make it mandatory on that. This means we can now say that for
example Staff members and Speakers need to provide a phone number, but
not attendees.
Magnus Hagander [Mon, 7 May 2018 19:59:21 +0000 (21:59 +0200)]
s/cost/price/
Magnus Hagander [Mon, 7 May 2018 19:58:56 +0000 (21:58 +0200)]
Include sponsorship cost on signup page
Magnus Hagander [Mon, 7 May 2018 19:53:01 +0000 (21:53 +0200)]
Make registration days unique per conference
Magnus Hagander [Mon, 7 May 2018 19:30:16 +0000 (21:30 +0200)]
We have metadata editors for almost everything now
Stop saying we don't on the admin dashbaord
Magnus Hagander [Sat, 5 May 2018 17:42:59 +0000 (19:42 +0200)]
Fix board email address on trademark page
It should be board@postgresql.eu, not .org.
Dave Page [Thu, 3 May 2018 10:46:23 +0000 (11:46 +0100)]
Add trademark info.
Magnus Hagander [Fri, 27 Apr 2018 13:31:44 +0000 (15:31 +0200)]
Update privacy policy with a lot more details
In particular, details about what we store, how long we store it, and
why. It's always nice to have, and extra important in light of new
regulations coming up.
Magnus Hagander [Thu, 26 Apr 2018 19:33:39 +0000 (21:33 +0200)]
Make it possible to view reports on anonymized data
In particular, make it possible to view tshirt size distributions even
after we have anonymized the data, since we keep aggregates on it.
Magnus Hagander [Thu, 26 Apr 2018 19:23:34 +0000 (21:23 +0200)]
Support purging of personal data from conference registrations
Once a conference is in the past, purge physical addresses, phone
numbers, dietary needs and tshirt sizes from registrations, since they
can be considered personal data and we shouldn't keep that around.
Before purging, aggregate values for tshirt sizes and dietary needs in
an anonymous way, to make sure we can look back at past events to get
statistics for future ones.
Magnus Hagander [Thu, 26 Apr 2018 10:41:44 +0000 (12:41 +0200)]
Allow opt-out functionality without a token
A token is used to easily access opt-out when the user is not
registered. But we should still allow users that still know their
account to just use their existing login to control all opt-out
settings.
Dave Page [Thu, 26 Apr 2018 10:23:38 +0000 (11:23 +0100)]
Fix typo.
Dave Page [Thu, 26 Apr 2018 09:55:20 +0000 (10:55 +0100)]
Update Django version
Dave Page [Thu, 26 Apr 2018 09:13:25 +0000 (10:13 +0100)]
Ignore pycharms project files.
Magnus Hagander [Sun, 15 Apr 2018 17:08:54 +0000 (19:08 +0200)]
The sponsor VAT saga continues...
So we have a new round of rules, let's see if they are the final ones
this time:
* If sponsor is from France with VAT number, charge VAT normally
* If sponsor is from rest of EU with VAT number, reverse VAT
* If sponsor is from rest of EU *without* VAT number, charge VAT
* If sponsor is from outside EU, don't charge VAT
(The last point is the new one)
Magnus Hagander [Sat, 14 Apr 2018 18:38:07 +0000 (20:38 +0200)]
InvoiceManager must be instantiated
Magnus Hagander [Sat, 14 Apr 2018 18:37:22 +0000 (20:37 +0200)]
Add missing import
Magnus Hagander [Sat, 14 Apr 2018 18:36:49 +0000 (20:36 +0200)]
Add missing import
Magnus Hagander [Sat, 14 Apr 2018 18:36:06 +0000 (20:36 +0200)]
Add missing import
Magnus Hagander [Sat, 14 Apr 2018 18:30:52 +0000 (20:30 +0200)]
Add tool to flag completed Trustly refunds
For Trustly we don't get separate notificatoins when refunds complete.
So instead, add this tool that polls the status of any pending refunds,
and completes the process when they are listed as refunded.
This has been missing functionality since we added Trustly payments, but
we haven't had any refunds to process yet..
Magnus Hagander [Sat, 14 Apr 2018 18:14:19 +0000 (20:14 +0200)]
Send alerts if API issued refunds don't complete within 3 days
Magnus Hagander [Fri, 13 Apr 2018 12:50:42 +0000 (14:50 +0200)]
Fix typo
Magnus Hagander [Wed, 11 Apr 2018 17:01:53 +0000 (19:01 +0200)]
Add some missing spacing
Magnus Hagander [Wed, 11 Apr 2018 16:29:17 +0000 (18:29 +0200)]
Support a "select all" button when copying
Magnus Hagander [Wed, 11 Apr 2018 16:05:27 +0000 (18:05 +0200)]
Implement copy functionality for basic models
teis adds copy functionality for stration types, registration classes,
tracks, rooms, sessions, schedule slots, volunteer slots and
feedback questions.
This replaces all the functionality in the old cli tool, so remove that
tool.
Magnus Hagander [Wed, 11 Apr 2018 15:40:20 +0000 (17:40 +0200)]
Add support for copying data from previous conference
This will make it easier to copy things like feedback, schdule slots
etc. Uses the backend list functionality already inplace, and supports
basic transformation of the data (such as adding days to a timeslot so
that it falls within the new conference days). Each different type of
object needs to implement the actual copying functionality, to make sure
it can deal with mappings and such.
Magnus Hagander [Wed, 11 Apr 2018 15:33:02 +0000 (17:33 +0200)]
Use DataTables for backend editing lists
This allows client side sorting and searching of the tables. It's not
super-adapted to our needs, but this is only for internal use anyway,
and it makes a lot of things a lot easier to work with.
Magnus Hagander [Wed, 11 Apr 2018 16:06:09 +0000 (18:06 +0200)]
Make the plural name of a form available
Magnus Hagander [Tue, 10 Apr 2018 13:39:38 +0000 (15:39 +0200)]
Change default for allow_new/allow_delete
Default should reflect what every place except two were using :) That
saves a lot of repeated code.
Magnus Hagander [Thu, 12 Apr 2018 10:13:41 +0000 (12:13 +0200)]
Fix db storage class for new django
Magnus Hagander [Fri, 6 Apr 2018 11:54:08 +0000 (13:54 +0200)]
Remove leftover testing/debugging code :)
Magnus Hagander [Fri, 6 Apr 2018 11:51:36 +0000 (13:51 +0200)]
Allow wider popovers
Magnus Hagander [Fri, 6 Apr 2018 11:44:51 +0000 (13:44 +0200)]
Add view to show all pending invoices for a conference
Andreas Scherbaum [Thu, 5 Apr 2018 22:33:30 +0000 (00:33 +0200)]
Add description how the reg transfer works.
Magnus Hagander [Thu, 5 Apr 2018 14:36:50 +0000 (16:36 +0200)]
Add backend editor for discount codes
Magnus Hagander [Thu, 5 Apr 2018 14:34:46 +0000 (16:34 +0200)]
Fix breadcrumbs capitalization
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