- Find and fix more cases of not filtering by org
- Fix org filtering on updates to globals
- Fix campaign event update view not filtering by event org
- Fix error in API contact references when passed a JSON number
- Replace Whatsapp by WhatsApp
- Merge pull request #2718 from nyaruka/fe187
- fix various filtering issues
- Update sample flow test
- remove use of webhook where not appropriate
- Update sample flows to use @webhook instead of @legacy_extra
- Add API endpoint to update Globals
- Keep latest sync event for Android channels when trimming
- Add support for Twilio Whatsapp channel type
- Add pre_deploy command to check imports/exports
- Fix link to android APK downloads on claim page
- Temporarily disable resume imports task
- Fix text of save as group dialog
- Add support to restart export tasks that might have been stopped by deploy
- Update to latest mailroom
- Add urns to runs API endpoint
- Update to latest mailroom which returns allow_as_group from query parsing
- Don't create missing contact fields on flow save
- Update flow editor 1.7.16
- Fix translations on external channel claim page
- Add tabs to toggle between full flow event history and summary of messages
- Increase the max height on the flow results export modal dialog
- Add params to flow starts API
- Change name of org_id param in calls to flow/inspect
- Add quick replies variable to external channel claim page
- Allow editing of allow_international on channel update forms
- Use consistent format for datetimes like created_on on contact list page
- Hide loader on start flow dialog when there are no channels
- Fix creation of Android channels
- Convert Android to dynamic channel type
- Update to floweditor 1.7.15
- Add python script to do all CI required formatting and locale rebuilding
- Use mailroom for query parsing for contact exports
- Fix text positioning on list pages
- Fix delete contact group modal buttons when blocked by dependencies
- Completion with upper case functions
- Migration to set allow_international=true in configs of existing tel channels
- Remove no longer used flow definition caching stuff
- Use realistic phone numbers in mailroom test db
- Remove contact filtering from flow results page
- Add migration to populate Flow.template_dependencies
- Use mailroom searching for omnibox results
- Add template_dependencies m2m
- Do not subject requests to the API with sessions to rate limiting
- Migration to convert flow dependencies metadata to new format
- Update description on the flow results export to be clear
- Fix deletion of orgs and locations so that aliases are properly deleted
- Remove syntax highlighting in API explorer as it can't handle big responses
- Use new dependencies format from mailroom
- Dynamic group creation / reevaluation through Mailroom
- Update to latest mailroom
- Fix actions on blocked contact list page
- Disable simulation for archived flows
- Fix query explosion on Android channel alerts
- Add subflow parameters to editor
- Rework migration code so new flows are migrated too
- Use mailroom for contact searches, contact list pages and flow starts via search
- Rebuild components
- Update to flow editor 1.7.13
- Don't include 'version' in current definitions
- Migrate imports of flows to new spec by default
- Exclude inactive template translations from API endpoint
- Fix edge case for default alias dialog
- Add sending back to contact list page
- Save parent result refs in flow metadata
- Change name BotHub to Bothub
- remove auto-now on modified_on on FlowRun
- Update to floweditor 1.7.9
- Warn users if starting for facebook without a topic
- Allow arbitrary numbers when sending messages
- Componentized message sending
- Show empty message list if we have archived them all
- Update to flow editior 1.7.8
- Replace flow/validate call to mailroom with flow/inspect
- Add facebook topic selection
- Pass version to mailroom migrate endpoint
- Fix saving on alias editor
- Support the whatsapp templates HEADER and FOOTER components
- Write HTTP log for errors in connection
- Add support for whatsapp templates with headers and footers
- Make sure we have one posterizer form and we bind one click event handler for posterize links
- Convert add/edit campaign event to components
- Add UI for managing globals
- Update to flow editor v1.7.7
- Update to floweditor v1.7.5
- Re-add msg_console management command with new support for mailroom
- Cleanup somes usages of trans/blocktrans
- Add error and failure events to contact history
- Use form components on campaign create/update
- Migrate sample flows to new editor
- Localize URNs in API using org country
- Write HTTPLogs for Whatsapp template syncing
- Remove Broadcast recipient_count field
- Add read API endpoint for globals
- Add trimming task for flow revisions
- Add models for globals support
- Add FreshChat channel support
- Make sure imported flows are unarchived
- Validate we do not have a caller on a channel before adding a new one
- Release URNs on Org release
- Release Channel sync events and alarms
- release Campaigns when releasing Orgs
- Release flow starts when releasing flows
- Add releasing to Classifiers and HTTPLogs
- Allow manual syncing of classifiers
- Update documentation for FB webhook events to subscribe to
- Fix DT One branding and add new icon
- Fix validation problem on update schedule trigger form
- Use brand when granting orgs, not host
- Update contactsql parser to support same quotes escaping as goflow
- Change slug for Bothub classifier to 'bothub'
- Fix various Schedule trigger UI validation errors
- Fix intermittently failing excel export tests
- Add noop reverse in migration
- Fix order of Schedule migrations (thanks @matmsa27)
- Show date for broadcast schedules
- Honor initial datetime on trigger schedule ui
- Update to flow editor version 1.7.3
- Fix weekly buttons resetting on trigger schedule form validation
- Validate schedule details on schedule trigger form
- Show query editors in contact search
- Add migration to fix schedules with None/NaN repeat_days_of_week values
- Move IE9 shim into the main template header
- Update README with final 5.0 versions
- Update to flow editor v1.7.2
- Validate repeat_days_of_week when updating schedules
- Include airtime transfers in contact history
- Tweak styling on contact field list page
- Send test email when the SMTP server config are set
- Add Bothub classifier type
- Update flow editor to version 1.7.0
- Add Split by Intent action in flows
- Update Send Airtime action for use with DTOne
- Unify max contact fields
- Don't allow deletion of flow labels with children
- Rename TransferTo to DTOne
- Check pg_dump version when creating dumps
- Add missing block super in extra script blocks
- Fix omnibox being not actually required on send message form
- Rework airtime transfers to have separate http logs
- Allow flow starts by query
- Sync intents on classifier creation
- Trim HTTP logs older than 3 days
- remove fragile AT links to configuration pages
- Exclude hidden results from flow results page
- Exclude results with names starting with _ from exports
- Classifier models and views
- HTTPLog models and views
- add prefetch to retry
- Add ThinQ Channel Type
- Fix contact history rendering of broadcast messages with null recipient count
- Fix for start_session action in the editor
- Fire schedules in Mailroom instead of celery
- Rework contact history to include engine events
- Update to flow editor 1.6.20
- Rev Flow Editor v1.6.19
- Fix rendering of campaigns on export page
- Fix ivr channel logs
- Make FlowRun.status non-NULL
- Make FlowSession.uuid unique and indexed
- Tidy up fields on flow activity models
- Fix styling on create flow dialog
- Make user fields nullable on broadcasts
- Populate repeat_minute_of_hour in data migration
- Update trigger update views to take into account new schedule fields
- Update docs on flow start extra to be accessible via @trigger
- Change input selector to work cross-browser on send modal
- Don't inner scroll for modax fetches
- Fix issues with web components in Microsoft Edge
- Cleanup Schedule class
- Drop unused columns on FlowRun
- Remove legacy engine code
- Remove legacy braodcast and message sending code
- Temporarily disable compression for components JS
- Use new expressions for campaign message events, broadcasts and join group triggers
- List contact fields with new expression syntax and fix how campaign dependencies are rendered
- Use mailroom to interrupt runs when archiving or releasing a flow
- Re-organize legacy engine code
- Initial library of web components
- Update to floweditor 1.6.13
- Allow viewers to do GETs on some API endpoints
- Fix rendering of campaign and event names in UI
- Move remaining channel client functionality into channel type packages
- Remove unused asset server stuff
- Update floweditor to 1.6.12
- Allow viewing of channel logs in anonymous orgs with URN values redacted
- Cleanup campaighn models fields
- Really fix copying of flows with nameless has_group tests and add a test this time
- Remove trigger firing functionality (except schedule triggers) and drop unused fields on trigger
- Migration to backfill FlowRun.status
- Limit group fetching to active groups
- Get rid of caching on org object as that's no longer used needed
- Fix importing/copying flows when flow has group dependency with no name
- Migration to add FlowRun.status
- Cleanup fields on FlowRun (single migration with no real SQL changes which can be faked)
- Remove all IVR flow running functionality which is now handled by mailroom
- Update to flow editor v1.6.11
- Releasing Nexmo channel shouldn't blow up if application can't be deleted on Nexmo side
- Fix Nexmo IVR to work with mailroom
- Add migration to populate session UUIDs
- Update to Django 2.2
- Send topup expiration emails to all org administrators
- Drop ActionLog model
- Switch to new editor as the default, use v1.6.10
- Add query field to FlowStart
- Add FlowSession.uuid which is nullable for now
- Update to floweditor 1.6.9, scrolling rules
- Update to flow editor 1.6.8, add completion config
- Add FlowStart.parent_summary, start deprecating fields
- Switch to bionic beaver for CI builds
- Add trigger params access to ivr flow
- Drop no longer used Broadcast.purged field
- Make Broadcast.purged nullable in preparation for dropping it
- Update floweditor to 1.6.7 and npm audit
- Remove unused IVR tasks
- Simplify failed IVR call handling
- Fix format_number to be able to handle decimals with more digits than current context precision
- Update to flow editor 1.6.6
- Update to flow editor 1.6.5
- Update Django to 2.1.10
- Update flow editor to 1.6.3
- Remove fields no longer needed by new engine
- Trim sync events in a separate task
- Stop writing legacy engine fields and make them nullable
- Remove no longer used send_broadcast_task and other unused sending code
- Squash migrations into previously added dummy migrations
- Populate account sid and and auth token on twilio callers when added
- Disable legacy IVR tasks
- Add dummy migrations for all migrations to be created by squashing
- Update recommended versions in README
- Fix API runs serializer when run doesn't have category (i.e. from save_run_result action)
- Update to latest floweditor
- Update search parser to convert timestamps into UTC
- Force a save when migrating flows
- Show search error if input is not a date
- Group being imported into should be in state=INITIALIZING whilist being populated, and hide such groups in the UI
- Only add initially changed files in post-commit hook
- Fix to make sure the initial form data is properly shown on signup
- sync whatsapp templates with unsupported languages, show them as such
- Update to floweditor v1.5.15
- Add pagination to outbox
- Fix import of contact field when field exists with same name but different key
- Fix (old) mac excel dates in imports
- Update flow editor to 1.5.14
- Remove reference to webhook API page which no longer exists
- Update to flow-editor 1.5.12
- Update some LS libs for security
- Tweaks to migrate_to_version_11_1 to handle "base" as a lang key
- Tweak old flow migrations to allow missing webhook_action and null ruleset labels
- Fix max length for WA claim facebook_access_token
- Fix WhatsApp number formatting on contact page, add icon
- add validation of localized messages to Travis
- Make contact.is_test nullable
- Migration to remove orphaned schedules and changes to prevent creating them in future
- Migration to merge path counts from rules which are merged into a single exit in new engine
- fix broadcast API test
- temporarily increase throttling on broadcasts endpoint
- Cleanup webhook fields left on Org
- Stop checking flow_server_enabled and remove support for editing it
- Remove no longer used check_campaigns_task
- Remove handling of incoming messages, channel events and campaigns.. all of which is now handled by mailroom
- Add sentry error to handle_event_task as it shouldnt be handling anything
- Remove processing of timeouts which is now handled by mailroom
- Start broadcast mailroom tasks with HIGH_PRIORITY
- Fix EX settings page load
- Migration to convert any remaining orgs to use mailroom
- Fix broken links to webhook docs
- Simplify WebHookEvent model
- Send broadcasts through mailroom
- Add org name in the email subject for exports
- Add org name in export filename
- Add org name in the export email subject and filename
- Update flow editor to 1.5.9
- Remove functionality for handling legacy surveyor submissions
- Make exported fields match goflow representation and add .as_export_ref() to exportable classes
- Update to latest floweditor v1.5.5
- Persist group and field definitions in exports
- Add support for SignalWire (https://signalwire.com) for SMS and IVR
- Save channel and message label dependencies on flows
- Update to latest floweditor v1.5.5
- Allow switching between editors
- Update Django to version 2.1.9
- add US/ timezones for clicksend as well
- add clicksend channel type
- Update flow editor to 1.5.4
- Allow imports and exports of v13 flows
- Enable export of new flows
- Update Nexmo supported countries list
- rename migration, better printing
- add migration to repopulate metadata for all flows
- Expose result specs in flow metadata on flows API endpoint
- Use Temba JSON adapter when reading JSON data from DB
- Don't update TwiML channel when claiming it
- Use most recent topup for credit transfers between orgs
- Update to flow-editor 1.5.3
- Update to floweditor v1.5.2
- Only do mailroom validation on new flows
- Fix 11.12 migration and importing flows when flow contains a reference to a channel in a different org
- Make WhatsApp endpoint configurable, either FB or self-hosted
- tweak to WA language mapping
- add hormuud channel type
- newest editor
- update invitation secret when user is re-invited
- Tweak compress for vendor
- Update to flow editor 1.4.18
- Add mailroom endpoints for functions, tweak styles for selection
- Honor is_active when creating contact fields
- Cache busting for flow editor
- Update flow editor to 1.4.17
- Warn users when starting a flow when they have a WhatsApp channel that they should use templates
- add page to view synched WhatsApp templates for a channel
- Update flow editor to 1.4.16
- View absolute attachments in old editor
- Update editor to 1.4.14
- latest editor
- update defs with db values both when writing and reading
- remove clearing of external ids for messages
- Update to flow-editor 1.4.12
- Remove footer gap on new editor
- allow Alpha users to build flows in new editor
- don't use RuleSets in figuring results, exports, categories
- Adjust
!=
search operator to include unset data - Remove broadcast recipients table
- IMPORTANT * You must make sure that all purged broadcasts have been archived using rp-archiver v1.0.2 before deploying this version of RapidPro
- styling tweaks to contacts page
- Always show featured ContactFields on Contact.read page
- Do not migrate ruleset with label null and action msg text null
- only show pagination warning when we have more than 10k results
- support != search operator
- simplify squashing of squashable models
- show a notification when users open the last page of the search
- update
modified_on
once msgs export is finished
- Fix issue with pagination when editing custom fields
- Add new page for contact field management
- add management command to reactivate fb channels
- api for templates, add access token and fb user id to claim, sync with facebook endpoint
- fix recalculating event fires for fields when that field is created_on
- Don't overwrite show_in_table flag on contact import
- Prevent updates of contact field labels when adding a field to a flow
- Add migration to populate results and waiting_exit_uuids in Flow.metadata
- Do not immediately expire flow when updating expirations (leave that to mailroom)
- Fix boundary aliases duplicates creation
- Add org lock for users to deal with similtaneous updates of org users
- Add results and waiting_exit_uuids to flow metadata and start populating on Flow.update
- CreateSubOrg needs to be non-atomic as well as it creates flows which need to be validated
- Remove unused download view
- allow blank pack, update permissions
- remove APK read view, only have update
- allow setting pack number
- Add APK app and new Android claiming pipeline for Android Relayer
- Use output of flow validation in mailroom to set flow dependencies
- Make message_actions.json API endpoint support partial updates
- Log to librato only pending messages older than a minute
- Add Viber Welcome Message event type and config
- More customer support service buttons
- queue incoming messages and incoming calls from relayer to mailroom
- Temporarily disable flow validation until we can fix it for new orgs
- Lazily create any dependent objects when we save
- MAILROOM_URL in settings.py.dev should default to http://localhost:8090
- Call to mailroom to validate a flow before saving a new definition (and fix invalid flows in our tests)
- Fix schedule next fire calculation bug when schedule is greater than number of days
- Fix to allow archiving flow for removed(inactive) campaign events
- Strip resthook slug during creation
- Ignore request from old android clients using GCM
- Increase the schedule broadcast text max length to be consistent on the form
- Fix case of single node flow with invalid channel reference
- Remove ChannelConnection.created_by and ChannelConnection.is_active
- Fix flow export results to include results from replaced rulesets
- correct exclusion
- Dont requeue flow server enabled msgs
- Exit sessions in bulk exit, ignore mailroom flow starts
- Fix import with invalid channel reference
- Add flow migration to remove actions with invalid channel reference
- improve simulator for goflow simulation
- work around JS split to show simulator images
- display attachments that are just 'image:'
- simulator tweaks
- show Django warning if mailroom URL not configured
- make sure we save flow_server_enabled in initialize
- Update status demo view to match the current webhook posted data
- Remove all remaining reads of contact.is_test
- Use pretty datetime on contact page for upcoming events
- Replace final index which references contact.is_test
- Fix labels remap on flow import
- All new orgs flow server enabled
- Fallback to org domain when no channe domain set
- Remove all remaining checks of is_test, except where used in queries
- Update contact indexes to not include is_test
- Prevent users from updating dynamic groups if query is invalid
- Update Python module dependencies
- set country code on test channel
- do not log errors for more common exceptions
- Include fake channel asset when simulating
- Add test for event retrying, fix out of date model
- Stop checking contact.is_test in db triggers
- Remove unused fields on webhookevent
- Default page title when contact has no name or URN (e.g. a surveyor contact)
- fix simulator to allow fields with empty value
- remove remaining usages of test contacts for testing
- add incoming_extra flow to mailroom test
- fix for test contact deletion migration
- pass extra to mailroom start task
- Support audio/mp4 as playable audio
- Add migration to remove test contacts
- Ensure scheduled triggers start flows in mailroom if enabled
- remap incoming ivr endpoints for Twilio channels when enabling flow server
- interrupt flow runs when enabling flow server
- add enable_flow_server method to org, call in org update view
- Scope API throttling by org and user
- Add export link on campaign read page
- Fix SMTP serever config to percentage encode slashes
- Add session_type field on FlowSession
- Use provided flow definition when simulating if provided
- Remove USSD app completely
- Adjust broadcast status to API endpoint
- Remove legacy (non-mailroom) simulation
- Make ChannelConnection.is_active nullable so it can be eventually removed
- Replace traceback.print_exc() with logger.error
- Make sure contacts ids are iterable when starting a flow
- Remove USSD proxy model
- Use URL kwargs for channel logs list to pass the channel uuid
- Fix message campaign events on normal flows not being skipped
- Default to month first date format for US timezones
- Make Contact.created_by nullable
- Fix to prevent campaign event to create empty translations
- Use new editor wrapper to embed instead of building
- Remove USSD functionality from engine
- Fix Stripe integration
- fix webhook bodies to be json
- better request logging for webhook results
- further simplication of webhook result model, add new read and list pages
- add org field to webhook results
- Add surveyor content in mailroom_db command
- Fix flows with missing flow_type
- Update more Python dependencies
- Prevent flows of one modality from starting subflows of a different modality
- Add support for Movile/Wavy channels
- Switch to codecov for code coverage
- Allow overriding brand domain via env
- Add mailroom_db management command for mailroom tests
- Start flow_server_enabled ivr flows in mailroom
- Remove legacty channel sending code
- Remove flow dependencies when deactivating USSD flows
- Migrations to deactivate USSD content
- Fix quick replies in simulator
- More teaks to Bongolive channel
- Use mailroom simulation for IVR and Surveyor flows
- Add a way to see all run on flow results runs table
- Simplify generation of upload URLs with new STORAGE_URL setting
- Switch BL channels used API
- Fix rendering of attachments for mailroom simulation
- Update black to the version 18.9b0
- Fix flow_entered event name in simulator
- Make created_by, modified_by on FlowStart nullable, add connections M2M on FlowStart
- Rename ChannelSession to ChannelConnection
- Fix for flow dependency migration
- Fix rendering of single digit hours in pretty_datetime tag
- Use mailroom for flow migration instead of goflow
- Add support for Bongo Live channel type
- Include default country in serialized environments used for simulation
- Add short_datetime and pretty_datetime tags which format based on org settings
- Prevent users from choosing flow they are editing in some cases
- Fix nexmo claim
- Tweak 11.7 migration to not blow up if webhook action has empty URL
- Bump module minor versions and remove unused modules
- Remove ChannelSession.modified_by
- Make older flow migrations more fault tolerant
- Tweaks to migrate_flows command to make error reporting more useful
- Add flow migration to fix duplicate rule UUIDs
- Update python-telegram-bot to 11.1.0
- Update nexmo to 2.3.0
- Fix recent messages rollover with 0 messages
- Use flowserver only for flow migration
- Make created_by and modified_by optional on channel session
- create empty revisions for empty flows
- proper handle of empty errors on index page
- fix error for policy read URL failing
- add quick replies to mailroom simulator
- populate simulator environment for triggers and resumes
- honour Flow.is_active on the Web view
- fix android channel release to not throw if no FCM ID
- add Play Mobile aggregator
- Add index for fast Android channel fetch by last seen
- Remove gcm_id field
- No messages sheet for flow results export on anon orgs
- Add periodic task to sync channels we have not seen for a while
- Add wait_started_on field to flow session
- Remove flow server trialling
- Replace tab characters for GSM7
- Use mailroom on messaging flows for simulation
- Raise ValidationError for ContactFields with null chars
- upgrade to Django 2.1
- Make sure Flow.update clears prefetched nodes after potentialy deleting them
- Fix Flow.update not deleting nodes properly when they change type
- Add try/except block on FCM sync
- Issue #828, remove numbers replace
- Dont show queued scheduled broadcasts in outbox
- Prevent deleting groups with active campaigns
- Activate support for media attachment for Twitter channels
- Remove ability to create webhook actions in editor
- Add flow migration to replace webhook actions with rulesets
- Fix importing campaign events based on created_om
- Fix event fires creation for immutable fields
- Remove WA status endpoint
- Fix IVR runs expiration date initialization
- Add UUID field to org
- Interrupt old IVR calls and related flow sessions
- Move webhook docs button from the token view to the webhook view
- Faster squashing
- Fix EX bulk sender form fields
- simulate flow_server_enabled flows in mailroom
- Add session log links to contact history for staff users
- Hide old webhook config page if not yet set
- Fix passing false/true to archived param of flows API endpoint
- Turn on the attachment support for VP channels
- Tweak 11.6 flow migration so that we remap groups, but never create them
- Flows API endpoint should support filtering by archived and type
- Log how many flow sessions are deleted and the time taken
- Turn on the attachment support for WA channels
- Adjust UI for adding quick replies and attachment in random order
- Add index for fetching waiting sessions by contact
- Ensure test_db users have same username and email
- Add index to FlowSession.ended_on
- Make FlowSession.created_on non-null
- Add warning class to skipped campaigns event fire on contact history
- Add fired_result field to campaign event fires
- Log and fail calls that cannot be started
- Allow contact.created_on in flows, init new event
- Deactivate events when updating campaigns
- Less aggressive event fire recreation
- Use SMTP SERVER org config and migrate old config keys
- Retry failed IVR calls
- Show all split types on run results, use elastic for searching
- Flow migration for mismatched group uuids in existing flows
- Remap group uuids on flow import
- Migration to backfill FlowSession.created_on / ended_on
- Add config to specify content that should be present in the response of the request, if not mark that as msg failed
- Allow campaign events to be skipped if contacts already active in flows
- Add FlowRun.parent_uuid
- Add FlowSession.timeout_on
- Create new flows with flow_server_enabled when org is enabled
- Add flow-server-enabled to org, dont deal with flow server enabled timeouts or expirations on rapidpro
- Fix flowserver resume tests by including modified_on on runs sent to goflow
- Dont set preferred channels if they can't send or call
- Don't assume events from goflow have step_uuid
- Add indexes for flow node and category count squashing
- Delete event fires in bulk for inactive events
- Fix using contact language for categories when it's not a valid org language
- Fix translation of quick replies
- Add FlowSession.current_flow and start populating
- Refresh contacts list page after managing fields
- Update to latest goflow (no more caller events, resumes, etc)
- Fix flow results export to read old archive format
- Batch event fires by event ID and not by flow ID
- Make campaign events immutable
- Add novo channel
- Remove trialing of campaign events
- Remove no longer used ruleset_analytis.haml
- Expose @contact.created_on in expressions
- Make Contact.modified_by nullable and stop writing to it
- Optimize group releases
- Add created_on/ended_on to FlowSession
- Bump Smartmin and Django versions
- Expose @contact.created_on in expressions
- Make Contact.modified_by nullable and stop writing to it
- Latest goflow
- Add config for deduping messages
- Add created_on/ended_on to FlowSession
- Update to latest goflow (event changes)
- Do not delete campaign events, deactivate them
- Do not delete runs when deleting a flow
- Fix Campaigns events delete for system flow
- Use constants for queue names and switch single contact flow starts to use the handler queue
- Raise ValidationError if flow.extra is not a valid JSON
- Defer group.release in a background task
- Fix saving dynamic groups by reverting back to escapejs for contact group query on dialog
- Add Stopped event to message history and unknown/unsupported events
- Switch result value to be status code from webhook rulesets, save body as @extra. and migrate result references to that
- Fix channel selection for sending to TEL_SCHEME
- Add campaigns to all test orgs for make_db
- Correctly embed JS in templates
- Escape data before using
mark_safe
- Fix validating URNField when input isn't a string
- Fix incorrect units in wehbook_stats
- Result input should always be a string
- Don't do duplicate message check for surveyor messages which are already SENT
- Update to goflow 0.15.1
- Update Location URLs to work with GADM IDs
- Fix potential XSS issue: embed script only if
View.refresh
is set
- Fix IVR simulation
- Fix importing with Created On columns
- Validate URNs during import
- Classify flow server trials as simple if they don't have subflows etc
- Use latest goflow for testing
- Enable import of GADM data using import_geojson
- Defer to mailroom for processing event fires for flows that are flowserver enabled
- Tweaks to comparing events during flow server trials
- Fix saved operand for group tests on anon orgs
- Add step URN editor completions
- Add name to the channels shown on the flow editor
- Don't zero pad anon ids in context
- Update to latest expressions
- Ensure API v1 writes are atomic
- JSONFields should use our JSON encoder
- Use authenticated user for events on Org.signup
- Trial shouldn't blow up if run has no events
- Add urn to step/message context and make urn scheme accessible for anon org
- Get rid of Flow.FLOW
- Don't trial flow starts from triggers
- Fix messages from non-interactive subflows being added to their parent run
- Setup user tracking before creating an Org
- Migrate flows during flowserver trials with collapse_exits=false to keep paths exactly the same
- Input for a webhook result test should be a single request
- Migration to update F type flows to M
- Enforce validation on OrgSignup and OrgGrant forms
- Cleanup encoding of datetimes in JSON
- New flows should be created with type M and rename constants for clarity
- Fix updating dynamic groups on contact update from the UI
- Make editor agnostic to F/M flow types
- Remove mage functionality
- Fix Twilio number searching
- Use SystemContactFields for Dynamic Groups
- Add our own json module for loads, dumps, always preserve decimals and ordering
- Replace reads of Flow.flow_type=MESSAGE with Flow.is_system=True
- Migration to populate Flow.is_system based on flow_type
- Fix intercom ResourceNotFound on Org.Signup
- Remove follow triggers and channel events
- Add Flow.is_system and start populating for new campaign event single message flows
- Data migration to deactivate all old style Twitter channels
- Update Nexmo client
- Increase IVR logging verbosity
- Trial all campaign message flows in flowserver
- Tweak android recommendation
- Run Table should only exclude the referenced run, and include greater Ids
- Raise validation error ehen trying action inactive contacts over API
- Remove uservoice as a dependency
- Update versions of Celery, Postgis, Nexmo, Twilio
- Fix Python 3.7 issues
- Clear out archive org directory when full releasing orgs
- Update expressions library to get EPOCH() function
- Update to Django 2.0
- Update postgres adapter to use psycopg2-binary
- Wrap asset responses in a results object
- Use trigger type of campaign when starting campign event flows in flowserver
- Fix count for blocktrans to not use string from intcomma
- Use audio/mp4 content type for m4a files
- Update to latest goflow and enable asset caching
- Actually fix uploading mp4 files
- Show only user fields when updating field values for a contact
- Fix MIME type for M4A files
- Allow test_db command to work without having ES installed
- Ignore search exceptions in omnibox
- Actually enable users to use system contact fields in campaign events
- Enable users to choose 'system fields' like created_on for campaign events
- Management commnd to recalculate node counts
- Fix run path triggers when paths are trimmed
- Allow file overwrite for public S3 uploads
- Handle cases when surveyor submits run with deleted action set
- Document modified_on on our API endpoint
- Use ElasticSearch for the omnibox widget
- fix count of suborgs after org deletion
- remove group settings call for WhatsApp which is no longer supported
- easier way to service flows for CS reps
- Squash all migrations
- fix display of archives formax on home page
- Fix chatbase font icon name
- Add encoding config to EX channel type
- Show archive link and information on org page
- Improve error message when saving surveyor run fails
- Allow surveyor submissions to match rules on old revisions
- Fix bug in msg export from archives
- Support audio attachments in all the audio formats that we can play
- Add name and input to runs API v2 endpoint
- Update InGroup test to match latest goflow
- Expose resthooks over the assets endpoint and update logic to match new engine
- Support messages export from archives
- Configure Celery to discover Wechat and Whatsapp tasks
- Add Rwanda and Nigeria to AT claim form options
- Extend timeout for archives links to 24h
- Add created_on to the contact export
- Use constants for max contact fields and max group membership columns
- Tweaks to twitter activity claiming that deals with webhooks already being claimed, shows errors etc
- Rename form field to be consistent with the constants we use
- Writes only now use XLSLite, more coverage
- Limit number of groups for group memberships in results exports
- Swicth message export to use XLSLite
- Fix default ACL value for S3 files
- Add WeChat (for beta users)
- fix dupe sends in broadcast action
- fix per credit calculation
- two decimals for per credit costs, remove trailing 0s
- Fix ContactField priority on filtered groups
- Update Django to version 1.11.14
- Reenable group broadcasts
- When comparsing msg events in flowserver trials, make paths relative again
- Change VariableContactAction to create contacts even without URNs
- Fix import of ID columns from anon export
- Don't fail twilio channel releases if auth key is no longer vaild
- Add UI messaging for archived data
- Fix import of header ID from anon export
- Fix supported scheme display lookup
- Move action log delete to flow run release
- Fix group test operand when contact name is null
- Mention all AfricasTalking countries on claim page
- Warn user of columns to remove on import
- Release events properly on campaign import
- Add languages endpoint to asset server
- Add option for two day run expiration
- Change group rulesets to use contact as operand same as new engine
- Fix reconstructing sessions for runs being trialled in the flowserver so that we include all session runs
- Write boolean natively when exporting to xlsx
- Improve reporting of flow server errors during trials
- Clarify about contact import columns
- Update flow result exports to match recent changes to contact exports
- Update modified_on on contacts that have their URN stolen
- Full releasing of orgs and users
- Set exit_uuid at end of path when run completes
- Make twitter activity API the default twitter channel type
- Add Nigeria and Rwanda to AT supported countries
- Don't exclude result input from flowserver trial result comparisons
- Use operand rather than msg text for result input
- Remove reporting to sentry when @flow.foo.text doesn't equal @step.text
- Add flow migration to replace @flow.foo.text expressions on non-waiting rulesets
- Fix message flow updating
- Remove org.is_purgeable
- Fix format of archived run json to match latest rp-archiver
- Fix checking of result.text values in the context
- Import/Export column headers with type prefixes
- Add groups membership to contacts exports
- Retry calls that are in IVRCall.RETRY_CALL
- Retry IVR outgoing calls if contact did not answer
- Add FlowRun.modified_on to results exports
- Change how we select archives for use in run exports to avoid race conditions
- Report to sentry when @flow.foo.text doesn't match @step.text
- Release webhook events on run release
- Fetch run results from archives when exporting results
- Don't create action logs for non-test contacts
- Migrations for FK protects, including all SmartModels
- Update to latest xlsxlite to fix exporting date fields
- Remove merged runs sheet from results exports
- Modified the key used in the transferto API call
- Enable burst sms type
- add burst sms channel type (Australia and New Zealand)
- trim event fires every 15 minutes
- Trim event fires older than a certain age
- More consistent name of date field on archive model
- Remove no longer needed functionality for runs that don't have child_context/parent_context set
- Degroup contacts on deactivate
- release sessions on reclaimed urns
- special case deleted scheme in urn parsing
- release urn messages when releasing a contact
- add delete reason to run
- Clear child run parent reference when releasing parent
- Make sync events release their alerts
- Release sessions, anonymize urns
- add protect to contacts and flows, you can fake the migrations in this release
- add deletion_date, use full path as link name
- add unique constraint to disallow dupe archives
- add needs_deletion field, remove is_purged
- Set run.child_context when child has no waits
- Use latest openpyxl and log the errors to sentry
- Don't blow up if trialled run has no events
- Allow editors to see archives / api
- Migration to backfill run parent_context and child_context
- Fix archive filter test
- Include id when serializing contacts for goflow
- Show when build failed becuse black was not executed
- Fix calculation of low threshold for credits to consider only the top with unused credits
- All flows with subflows to be trialled in the flowserver
- Create webhook mocks for use in flowserver trials from webhook results
- Enable Archive list API endpoint
- Remove purging, add release with delete_reason
- Set parent_context in Flow.start and use it in FlowRun.build_expressions_context if available
- Add is_archived counts for LabelCounts and SystemLabelCounts, update triggers
- Remove explicit use of uservoice
- Use step_uuids for recent message calculation
- Format code with blackify
- Add management commands to update consent status and org membership
- Update to latest goflow to fix tests
- Fix 'raise None' in migration and make flow server trial period be 15 seconds
- Fix the campaign events fields to be datetime fields
- Move flow server stuff from utils.goflow to flows.server
- Add messangi channel type
- Reenable requiring policy consent
- Allow msgs endpoint to return ALL messages for an org sorted by created_on
- Return error message if non-existent asset requested from assets endpoint
- If contact sends message whilst being started in a flow, don't blow up
- Remove option to have a flow never expire, migrate current flows with never to 30 days instead
- Request the user to fill the LINE channel ID and channel name on the claim form
- Fix logging events to intercom
- Migration to remove FlowStep
- remove old privacy page in favor of new policy app
- use python3
super
method - migration to backfill step UUIDs on recent runs
- tweaks to add_analytics users
- add native intercom support, add management command to update all users
- Fix quick replies in simulator
- Lower the min length for Facebook page access token
- Update Facebook claim to ask for Page ID and Page name from the user
- Add new policies and consent app
- Fix another migration that adds a field and writes to it in same transaction
- Add step UUID fields to FlowPathRecentRun and update trigger on run paths to start populating them
- Don't create flow steps
- Remove remaining usages of six
- Drop no longer used FlowRun.message_ids field
- Don't allow nested flowserver trials
- Fix migrations which can lead to locks because they add a field and populate it in same transaction
- Remove a lot of six stuff
- Use bulk_create's returned msgs instead of forcing created_on to be same for batches of messages created by Broadcast.send
- Use sent_on for incoming messages's real world time
- Don't require steps for flow resumptions
- Add period, rollup fields to archive
- Stop writing .recipients when sending broadcasts as this is only needed for purged broadcasts
- Rework run_audit command to check JSON fields and not worry about steps
- Replace json_date_to_datetime with iso8601.parse_date
- Stepless surveyor runs
- Use run path instead of steps to recalculate run expirations
- Stop writing to FlowRun.message_ids
- Change FlowRun.get_last_msg to use message events instead of FlowRun.message_ids
- Stop saving message associations with steps
- Drop values_value
- Remove broadcast purging
- remove reference to nyaruka for trackings users
- fix test decoration to work when no flow server configured
- Disable webhook calls during flowserver trials
- Use FlowRun.events for recent messages rollovers
- add archive model, migrations
- Make ContactField header clickable when sorting
- Add first python2 incompatible code change
- Add contact groups sheet on contact exports
- Remove contact export as CSV
- Update to latest goflow
- Fix test_db contact fields serialization
- fix flowstarts migration
- update start contact migration to work with malformed extra
- fix not selecting contact id from ES in canary task
- add canary task for elasticsearch
- record metrics about flowserver trial to librarto
- allow sorting of contact fields via dragging in manage dialog
- rename flow migration
- limit number of flows exited at once, order by expired_on to encourage index
- remove python 2.7 build target in travis
- start flow starts in the flows queue vs our global celery one
- add flow start count model to track # of runs in a flow start
- Always use channel.name for channel assets
- update to latest goflow to get location support
- better output logs for goflow differences
- add v2 editor through /v2 command in simulator
- get all possible existing Twilio numbers on the Twilio account
- reenable group sends *
- remove Value model usage, Contact.search
- do not allow dupe broadcasts to groups
- Use ElasticSearch to export contacts and create dynamic groups
- remove celery super auto scaler
- update whatsapp activation by setting rate limits using new endpoints
- fix incorrect keys for tokens and account sids for twiml apps
- add ability to test flow results against goflow
- remove celery super auto scaler since we don't use it anywhere
- update whatsapp activation by setting rate limits using new endpoints
- fix incorrect keys for tokens and account sids for twiml apps
- add admin command to help audit ES and DB discrepencies
- update whatsapp for new API
- new index on contacts_contact.fields optimized for space
- allow reading, just not writing of sends with groups
- remove old seaching from contact views
- optimize group views
- don't allow sends to groups to be imported or copied
- remove normal junebug, keep only junebug ussd
- fix isset/~isset, sort by 'modified_on_mu' in ES
- use ES to search for contacts
- remap sms and status Twilio urls, log people still calling old ones
- fix to display Export buttons on sent msgs folder and failed msgs folder
- use message events in run.events for results exports instead of run.message_ids
- add twilio messaging handling back in
- remove logging of base handler being called
- rename contact field types of decimal to number
- finalize contact imports so that updated contacts have modified_on outside transaction
- try to fetch IVR recordings for up to a minute before giving up
- remove handling and sendind code for all channel types (except twitter and junebug)
- Fewer sentry errors from ES searching
- Don't assume messages have a UUID in FlowRun.add_messages
- allow up to two minutes for elastic search lag
- fix empty queryset case for ES comparison
- chill the f out with sentry if the first contact in our queryset is less than 30 seconds old
- fix duplicate messages when searching on msgs whose contacts have more than one urn
- fix environment variable for elastic search, catch all exceptions
- Add Elastic searching for contacts, for now only validating that results through ES are the same as through postgres searches
- Migrate Dart/Hub9 Contact urns and channels to support ext schemes
- Use more efficient queries for check channels task
- Fix Location geojson import
- Add API endpoint to view failed messages
- Allow filtering by uuid on runs API endpoint, and include run uuid in webhooks
- Fix blockstrans failing on label count
- Add linear backdown for our refresh rate on inbox pages
- Do not log MageHandler calls
- Serialize contact field label as name instead
- Use force_text on uuids read from redis
- Log errors for any channel handler methods
- Set placeholder msg.id = 0
- Fix comparison when price is None
- Evaluate contact field with no value as False
- Update to Facebook graph api v2.12
- Support plain ISO dates (not just datetimes)
- Swallow exceptions encountered when parsing, don't add to group
- Set placeholder msg.id = 0
- Deal with null state values in contact search evaluation
- Fix off by one error in calculating best channel based on prefixes
- Reevaluate dynamic groups using local contact fields instead of SQL
- Add modified_on index for elasticsearch
- Don't start archived flows
- Don't show stale dates on campaign events
- Allow brands to configure flow types
- Remove group search from send to others action
- Fixes for test contact activity
- Migration to backfill run.events and add step uuids to run.path
- Do the right thing when we are presented with NaN decimals
- Use real JSONField for FlowRun.events
- Add FlowRun.events and start populating with msg events for new runs
- Serialize Contact.fields in test_db
- Update to latest goflow release
- Fix for decimal values in JSON fields attribute
- Fix for not being able to change contact field types if campaign event inactive
- Add if not exists to index creation for fields
- Last of Py3 compatibility changes
- Use fields JSON field on Contact instead of Value table for all reading.
- Force campaign events to be based off of DateTime fields
- Migration to change all contact fields used in campaign events to DateTime
- Migration to add GIN index on Contact.fields
- Remove leading and trailing spaces on location string before boundaries path query
- Require use of update_fields with Contact.save()
- Event time of contact_changed is when contact was modified
- Use latest goflow release
- Make special channel accessible during simulator use
- Always serialize contact field datetime values in the org timezone
- Add migration for population of the contact field json
- Update middlewares to Django defaults for security
- Add JSON fields to Contact, set in set_field
- backfill any null location paths, make not null, update import to set path, set other levels on fields when setting location
- Allow groups when scheduling flows or triggers
- Fix configuration page URLs and use courier URLs
- Replace contact.channel in goflow serialization with a channel query param in each contact URN
- Serialize contact.group_uuids as groups with name and UUID
- Add response to external ID to courier serialized msg if we have response to
- More Py3 migration work
- Remove broadcasting to groups from Send Message dialog
- Do not delete RuleSets only disconnect them from flows
- Fix scoping for sim show/hide
- Allow toggling of new engine on demand with /v2 command in simulator
- Fix negative cache ttl for topups
- Remove Vumi Type
- Remove custom autoscaler for Celery
- Implement Plivo without Plivo library
- Build dynamic groups in background thread
- Dynamic Channel changes, use uuids in URLs, allow custom views
- Allow WhatsApp channels to refresh contacts manually
- Allow brands to specifiy includes for the document head
- Fix external claim page, rename auth_urn for courier
- Change VB channel type to be a dynamic channel
- Remove unused templates
- Add ability to run select flows against a flowserver instance
- Move JioChat access creation to channel task
- Use 'list()' on python3 dict iterators
- Use analytics-python===1.2.9, python3 compatible
- Fix using PlayAction in simulator and add tests
- Fix HasEmailTest to strip surrounding punctuation
- ContainsPhraseTest shouldn't blow up if test string is empty
- Use 'six' library for urlparse, urlencode
- Unfreeze phonenumbers library so we always use latest
- Remove old Viber VI channel type
- Add config template for LN channel type
- Move configuration blurbs to channel types
- Move to use new custom model JSONAsTextField where appropriate
- Fix quick-reply button in flow editor
- Fix webhook rule as first step in run interpreting msg wrong
- Change mailto URN importing to use header 'mailto' and make 'email' always a field. Rename 'mailto' fields to 'email'.
- Add ArabiaCell channel type
- Tweaks to Mtarget channel type
- Pathfix for highcharts
- Add input to webhook payload
- Remove support for legacy webhook payload format
- Fix org-choose redirects for brands
- Remove stop endpoint for MT
- Inactive flows should not be listed on the API endpoint
- Add Mtarget channel type
- Add run dict to default webhook payload
- have URNs resolve to dicts instead of just the display
- order transfer credit options by name
- show dashboard link even if org is chosen
- include contact URN in webhook payload
- Allow exporting results of archived flows
- Update Twitter Activity channels to work with latest beta changes
- Increase maximum attachment URL length to 2048
- Tweak contact searching so that set/not-set conditions check the type specific column
- Migration to delete value decimal/datetime instances where string value is "None"
- Don't normalize nulls in @extra as "None"
- Clear timeouts for msgs which dont have credits assigned to them
- Simpler contact get_or_create method to lookup a contact by urn and channel
- Prevent updating name for existing contact when we receive a message
- Remove fuzzy matching for ContainsTest
- Reimplement clickatell as a Courier only channel against new API
- Use database trigger for inserting new recent run records
- Handle stop contact channel events
- Remove no longer used FlowPathRecentRun model
'# Enter any comments for inclusion in the CHANGELOG on this revision below, you can use markdown
- Update date for webhook change on api docs
- Don't use flow steps for calculating test contact activity
- Stop using FlowPathRecentMessage
- Migration to convert recent messages to recent runs
- Add new model for tracking recent runs
- Add dynamic group optimization for new contacts
- Drop index on FlowStep.step_uuid as it's no longer needed
- Still queue messages for sending when interrupted by a child
- Use FlowRun.current_node_uuid for sending to contacts at a given flow node
- Tweak process_message_task to not blow up if message doesn't exist
- Use FlowRun.message_ids for flow result exports
- Use config secret instead of secret field on Channel
- Add tests for datetime contact API field update
- Fix deleting resthooks
- Fix quick replies UI on Firefox
- Process contact queue until there's a pending message or empty
- Make date parsing much stricter
- Migration to fix run results which were numeric but parsed as dates
- Use transaction when creating contact URN
- Add support for v2 webhooks
- Fix run.path trigger to not blow up deleting old steps that don't have exit_uuids
- Define MACHINE_HOSTNAME for librato metrics
- Fix handle_ruleset so we don't continue the run if a child has exited us
- Migration to backfill FlowRun.message_ids and .current_node_uuid (recommend faking and running manually)
- Add support for 'direct' db connection
- Stop updating count and triggered on on triggers
- Add FlowRun.current_node_uuid and message_ids
- Catch IntegrityError and lookup again when creating contact URN
- Make sure we dont allow group chats in whatsapp
- Ignore TMS callbacks
- Stop writing values in flows to values_value
- Performance improvements and simplications to flow result exports
- Add some extra options to webhook_stats
- Migration to convert old recent message records
- Remove incomplete path counts
- Migrate languages on campaign events
- Rework flow path count trigger to use exit_uuid and not record incomplete segments
- Don't import contacts with unknown iso639-3 code
- Make angular bits less goofy for quick replies and webhooks
- Add is_active index on flowrun
- Don't disassociate channels from orgs when they're released
- Include language column in Contact export
- Set tps for nexmo and whatsapp
- Dont overwrite name when receiving a message from a contact that already exists
- Flow start performance improvements
- Parse ISO dates followed by a period
- Optimize batch flow starts
- Update Nexmo channels to use new Courier URLs
- Store path on AdminBoundary for faster lookups
- Serialize metata for courier tasks (quick replies support)
- Add default manager to AdminBoundary which doesn't include geometry
- Fixes to the ISO639-3 migration
- Add support for quick replies
- Add flow migration for base_language in flow definitions
- back down to generic override if not found with specific code
- Add esp-spa as exception
- Fix language migrations
- Fix serialization of 0 decimal values in API
- Add initial version of WhatsApp channel (simple messaging only)
- Migrate to iso639-3 language codes (from iso639-2)
- Remove indexes on Msg, FlowRun and FlowStep which we don't use
- Remove fields no longer used on org model
- Don't blow up when a flow result doesn't have input
- Fix parsing ISO dates with negative offsets
- Serialize contact field values with org timezone
- Load results and path from new JSON fields instead of step/value objects on API runs endpoint
- Fix campaign export issue
- Disable legacy analytics page
- Change date constants and contact fields to use full/canonical format in expressions context
- Fix not updating versions on import flows
- Require FlowRun saves to use update_fields
- Rework get_results to use FlowRun.results
- Don't allow users to save dynamic groups with 'id' or 'name' attributes
- Add flow version 11.0, create migration to update references to contact fields and flow fields
- Show summary for non-waits on flow results
- Reduce number of queries during flow handling
- Start campaigns in separate task
- Enable flow results graphs on flow result page
- Fix run table json parsing
- SuperAutoScaler!
- Use string comparison to optimize temba_update_flowcategorycount
- Allow path counts to be read by node or exit
- SuperAutoscaler
- Fix inbox views so we don't look up channel logs for views that don't have them
- Add management command for analyzing webhook calls
- Change recent message fetching to work with either node UUID or exit UUID
- Migrate revisions forward with rev version
- Limit scope of squashing so we can recover from giant unsquashed numbers
- Make tests go through migration
- Set version number of system created flows
- Block saving old versions over new versions
- Perform apply_topups as a task, tweak org update form
- Updates to credit caches to consider expiration
- Tweak credit expiration email
- Improve performance and restartability of run.path backfill migration
- Update to latest smartmin
- Use run.results for run results page
- Set brand domain on channel creations, use for callbacks
- Migration to populate run paths (timeconsuming, may want to fake aand run manually)
- Ensure actions have UUIDs in single message and join-group flows
- Flow migration command shouldn't blow up if a single flow fails
- Fix Twilio to redirect to twilio claim page after connecting Twilio
- Add FlowRun.path and start populating it for new flow steps
- Removes no longer used Msg.has_template_error field
- Use get_host() when calculating signature for voice callbacks
- use get_host() when validating IVR requests
- Better Twilio channel claiming
- Tweaks to recommended channels display
- Update smartmin to version 1.11.4
- Dynamic channels: Chikka, Twilio, Twilio Messaging Service and TwiML Rest API
- Tweaks to the great FlowRun results migration for better logging and for parallel migrations
- Fixes us showing inactive orgs in nav bar and choose page
- Ignore requests missing text for incoming message from Infobip
- Add exit_uuid to all flow action_sets (needed for goflow migrations)
- Add index to FlowPathRecentMessage
- Flows API endpoint should filter out campaign message flow type
- Add archived field to campaings API endpoint
- Fix to correctly substitute context brand variable in dynamic channel blurb
- Data migration to populate results on FlowRun (timeconsuming, may want to fake and run manually)
- Migration to increase size of category count
- Increase character limits on category counts
- Fix Nexmo channel link
- Add results field to FlowRun and start populating
- Add FlowCategoryCount model for aggregating flow results
- Remove duplicate USSD channels section
- Remove single message flows when events are deleted
- Remove field dependencies on flow release, cleanup migration
- Update to latest Django 1.11.6
- Mage handler shouldn't be accessible using example token in settings_common
- Make Msg.has_template_error nullable and stop using it
- Add claim page for dmark for more prettiness
- Add management command to migrate flows forward
- Add flow migration for partially localized single message flows
- Recalculate topups more often
- Add dmark channel (only can send and receive through courier)
- Merge pull request #1522 from nyaruka/headers
- Replace TEMBA_HEADERS with http_headers()
- Improve mock server used by tests so it can mock specifc url with specific responses
- Add method to get active channels of a particular channel type category
- Replace remaining occurrences of assertEquals
- Fix the way to check USSD support
- Dynamic channels: Vumi and Vumi USSD
- Deal with malformed group format as part of group updates
- Allow installs to configure how many fields they want to keep in @extra
- Fix Nexmo icon
- Add logs for incoming requests for InfoBip
- Do both Python 2 and 3 linting in a single build job
- Do not set external ID for InfoBip we have send them our ID
- Fix channel address comparison to be insensitive to +
- Use status groupId to check from the InfoBip response to know if the request was erroneous
- Add id to reserved field list
- Update Infobip channel type to use the latest JSON API
- Migrate flows forward to have dependencies
- Fix issue with dates in the contact field extractor
- Allow org admin to remove invites
- Optimize how we check for unsent messages on channels
- Ensure all actions have a UUID in new flow spec version 10.1
- Fixes viber URN validation: can be up to 24 chars
- Dynamic channels: Zenvia, YO
- Add support for minor flow migrations
- Remove duplicate excellent includes (only keep compressed version)
- Only show errors in UI when org level limits of groups etc are exceeded
- Improve error messages when org reaches limit of groups etc
- Add indexes for retying webhook events
- Remove no longer used Msg.priority (requires latest Mage)
- Create channel event only for active channels
- Limit SMS Central channel type to the Kathmandu timezone
- Create fields from expressions on import
- Flow dependencies for fields, groups, and flows
- Dynamic channels: Start
- Dynamic channels: SMS Central
- Delete simulation messages in batch of 25 to use the response_to index
- Fix Kannel channel type icon
- @step.contact and @contact should both be the run contact
- Migration to set value_type on all RuleSets
- Add page titles for common pages
- New index for contact history
- Exit flows in batches so we dont have to grab all runs at once
- Check we can create a new groups before importing contact and show the error message to the user
- Fixes value type guessing on rulesets (we had zero typed as dates)
- Update po files
- Dynamic channels: Shaqodoon
- Should filter user groups by org before limiting to 250
- Fixes for slow contact history
- Allow updating existing fields via API without checking the count
- Update TWIML IVR protocol check
- Add update form fields in dynamic channel types
- Abstract out the channel update view form classes
- Add ivr_protocol field on channel type
- Mock constants to not create a lot of objects in test DB
- Limit the contact fields max per org to 200 to below the max form post fields allowed
- Limit number of contact groups creation on org to 250
- Limit number of contact fields creation on org to 250
- Dynamic channels: Red Rabbit, Plivo Nexmo
- Make Msg.priority nullable so courier doesn't have to write to it
- Calculate TPS cost for messages and add them to courier queues
- Fix truncate cases in SQL triggers
- Fix migration to recreate trigger on msgs table
- Dynamic channels: Mblox
- Properly create event fires for campaign events updated through api
- Strip matched string in not empty test
- Dynamic channels: Macrokiosk
- Make message priority be based on responded state of flow runs
- Support templatized urls in media
- Add UI for URL Attachments
- Prevent creation of groups and labels at flow run time
- Dynamic channels: M3Tech, Kannel, Junebug and Junebug USSD
- Add a way to specify the prefixes short codes should be matching
- Include both high_priority and priority in courier JSON
- Fix TwiML migration
- Fix JSON response when searching Plivo numbers
- Msg.bulk_priority -> Msg.high_priority
- Change for currencies for numeric rule
- Dynamic channels for Jasmin, Infobip, and Hub9
- Fix Twiml config JSON keys
- Unarchiving a campaign should unarchive all its flows
- Fix broken Twilio Messaging Service status callback URL
- Only update dynamic groups from set_field if value has changed
- Optimize how we lookup contacts for some API endpoints
- More dynamic channels
- add way to show recommended channel on claim page for dynamic channels
- change Org.get_recommended_channel to return the channel type instead of a random string
- separate create and drop index operations in migration
- create new compound index on channel id and external id, remove old external id index
- consistent header for contact uuid in exports and imports
- unstop contacts in handle message for new messages
- populate @extra even on webhook failures
- fix flow simulator with chatbase connected
- use ContactQL for name of contact querying grammar
- dynamic channels: Clickatell
- fix contact searching where text includes + or / chars
- replace Ply with ANTLR for contact searching (WIP)
- Make clean string method replace non characteres correctly
- Support Telegram /start command to trigger new conversation trigger
- Use correct Twilio callback URL, status is for voice, keep as handler
- Add /c/kn/uuid-uuid-uuid/receive style endpoints for all channel types
- Delete webhook events in batches
- Dynamic channels: Blackmyna
- update triggers so that updates in migration work
- make sure new uuids are honored in in_group tests
- removes giant join through run/flow to figure out flow steps during export
- create contacts from start flow action with ambiguous country
- add tasks for handling of channel events, update handlers to use ChannelEvent.handle
- add org level dashboard for multi-org organizations
- Tweaks to allow message handling straight from courier
- Add flow session model and start creating instances for IVR and USSD channel sessions
- Allow empty contact names for surveyor submissions but make them null
- Honor admin org brand in get_user_orgs
- Fix external channel bulk sender URL
- Send broadcast in the same task as it is created in and JS utility method to format number
- Try the variable as a contact uuid and use its contact when building recipients
- Fix org lookup, use the same code path for sending a broadcast
- Fix broadcast to flow node to consider all current contacts on the the step
- Update test_db to generate deterministic UUIDs which are also valid UUID4
- Turn down default courier TPS to 10/s
- Make sure msg time never wraps in the inbox
- Use a real but mockable HTTP server to test flows that hit external URLs instead of mocking the requests
- Add infobip as dynamic channel type and Update it to use the latest Infobip API
- Add support for Courier message sending
- Use twitter icon for twitter id urns
- Tweak test_start_flow_action to test parent run states only after child runs have completed
- Stop contacts when they have only an invalid twitter screen name
- Change to max USSD session length
- Ignore case when looking up twitter screen names
- Switch to using twitterid scheme for Twitter messages
- Should be shipped before Mage v0.1.84
- Allow editing of start conversation triggers
- Remove urn field, urn compound index, remove last uses of urn field
- remove all uses of urn (except when writing)
- create display index, backfill identity
- Allow users to specify extra URNs columns to include on the flow results export
- Add display and identity fields to ContactURN
- Add schemes field to allow channels to support more than one scheme
- Fix incorrect lambda use so message sending works
- Make ContactField.uuid unique and non-null
- Add migration to populate ContactField.uuid
- Only try to delete Twilio app when channel config contains 'application_sid'
- Surveyor submissions should try rematching the rules if the same ruleset got updated by the user and old rules were removed
- Add uuid field to ContactField
- Convert more channel types to dynamic types
- Fixes for Twitter Activity channels
- Add stop contact command to mage handler
- Convert Firebase Cloud Messaging to a dynamic channel type
- Convert Viber Public to a dynamic channel type
- Change to the correct way for dynamic channel
- Convert LINE to a dynamic channel type
- Better message in SMS alert email
- Hide SMTP config password and do not change the set password if blank is submitted
- Validate the length of message campaigns for better user feedback
- Make FlowRun.uuid unique and non-null (advise faking this and building index concurrently)
- Migration to populate FlowRun.uuid. Advise faking this and running manually.
- More channel logs for Jiochat channel interactions
- Fix inclusion of attachment urls in webhook payloads and add tests
- Install lxml to improve performance of large Excel exports
- Add proper deactivation of Telegram channels
- Converted Facebook and Telegram to dynamic channel types
- Add nullable uuid field to FlowRun
- Make sure we consider all URN schemes we can send to when looking up the if we have a send channel
- Split Twitter and Twitter Beta into separate channel types
- Remove support for old-style Twilio endpoints
- Release channels before Twilio/Nexmo configs are cleared
- Expose flow start UUID on runs from the runs endpoint
- Migration to populate FlowStart.uuid on existing objects (advise faking and run manually)
- Add uuid field to FlowStart
- Migration to convert TwiML apps
- Add support for Twitter channels using new beta Activity API
- Clean incoming message text to remove invalid chars
- Add more exception currencies for pycountry
- Support channel specific Twilio endpoints
- Clean up pip-requires and reset pip-freeze
- Reduce the rate limit for SMS central to 1 requests per second
- Display Jiochat on channel claim page
- Fix date pickers on modal forms
- Update channels to generate messages with multiple attachments
- Rate limit sending throught SMS central to 10 messages per second
- Fix some more uses of Context objects no longer supported in django 1.11
- Fix channel log list request time display
- Add @step.text and @step.attachments to message context
- Jiochat channels
- Django 1.11
- Convert all squashable and prunable models to use big primary keys
- Drop database-level length restrictions on msg and values
- Add sender ID config for Macrokiosk channels
- Expose org credit information on API org endpoint
- Add contact_uuid parameter to update FCM user
- Add configurable webhook header fields
- Fix simulator with attachments
- Switch to using new recent messages model
- Migration to populate FlowPathRecentMessage
- Clip messages to 640 chars for recent messages table
- Change Macrokiosk time format to not have space
- Better error message for external channel handler for wrong time format
- Add new model for tracking recent messages on flow path segments
- Remove Msg.media field that was replaced by Msg.attachments
- Change default ivr timeouts to 2m
- Fix the content-type for Twilio call response
- Update contact read page and inbox views to show multiple message attachments
- Fix use of videojs to provide consistent video playback across browsers
- API should return error message if user provides something unparseable for a non-serializer param
- Fix handling of old msg structs with no attachments attribute
- Tweak in create_outgoing to prevent possible NPEs in flow execution
- Switch to using Msg.attachments instead of Msg.media
- Replace index on Value.string_value with one that is limited to first 32 chars
- Fix Macrokiosk JSON responses
- Migration to populate attachments field on old messages
- Don't assume event fires still exist in process_fire_events
- Add new Msg.attachments field to hold multiple attachments on an incoming message
- Fix scheduled broadcast text display
- Make 'only' keyword triggers ignore punctuation
- Make check_campaigns_task lock on the event fires that it will queue
- Break up flow event fires into sub-batches of 500
- Ignore and ack incoming messages from Android relayer that have no number
- Add match_type option to triggers so users can create triggers which only match when message only contains keyword
- Allow Africa's talking to retry sending message
- Allow search on the triggers pages
- Clear results for analytics when user removes a flow run
- Make Msg.get_sync_commands more efficent
- Fix open range airtime transfers
- Fix multiple Android channels sync
- Fix parsing of macrokiosk channel time format
- Ensure that our select2 boxes show "Add new" option even if there is a partial match with an existing item
- Switch to new translatable fields and remove old Broadcast fields
- Add Firebase Cloud messaging support for Android channels
- Migration to populate new translatable fields on old broadcasts. This migration is slow on a large database so it's recommended that large deployments fake it and run it manually.
- Add new translatable fields to Broadcast and ensure they're populated for new stuff
- Fix autocomplete for items containing digits or other items
- Make autocomplete dropdown disappear when user clicks in input box
- Replace usages of "SMS" with "message" in editor
- Allow same subflow to be called without pause in between
- Fix exporting messages by a label folder
- Improve performance of org export page for large orgs
- Make it easier to enable/disable debug toolbar
- Increase channel logging for requests and responses
- Change contact api v1 to insert nonexistent fields
- Graceful termination of USSD sessions
- Don't show deleted flows on list page
- Convert timestamps sent by MacroKiosk from local Kuala Lumpur time
- Move initial IVR expiration check to status update on the call
- Hide request time in channel log if unset
- Check the existance of broadcast recipients before adding
- Voice flows import should never allow expirations longer than 15 mins
- Fix parse location to correctly use the tokenizized text if the location was matched for the entire text
- Use updates instead of full Channel saves() on realyer syncs, only update when there are changes
- Use flow starts for triggers that operate on groups
- Handle throttling errors from Nexmo when using API to add new numbers
- Convert campaign event messages to HSTORE fields
- Add MACROKIOSK channel type
- Show media for MMS in simulator
- Fix send all bug where we append list of messages to another list of messages
- Flows endpooint should allow filtering by modified_on
- More vertical form styling tweaks
- Add flow link on subflow rulesets in flows
- Fix styling on campaign event modal
- Update to latest Raven
- Make default form vertical, remove horizontal to vertical css overrides
- Add flow run search and deletion
- Hangup calls on channels release
- Allow message exports by label, system label or all messages
- Fix for double stacked subflows with immediate exits
- Archiving a flow should interrupt all the current runs
- Display webhook results on contact history
- Clean up template tags used on contact history
- Allow broadcasts to be sent to all urns belonging to the specified contacts
- Data migration to populate broadcast send_all field
- Add webhook events trim task with configurable retain times for success and error logs
- Add send_all broadcast field
- Remove non_atomic_gets and display message at /api/v1/ to explain API v1 has been replaced
- Add squashable model for label counts
- Split system label functionality into SystemLabel and SystemLabelCount
- Link subflow starts in actions
- Allow wait to wait in flows with warning
- Add new has email test, contains phrase test and contains only phrase test
- Migration to populate FlowNodeCount shouldn't include test contacts
- Add migration to populate FlowNodeCount
- Migration to clear no-longer-used flow stats redis keys
- Replace remaining cache-based flow stats code with trigger based FlowNodeCount
- Fix intermittently failing Twilio test
- make sure calls have expiration on initiation
- Update to latest smartmin
- Add redirection for v1 endpoints
- Fix webhook docs
- Fix MsgCreateSerializer not using specified channel
- Test coverage
- Fix test coverage issues caused by removing API v1 tests
- Ensure surveyor users still have access to the API v2 endpoint thats they need
- Remove djangorestframework-xml
- Restrict API v1 access to surveyor users
- Block all API v2 writes for suspended orgs
- Remove all parts of API v1 not used by Surveyor
- Prioritize msg handling over timeotus and event fires
- Remove hamlcompress command as deployments should use regular compress these days
- Fix not correctly refreshing dynamic groups when a URN is removed
- Allow searching for contacts with any value for a given field
- Fix sidebar nav LESS so that level2 lists don't have fixed height and separate scrolling
- Unstop a contact when we get an explicit user interaction such as follow
- Fix possible race condition between receiving and handling messages
- Do away with scheme for USSD, will always be TEL
- Make sure events are handled properly for USSD
- Do not specify to & from when using reply_to
- Update JunebugForm for editing Junebug Channel + config fields
- Log request time on channel log success
- Fix test, fix template tags
- Change request times to be in ms instead of seconds
- Block on handling incoming msgs so we dont process them forever away
- Include Viber channels in new conversation trigger form channel choices
- Don't use cache+calculations for flow segment counts - these are pre-calculated in FlowPathCount
- Do not include active contacts in flows unless user overrides it
- Clean up middleware imports and add tests
- Feedback to user when simulating a USSD channel without a USSD channel connected
- Expand base64 charset, fix decode validity heuristic
- Deal with Twilio arbitrarily sending messages as base64
- Allow configuration of max text size via settings
- Set higher priority when sending responses through Kannel
- Do not add stopped contacts to groups when importing
- Fix an entire flow start batch failing if one run throws an exception
- Limit images file size to be less than 500kB
- Send Facebook message attachments in a different request as the text message
- Include skuid for open range tranfertto accounts
- Fix exception when handling Viber msg with no text
- Migration to remove no longer used ContactGroup.count
- Fix search queries like 'foo bar' where there are more than one condition on name/URN
- Add indexes for Contact.name and ContactURN.path
- Replace current omnibox search function with faster and simpler top-25-of-each-type approach
- Fix Line, FCM icons, add Junebug icon
- Render missing field and URN values as "--" rather than "None" on Contact list page
- Add ROLE_USSD
- Add Junebug USSD Channel
- Fix Vumi USSD to use USSD Role
- Archive triggers that do not have a contact to send to
- Disable sending of messages for blocked and stopped contacts
- Add support for outbound media on reply messages for Twilio MMS (US, CA), Telegram, and Facebook
- Do not throw when viber sends us message missing the media
- Optimizations around Contact searching
- Send flow UUID with webhook flow events
- Allow configuration of max message length to split on for External channels
- Use brand key for evaluation instead of host when determining brand
- Add red rabbit type (hidden since MT only)
- Fix flow results exports for broadcast only flows
- Log Nexmo media responses without including entire body
- Dont encode to utf8 for XML and JSON since they expect unicode
- Optimize contact searching when used to determine single contact's membership
- Use flow system user when migrating flows, avoid list page reorder after migrations
- reduce number of lookup to DB
- Add test case for search URL against empty field value
- Fix sending vumi messages initiated from RapidPro without response to
- Improvements to external channels to allow configuration against JSON and XML endpoints
- Exclude test contacts from flow results
- Update to latest smartmin to fix empty string searching
- Allow USSD flows to start someone else in a flow
- Include reply to external_id for Vumi channel
- Add ID column to result exports for anon orgs
- Deactivate runs when releasing flows
- Fix urn display for call log
- Increased send and receive channel logging for Nexmo, Twilio, Twitter and Telegram
- Allow payments through Bitcoins
- Include TransferTo account currency when asking phone info to TransferTo
- Don't create inbound messages for gather timeouts, letting calls expire
- Don't show channel log for inactive channels on contact history
- Upgrade to latest smartmin which changes created_on/modified_on fields on SmartModels to be overridable
- Uniform call and message logs
- Add ID column to anonymous org contact exports, also add @contact.id field in message context
- Fix counts for channel log elements
- Only have one link on channel page for sending log
- Attempt to determine file types for msg attachments using libmagic
- Deactivate runs on hangups, Keep ivr runs open on exit
- Add log for nexmo media download
- Add new perf_test command to run performance tests on database generated with make_test_db
- Fix preferred channels for non-msg channels
- Make migrations to populate new export task fields non-atomic
- Add indexes for admin boundaries and aliases
- Nexmo: make sure calls are ended on hangup, log hangups and media
- Fix inbound calls on Nexmo to use conversation_uuid
- Style tweaks for zapier widget
- Use shorter timeout for IVR
- Issue hangups on expiration during IVR runs
- Catch all exceptions and log them when initiating call
- Fix update status for Nexmo calls
- Add channel session log page
- Use brand variable for zaps to show
- Additional logging for nexmo
- Increase non-overlap on timeout queueing, never double queue single timeout
- Fix broken timeout handling when there is a race
- Make field_keys a required parameter
- Speed up the contact import by handling contact update at once after all the fields are set
- Add channel log for Nexmo call initiation
- Fix import-geojson management command
- Fix Contact.search so it doesn't evaluate the base_query
- Enable searching in groups and blocked/stopped contacts
- Fix absolute positioning for account creation form
- Add Line channel icon in fonts
- Add data migrations to update org config to connect to Nexmo
- Add Malawi as a country for Africa's Talking
- Widen pages to browser width so more can fit
- Fix the display of URNs on contact list page
- Fix searching of Nexmo number on connected accounts
- Fix channel countries being duplicated for airtime configuration
- Add make_sql command to generate SQL files for an app, reorganize current SQL reference files
- Added SquashableModel and use it for all squashable count classes
- Add support for Nexmo IVR
- Log IVR interactions in Channel Log
- Fix to make label of open ended response be All Response even if there is timeout on the ruleset
- Data migration to rename category for old Values collected with timeouts
- Add 256 keys to @extra, also enforce ordering so it is predictible which are included
- Make fetching flow run stats more efficient and expose number of active runs on flow run endpoint
- Migration to populate session on msg and ended_on where it is missing
- Offline context per brand
- Add Junebug channel type
- Better base styling for dev project
- Pass charset parameter to Kannel when sending unicode
- Zero out minutes, seconds, ms for campaign events with set delivery horus
- Add other URN types to contact context, return '' if missing, '*' mask for anon orgs
- Make sure Campaigns export base_language for simple message events, honor on import
- Change ansible command run on vagrant up from syncdb to migrate
- Remove no longer needed django-modeltranslation
- Keep up to 256 extra keys from webhooks instead of 128
- Add documentation of API rate limiting
- Make styling variables uniform across branding
- Make brand styling optional
- Add support for subflows over IVR
- Fix searching for Twilio numbers, add unit tests
- Fix API v1 run serialization when step messages are purged
- Adds more substitutions from accented characters to gsm7 plain characters
- Populate ended_on for ivr calls
- Add session foreign key to Msg model
- Fix bug in starting calls from sessions
- Remove flow from ChannelSession, sessions can span many runs/flows
- Remove superfluous channelsession.parent
- Migration to update existing twiml apps with a status_callback, remove api/v1 references
- Various tweaks to wording and presentation around custom SMTP email config
- Allow orgs to set their own SMTP server for outgoing emails
- Return better error message when To number not passed to Twilio handler
- Exclude Flow webhook events from retries (we try once and forget)
- Don't pass channel in webhook events if we don't know it
- Use JsonResponse and response.json() consistently
- Replace json.loads(response.content) with response.json() which properly decodes on Python 3
- Improve performance of contact searches by location by fetching locations in separate query
- Update pyparsing to 2.1.10
- Update to new django-hamlpy
- Display flow runs exits on the contact timeline
- Fix Travis settings file for Python 3
- Fix more Python 3 syntax issues
- Fix RecentMessages no longer supporting requests with multiple rules, and add tests for that
- Use print as function rather than statement for future Python 3 compatibility
- Do not populate contact name for anon orgs from Viber
- Add is_squashed to FlowPathCount and FlowRunCount
- Updates to using boto3, if using AWS for storing imports or exports you'll need to change your settings file:
DEFAULT_FILE_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
- Allow for the creation of Facebook referral triggers (opt-in on FB)
- Allow for whitelisting of domains for Facebook channels
- New contact field editing UI with Intercooler modals
- Update RecentMessages view to use new recent messages model
- Remove now unused indexes on FlowStep
- Adds data migration to populate FlowPathRecentStep from existing Flow Steps
- Introduce new model, FlowPathRecentStep that tracks recent steps from one flow node to another. This will replace the rather expensive index used to show recent flow activity on a flow path.
- Log any exceptions encountered in Celery tasks to Raven
- Tell user to get pages_messaging_subscriptions permission for their FB app
- Replace unicode non breaking spaces with a normal space for GSM7 encoding (Kannel only)
- Add migrations for custom indexes (existing installs before v3 should fake these)
- fix styling on loader ball animation
- Fix issue causing flow run table on flow dashboard to be very slow if a flow contained many responses
- Refactor JSON responses to use native Django JSONResponse
- Dont use proxy for Dart Media and Hub9, expose IPs to whitelist
- Fixes DartMedia channel for short codes
- Remove django-celery as it is unneeded, also stop saving Celery tombstones as we now store all task state (ContactImport for example) directly in models
- IMPORTANT: This release resets all Temba migrations. You need to run the latest migrations from a version preceding this one, then fake all temba migrations when deploying:
% python manage.py migrate csv_imports
% python manage.py migrate airtime --fake
% python manage.py migrate api --fake
% python manage.py migrate campaigns --fake
% python manage.py migrate channels --fake
% python manage.py migrate contacts --fake
% python manage.py migrate flows --fake
% python manage.py migrate ivr --fake
% python manage.py migrate locations --fake
% python manage.py migrate msgs --fake
% python manage.py migrate orgs --fake
% python manage.py migrate public --fake
% python manage.py migrate reports --fake
% python manage.py migrate schedules --fake
% python manage.py migrate triggers --fake
% python manage.py migrate ussd --fake
% python manage.py migrate values --fake
% python manage.py migrate
- Django 1.10
- Guardian 1.4.6
- MPTT 0.8.7
- Extensions 1.7.5
- Boto 2.45.0
- Django Storages 1.5.1