Add confirmation modals for removing members, move danger zone to edit
make use of django-safedelete library
Add django-safedelete to poetry
Move transfer ownership functionality to leave modal
soft_delete -> delete
don't show invitation role in inline table
python magic to reuse same form for create/edit org
Add invite_id and other Org model+procedure changes
Add invitation page
Add signals to auto-delete orgs and auto-add members
add invitation page
Add email templates
Use UniqueConstraint instead of unique_together for membership
rename get_route_url -> get_app_route_url in orgs/
Add orgs/tasks.py
Remove gooey_ui dir
gooey gui renaming
procfile: use && instead of ; between cd and npm run
rename st->gui in account.py
rename st -> gui
make org page only accessible to admins
feat: add billing support for orgs (db + ux)
feat: set initial credit balance for first org created by user
feat: add billed org to saved run & script to migrate org_id for existing saved runs
fix: add filter condition in billed_org migration script to only run on historical data
fix: sync migrations in bots app with master
fix: type check for user.get_or_create_personal_org
add: make billing tab work with org instead of AppUser
fix: remove billing from org page
feat: use set_org_subscription instead of set_user_subscription
fix: phone number field in org.get_or_create_stripe_customer
add org to list view in transactions admin
fix: types in orgs.models
add transaction migration to org billing migration script
Q/A checklist
[ ] If you add new dependencies, did you update the lock file?
poetry lock --no-update
[ ] Run tests
ulimit -n unlimited && ./scripts/run-tests.sh
[ ] Do a self code review of the changes - Read the diff at least twice.
[ ] Carefully think about the stuff that might break because of this change - this sounds obvious but it's easy to forget to do "Go to references" on each function you're changing and see if it's used in a way you didn't expect.
[ ] The relevant pages still run when you press submit
[ ] The API for those pages still work (API tab)
[ ] The public API interface doesn't change if you didn't want it to (check API tab > docs page)
[ ] Do your UI changes (if applicable) look acceptable on mobile?
[ ] Ensure you have not regressed the import time unless you have a good reason to do so.
You can visualize this using tuna:
Executed in 1.15 secs fish external
usr time 2.22 secs 86.00 micros 2.22 secs
sys time 0.72 secs 613.00 micros 0.72 secs
To reduce import times, import libraries that take a long time inside the functions that use them instead of at the top of the file:
```python
def my_function():
import pandas as pd
...
Legal Boilerplate
Look, I get it. The entity doing business as “Gooey.AI” and/or “Dara.network” was incorporated in the State of Delaware in 2020 as Dara Network Inc. and is gonna need some rights from me in order to utilize my contributions in this PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Dara Network Inc can use, modify, copy, and redistribute my contributions, under its choice of terms.
Q/A checklist
To measure import time for a specific library:
Executed in 1.15 secs fish external usr time 2.22 secs 86.00 micros 2.22 secs sys time 0.72 secs 613.00 micros 0.72 secs
Legal Boilerplate
Look, I get it. The entity doing business as “Gooey.AI” and/or “Dara.network” was incorporated in the State of Delaware in 2020 as Dara Network Inc. and is gonna need some rights from me in order to utilize my contributions in this PR. So here's the deal: I retain all rights, title and interest in and to my contributions, and by keeping this boilerplate intact I confirm that Dara Network Inc can use, modify, copy, and redistribute my contributions, under its choice of terms.