jonathangarro / sims-portal Goto Github PK
View Code? Open in Web Editor NEWIFRC Surge Information Management Support Portal
IFRC Surge Information Management Support Portal
The availability report tool will manage start and end dates, but when someone supports a response, it should just be binary: they either did or did not do something, and the products they produce or support on will serve as the key metric of support.
Submitting the upload form for adding (not assigning) a badge in the system without attaching a file gives a generic 502. Add validation on upload route to produce error message if no file attached.
On mobile, the Surge Information Management Support
title gets truncated. Let's shrink the size of the title and the nav links a bit.
The read.users
endpoint on the Slack API only allows you to ping it once per minute, which can cause problems when multiple people are signing up at once as that call is necessary for validating that they are a SIMS member.
Propose looking into a Redis layer to cache that list in order to avoid multiple calls.
Implement similar logic as the registration route that checks for existing emails before accepting the user input. Trying to change your email to one that is already associated with someone does throw an error in werkzeug but it should give the end user a more legible error via Flash()
The script that downloads new surge alerts and sends the information to the SIMS Slack doesn't capture the new Molnix tag for rotation number. Need to update the DB model to include that field, then add to the Slack message that gets sent.
I tried to upload a zipped file containing some QGIS files and it was understandable too large (~52MB). As predicted it didn't upload and gave an error message, but maybe specify in the descriptive text what the file size limit is.
I can't seem to upload a profile photo. I attach the image and click Save Profile, but nothing happens. But I see that Dan was able to upload his photo so I'm not sure why it isn't working for me.
the link is this: https://d3s70q3c7pqvju.cloudfront.net/emergency/62
TypeError
TypeError: object of type 'NoneType' has no len()
When Admins approve a new user registration, they should have a link that verifies opens their contact in Slack to verify that they entered their own and not someone elses.
Configure the cron job with the GET request to Betterstack with each cron job. See site documentation for the specific GET request to fire.
Right now, the front end manages the logic on what tier to display users at for each profile type. For example, if a user is listed as Geospatial Tier 1, then has someone "upgrade" them to Tier 2, the Tier 1 record remains, but the front end handles how to show which via a simple max()
. However, this can cause issues when downgrading users.
Proposed fix: include a conditional in the route for assigning new profile tiers that deletes the existing record if user already has one assigned for that type.
Currently, the Portal collects a person's availability as part of an existing assignment. Discussions have revealed it would make more sense to keep that as a standalone table in the DB, which people report outside of an assignment.
Let's add a table, linked to an emergency and user, that collect's a person's reported availability and interest. You would navigate to the emergency and click an "I'm Interested in Supporting" button that would then replicate the availability route. The guidance would have to make it clear that when you do that, you're blocking off time to be available for tasks that come in that match your skills.
Similar to #26 - this is double counting events that a person supported in multiple ways (e.g. as Remote SIMS Coordinator and then as a Remote Supporter). Fix would involve a .scalar()
SQLAlchemy function.
When redeploying the app to AWS, Docker overrides the existing CSV that the system generates when new emergencies are created. Need to move the storage for that file to S3 to ensure it persists.
consider removing Twitter handle field for profiles?
consider adding a field for Mastodon URL? (e.g. https://fosstodon.org/@OpenDroneMap or https://floss.social/@danbjoseph)
The spinning globe cuts off points too early as they rotate. I've isolated the issue with how I'm using the return value in the drawMarkers
function, but changing the gdistance
to keep them on the globe longer also makes them appear too soon.
Paginate the results fed to the template to prevent overloading the S3 bucket. Let's limit to 30 results per page.
Add Slack icon and link to DM on Slack for profiles. All users will have that Slack ID from when they register, so should be on by default for logged in viewers.
The SQL query feeding the table of users visible when logged in limits results to those that have at least one assignment due to the way the JOIN was done. Need to change the query to show people with zero assignments too.
Show surge alerts for the emergency, with IM-related alerts highlighted, as separate tab on emergency page.
Below the nav-buttons, add a box that offers quick actions for users tagged as remote supporters to the emergency:
On my personal profile page, I clicked "see tiers" on the "support profiles" section on the left of the page (https://rcrcsims.org/profile/view/24), then if I click the badge provided (https://rcrcsims.org/support_profiles/24), it takes me here (https://rcrcsims.org/role_profile/Geo) which displays "Template not found".
This is the same for other people's pages too
In looking through the logs, I'm realizing that the call to Trello on page load when viewing emergency records is unnecessary. Let's add flask-cache
decorator to that page view function and store Trello data for a set period of time to limit the pings.
Right now, the domain is registered on markmonitor.com (not sure why it's there). IT and AWS support walked me through pointing the nameservers to the AWS container via CloudFront, but raised that it would be easier to simply manage everything on Route53 directly in AWS as well. IT seemed to have just one person on the team that knew how to access MarkMonitor, and that feels like a risk.
I'm not sure if this was intentional or not, but when I log in I can no longer see the About page. The default "home" page is the dashboard. It but might be nice to view the remote profiles on the About page without having to log out and then log back in.
A longer-term, nice-to-have feature to further integrate the GO Platform and the SIMS Portal might be to add a connection between the publicly-approved portfolio for the event on the documents tab:
I think we could simply accept incoming requests that serves up the S3 location of the thumbnail, and then link back to the product page on the SIMS Portal.
When users update their availability, the message that goes out right now is a generic "Thanks for reporting your availability" with no contextual info or links. Add a link back to the assignment and include the emergency name in the message.
Right now, the cards feeding the Members page on the external side of the site show all "Active" members. But would be nice to not just completely remove access to people's profiles once they move on.
Add section at bottom of page, with a link from the top, that shows cards for "Inactive" members as well. Should be relatively straightforward:
If that page ends up getting too heavy with lots of members, will need to add pagination to save load times.
If you try to submit a new badge without attaching a file, you get a generic 502 error. I need to add validation on the upload route.
add something at https://d3s70q3c7pqvju.cloudfront.net/static/assets/img/avatars/default.png ?
We have a table showing member support, but possibly worth calling out the SIMS Remote Coordinator(s) separately as a card, similar to the portfolio cards.
Users can tag themselves as collaborators on products that have been posted to the portal, but there currently isn't a way to untag yourself. The route to assign yourself currently:
collaborator_ids
column and loops over it with the user ID of the person trying to add themselvesA route to remove an ID from that list would need to run a similar validation, then run remove()
on the list.
It works fine on my phone, but sounds like older phones freeze up when trying to load the spinning globe on the landing page. Should be able to just turn off that div when the screen size is small.
Reported by Paul K.
The database conversion from SQLite to Postgres seems to have created an issue with the SQL query used to generate the list of existing users:
Jack of All Trades Auto-Assign Failed: invalid literal for int() with base 10: 'Geospatial'
Test out if converting this query to SQLAlchemy would solve the issue.
When updating availability and unchecking previously added dates, user receives a notification that availability was updated.
But when trying to updated once again availability, all previously unchecked dates appear again checked.
When a SIMS Remote Coordinator also serves as a remote supporter (either in parallel or before/after the SIMS Co assignment), the counter above the table ends up double counting them. Need to add a distinct
filter to the SQL.
Let's prioritize people that have added photos. Change the .order_by(User.id)
to include photos.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.