* Query optimizations
* more sql optimizations
* checkpoint
* fix migration
* add UUID field to person
* use django signals to signal that clickhouse needs to be updated
* cleanup person logic
* cleanups
* update migration
* Don't setup the django signals unless we are for sure using ee setup
* expecting back to 30 queries for capturing with new person
* add .venv to .gitignore
* add env back to .gitignore
Co-authored-by: Ubuntu <ubuntu@ip-172-31-73-18.ec2.internal>
* Add missing migration
* Add generate_random_token() model util
* Move PublicTokenAuthentication to utils
* Make use of generate_random_token
* Add User.personal_access_token field
* Add PersonalAccessTokenAuthentication
* Fix PublicTokenAuthentication
* Fix migration and auth import
* Add personal_access_token to user API
* Update Setup.js
* Support trailing slash in API
* Improve PAT auth quality
* Add django-rest-hooks requirement
* Update settings.py for rest_hooks
* Fix django-rest-hooks requirement
* Bring back API routes with no double trailing slash
* Rename posthog.api.team to team_user
* Add API TODO
* Ad PAT auth with X-PAT HTTP header
* Replace User.personal_access_token with PersonalAPIKey model
* Fix PersonalAPIKey max_lengths
* Describe posthog.models.utils.generate_random_token better
* Add personal_api_key to API
* Add authenticate_header to PersonalAPIKeyAuthentication
* Add hook API endpoint
* Use django.utils.timezone in place of datetime.datetime
* Add Personal API Keys to Setup
* Sort personal_api_keys in ORM
* Add Action.on_perform()
* Remove requirements.txt comment
* Add a
* Add REST hook tasks
* Optimize PersonalAPIKeyAuthentication query
* Add a trailing slash version of /e endpoint
* Add team field to PersonalAPIKey model
* Add personal API key support to capture endpoint, get_cached_from_token
* Reject personal API keys from inactive users
* Add extra_properties_json field to /capture
* Improve PAK auth header regex
* Use custom hook model
* Deliver hooks
* Handle action.on_perform
* Consolidate userLogic in userLogic.tsx
* Update PersonalAPIKeys.js
* Make PersonalAPIKey foreign keys read-only
* Update requirements/dev.txt
* Make PersonalAPIKeys TSX
* Fix conflict
* Fix migration
* Fix minor mishaps
* Update and fix tests
* Use CharField of random 32 bits as hook.id
* Fix conflicting migrations
* Fix ValidationError in HookSerializer.validate_event
* Use query param in /api/event/actions ID filtering
* Rename endpoint `hook` to `hooks`
* Satisfy mypy
* Add tests
* Use DRF serialization in action_defined and annotation_created triggers
* Update migration leafs
* Make mypy ignore rest_hooks
* Update Django signal receiver names
* Update TS dependencies
* Revert "Update TS dependencies"
This reverts commit 7fc26fefcd.
* Add field user to Hook model
* Update migration leafs
* Fix circular import
* Fix some code
* Install git before running pip install in Dockerfiles
* Improve personal API keys UI
* Satisfy mypy
* Reword key label placeholder
* Add personal API key support to /api/user/*
Unfortunately these endpoints are still limited by CSRF protections at the moment, so not accessible outside PostHog itself.
* Improve PersonalAPIKeyAuthentication and add CsrfOrKeyViewMiddleware
* Run collectstatic before test
* Don't install dev dependencies in CI
* Update dependency installation order in CI
* Fix bug and describe PersonalAPIKeyAuthentication
* Fix CI issues
* Fix typing issues
* Fix more typing issues
* Use /api/personal_api_keys to list keys
* Move REST hooks (and therefore Zapier) to ee/
* Refactor personal API logic with kea-loaders
* Add "More about API authentication in PostHog docs."
* Update PersonalAPIKeys.tsx
* Use TestMixin
* Fix "Authentication" that should've been "Authorization"
* Add option to skip self.client.force_login in API tests
* Include team_id and user_id in personal API key serialization
* Update test_hooks.py
* Add personal API key tests
* Remove leftover
* Make ee.settings override posthog.settings
* Don't directly import from models
* Remove unused imports
* Fix mypy issues
* Fix HOOK_DELIVERER
* Use decorator for /api/user PAK auth
* Don't fire REST hook if user doesn't have "zapier" feature
* Import Optional
* Reword to "premium Zapier"
* Make mypy happy
* Fix test_delete_personal_api_key
* Fix misclick
* Fix and test /capture with personal API key
* Make mypy happy
* Remove extra_properties_json
* Resolve migrations
* Remove apt-utils
* Optimize and test PAK user.is_active filtering
* Replace DEBUG true with 1
* Remove unused instance_id
* Improve typing
* Fix deletion toast
* Refactor CopyToClipboard and use it in PAKs
* Use toast.success
* Update migrations
* Fix migration
* Fix migrations
* Complete merge
Co-authored-by: Tim Glaser <tim@glsr.nl>
* #1292: Added tabs for switching between user types in People
* updated fetchPeople implementation
* refactored and fixed pagination
* fixed search query across tabs issue
* updated api query param for person
* added tests
* added tests & fixed queries
* added cypress tests
* Improve code style
* Improve regex and add compatilibity with demo data
* Improve variable naming
* Switched user identifying mechanism
* made it demo friendly
* Improved method for identifying users, added tests
* fixing minor mistakes
* made cypress test more robust
* cypress test update
* fixed migrations conflict
* updated cypress tests
* Optimize process_event conditions
* Update comment
* Make _set_is_identified more versatile
* Update demo.py
* Rename queryset_anonymous_pass
* Improve rudimental identification detection
* User kea-router for All Users category tab
* Optimize People
* Make category play well with cohort in People
* Simplify way of filtering by identification
* Remove need for deep copy
* Check location in People tabs E2E test
* Update test_process_event.py
* Black test_process_event.py
* Fix test_set_is_identified
* Try E2E test with cy.wait(200)
* Try E2E with more waiting
* Don't check location in E2E test
* Add test_category_param
* Update migration
Co-authored-by: Twixes <dev@twixes.com>
* Added ability to customise Slack/Teams messages with additional context
* Refactor slightly and improve UX
* Reword Setup #webhooks description
* Update test_user.py
* Improve Edit action webhook configuration UI
* Refactor webhooks to be more universal
* Change tasks.slack to tasks.webhooks
* Make message format input clearer
* Make post_event_to_webhook more resilient with retries
* Minor fixes
Co-authored-by: Twixes <dev@twixes.com>
* add test for caching funnels and refreshing
* Closes #1020 WIP shared dashboards
* Make webpack work
* Progress?
* Hash the entire filter and add share tokens
* Make webpack work properly
* Fix sentry error
* Tighten up the caching logic
* Correctly refresh items and show in frontend'
* Add some padding
* fix caching, update layout
* Add cypress tests
* Fix merge conflict mistake
* Convert share_token to boolean
* Hide text when small
* Redo tooltip for lock
* Remove move cursor when in shared mode
* Improve spacing
* Fix state being incorrect
* Use selectors instead of value
* Use const instead of let
* Fix type errors et al
* Increase cache size
* Fix dashboard tests
* Fix team tests
* Add wait time
* Fix tests
* Fix refreshing
* Fix dashboard tests
* Fix test
* Excluded deleted dashboard items and don't show refreshing
* Fix renaming issue
* Fix migrations and fix display of status change
* Use grid for responsive header
* Don't load annotations
* Eslint
* Fix variable naming
Co-authored-by: Eric <eeoneric@gmail.com>
* Update entityFilterLogic for filter.math_property
* Add new math types and math_property to ActionFilterRow
* Add backend support for new math types
* Update data-attrs
* Add dropdown Cy test
* Add API tests
* Improve process_math style
* Add resiliency to non-number property value occurences
* Annotate for clarity
* Update UI text
* Update UI text a bit more
* Reword tooltip
* Update UI slightly
* Update capitalization
* Improve internal style
* Improve code style
* Filter out property `token`
* Utilize formatted string
* Don't show empty dropdown contents
* Add event_properties_numerical for the future
* Fix dropdown button title
* Make Async processing of event -> action mappings optional for large installations
* black format python
* Bump frequency for mapping Events -> Actions to hourly
* make the recalculation of action -> events incremental
* just use naive datetime for default start
* add created_at field for events to base incremental event->action mapping off of
* use timezone aware now's
* remove old test for a migration long gone
* use naive date for default start period on calculate_events_for_period
* default old events to created_at null and fix time calculated
* set last calculated when EmptyResultSet
* black format migration
* update migration to not conflict
* consolidate calculate_events functions
* Consolidate logic and handle nulls in created_at gracefully
* add ACTION_EVENT_MAPPING_INTERVAL_MINUTES as env var
* Feedbacked, no env var for calc period and add null=true on event model
* update migrations w/ feedback
* black format migration
* per-user toggle to use new toolbar
* add migration
* fix test and remove setting
* add choices to toolbar setting
* fix latest_migrations.manifest
* update text
* add hint to restart the browser
* fix test now that the setting is gone
* simplify language
* intiial working
* remove animation and added snippets
* full flow working
* reorganize
* more cleanup
* fix linting
* add test for the onboarding flow
* add elixir and send event script
* try without cache
* restore cache and move directory
* udpate case
* add lazy loading to onboarding flow
* move field to team
* .
* update styling
* add default
* migration with default working
* add missing model field
* conditional test based on DOM
* add promise return
* try wait
* test again x2
* WIP #517 feature flags
* Fix default filters
* Move decide to its own file
* Bump posthog-js 1.2.2
* Fix decide endpoint
* Add logic, update posthog-js
* yarn lock
* update snippet
* Add cypress tests
* Add example code
* Fix example code
* Add tests for query size
* Add errors when trying to create feature flag with same key
* Add explanation comment
* Fix cypress tests
* Do caching of teams in Team model
* Use <= instead of <
* Instrumentation and fix
* Fix ci test
* Add patch for team
* Debug test
* It passed
* initial working
* small adjustments and make tests run
* working cache
* edited arg handling in actions
* caching dashboard trend items with periodic update
* funnel and trend cache working
* update intervals
* update tests
* updated types and funnel refersh logic
* refresh working
* refresh dashboart item logic
* refresh from dashboard working for trends components
* refresh from dashboard working for funnels and funnel refactored to hook
* dashboard item reload
* let deleted items run stale
* fix tests
* tweak decorator logic
* update datetime format and default expiry
* add team to cache signature
* make sure different workers pick up task
* use tooltip and change dashboard refresh order
* fix redundant calls and cache overwriting
* updated types
* Show tooltip when never refreshed
Co-authored-by: Tim Glaser <tim.glaser@hiberly.com>
* Closes #888 filter on elements
* Add joinfield as requirement
* Fix tests
* Use correct element
* Fix paths query
* Delete old migration test
* Clean up
* Add frontend filters for elements, closes #419
* Add element api
* Fix paths and add test
* Keep elements field, otherwise breaks parititons
* Don't use join field
* Remove other join field references
* Fix test
* Add property filters to actions
* Show calculating of acitons and other improvements
* Fix delete, add toast back in and change toast colour
* Fix cypress tests
* Fix e2e
* Fix cy tests
* Remove double events
* Fix tests and event not saving
* change name
* Fix tes
* Empty result set error
* Fix Error404
* resize and drag dashboard items
* fix funnel resize issues
* store layouts in kea
* layouts for different breakpoints
* save layouts after updating
* colors in submenu, but disabled
* save item colors
* 1920-sidebar breakpoint
* add graph colors for graphs with backgrounds
* pie chart label color and z-index to put over the chart if a long number
* Closes #169 break down by cohort
* Fix test
* Prettier breakdown filters
* Rerender each time it's opened
* Fix tests
* Add 'all users' option in breakdown
* Make people work with cohorts
* Precalculate cohorts
* Return last_calculation
* Show precalculation in the frontend
* Closes #675 fix icon alignment
* Frontend fixes, antd and more
* Make sure unsetting breakdown doesn't break things
* Semantic name for migration
* Separate data migration + cohort key bugfix
* Correctly filter people by event
* Typing
* create dashboard model
* add pinned dashboards to submenu
* rename "Default Dashboard" -> "Dashboard"
* refactor SaveToDashboard modal
* save onto right dashboard
* load and show dashboard data
* move logic to separate file
* dashboard selection
* prompt for name
* add promise cancellation for prompts, so that they close when we change the url
* show a global loading progress bar if it takes more than 500ms for any loader to work
* add dashboards on the dashboard page
* pin dashboards
* rename dashboard
* cut off text nicely in the sidebar
* delete dashboards
* dash item "more" link in antd style
* revert to ellipsis
* trigger by click, redirect well with delete
* remember last visited dash, update icons
* better view icons
* refactor Dashboard into subcomponents
* add a sad hedgehog for the 404 page
* fix loading keys
* add a few more overlay hedgehogs
* add new dashboard from "no dashboards" page
* use a hedgehog with a better license
* better redirect when deleting dashboard
* update dashboard items design
* dark sidebar
* make a few other scenes darker
* add a few styles that can be toggled
* add menu to change color of dashboard panel
* move to prompt logic
* new dashboard on dashboards page
* show success message in model
* refactor shared listeners
* rename dashboard item
* add new dashboard when adding to dashboards
* redirect after adding
* fix icon alignment
* undo deleting dashboards
* replace antd message with toast to close programmatically
* remove the style dropdown for now
* set the scene on a new "thread" to avoid react's reconciliation triggering logic building on the current run heap
* fix action run heap issue properly
* use table in dashboard list, link to all dashboards
* support links without hrefs
* empty dashboard style fix
* ignore type
* save created_by user
* remove nprogress spinner
* use antd table to render dashboards
* show "all dashboards" as the default when clicking the link
* pin dashboards automatically
* soft delete
* remove nprogress
* remove nprogress
* remove all caps
* export deleteWithUndo function
* add delete and pin links to dashboards list