summaryrefslogtreecommitdiff
path: root/postgresqleu/util/models.py
AgeCommit message (Collapse)Author
2024-04-17Properly fix the hashval not null issueMagnus Hagander
Previous commit (878d1540) applied the wrong fix. The field should still be NOT NULL, the bug was actually in the trigger being created in the earlier migration which was incorrectly missing INSERT. Fix this and change the field back, which more or less reverts 878d1540 but does it with a new migration so that any existing data gets fixed.
2024-04-16Fix hashval NULLabilityMagnus Hagander
Needs to allow NULL on INSERT, which will then get overwritten by the trigger.
2024-04-15Store and use hash of benefit imagesMagnus Hagander
Store the hash (md5 is good enough here) of the benefit images, and maintain it using a trigger. This hash is used to implement etag-handling for downloads of the image. We don't expect that part to pay off very well since it's logged in users only, but the hash will be useful in some upcoming patches, and once we have it implementing the etag handling is basically free.
2020-07-13Remove unused importsMagnus Hagander
2020-05-18Complete overhaul of social media integrationsMagnus Hagander
* Remove the hard-coded twitter implementation and replace it with an infrastructure for pluggable implementations. * Separate out "social media broadcasting" (public twitter posts) from "private notifications" (DMs) and invent "private broadcasting" (notifications sent only to attendees of a conference) and "organisation notifications" (sent to organisers). * Add the concept of a Messaging Provider that's configured on a Conference Series, which maps to a twitter account (or similar in other providers). Replace "incoming twitter active" flag on a conference with a setting on this messaging provider for "route messages to conference". This way the messaging doesn't have to be reconfigured for each new conference in a series, and we also automatically avoid the risk of having two conferences getting the same input. * For each conference in a series, the individual Messaging Providers can be enabled or disabled for the different functionality, and individual channels be configured when applicable. * Add implementations of Twitter (updated, social broadcasting and private messaging support), Mastodon (social broadcasting and private messaging) and Telegram (attendee boadcasts, private notifications, and organisation broadcasts) * Add webhook support for Twitter and Telegram, making for much faster reactions to incoming messages. * Hardcoded news twitter post accounts, and replaced with MessagingProviders per above that are not attached to a conference. * Add a daemon that listens to PostgreSQL notifications and sends out broadcasts and notifications for quicker action (if not enabled, a scheduled task will send them out every 10 minutes like before) * In making broadcast posts, add support for the fact that different providers have different max length of posts (e.g. Twitter currently has 280 and Mastodon 500), and also roughly account for the effects of URL shorterners on posts. * Add a button to registration dashboards to send DMs to attendees that have configured notification. * Send "private broadcasts" ahead of any talks to keep people posted of talks. For now this is always enabled if a channel is set up for private broadcasts, we may want to consider making it more configurable in the future. There are still a lot of tables and files referring Twitter in the tree, and some of those will be renamed in a future commit to make tracking of changes easier. Fixes #29 Fixes #13
2019-10-29Simplify InlineEncodedStorage and use bytea in tableMagnus Hagander
Now that we are not using it as a django field anymore, simplify InlineEncodedStorage to just natively do the two methods that we actually need. While at it, change it to use bytea internally instead of base64 encoded in text, and add an appropriate unique constraint that was previously missing.
2018-12-14Fix blankline related warningsMagnus Hagander
2018-12-14Replace tabs with spacesMagnus Hagander
In an effort to close up with PEP8, we should use spaces for indent rather than tabs... Time to update your editor config!
2014-12-21Add basic sponsorship management moduleMagnus Hagander
While there are probably a lot of edge cases left, there are several pieces of functionality in this: * Sponsor sign-up. A new sponsor can sign up, and download their contract on the site. For low level sponsorship (controlled by a checkbox), they can generate and pay their own invoice right away, with an "implicit agreement of the contracf". For higher level sponsorships, they can download the contract and get instructions to sign it and return by email. * Sponsorship representative management. This gives each sponsor the ability to add (and remove) other of their staff to the sponsorship who will then receive all emails, and be able to make selections per below. This should help those sponsors that have a more distributed staff, and takes the load off us for trying to keep track of it. * Sponsorship benefit management. This gives each sponsor a chance to "claim" benefits, so we don't have to track it down individually. For example, they can indicate directly on the website if they want a sponsor table or not. This will also include uploading images (the size of which will be verified against the rules), generating attendee vouchers etc. There will definitely be followups to do manually in the future as well, though hopefully less than before. * A message center. All emails to sponsors should be sent through this, and can as such be linked to which levels they go to. They're kept in the system, so that when a new sponsor of level X signs up, they can view all the old emails to that level that has previously been sent, so we don't need to keep track of back-posting those. This also goes for the case when a sponsor adds a new representative, per above. * An admin dashboard (linked from the main events dashboard) from which we can track the status of sponsorships and their benefits. The whole feature has to be enabled by enabling the "call for sponsors" box on a conference, without that all views will be empty for it. This way we an incrementally enable it, or just chose to enable it for specific conferences. There's definitely more style-work to be done, right now things are just plain rendered in the main website styles with no adaptions. And certainly many edge cases and processes that can be improved on :)