aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/Open311
Commit message (Collapse)AuthorAgeLines
* Fix some incorrect timezone code.Matthew Somerville2019-05-02-8/+10
| | | | | | | | | Times in the database should be stored in the application server's local timezone, by e.g. using `current_timestamp`, or by setting that timezone explicitly before storage (the database columns are all without timezone so any timezone info is silently ignored). Reports & updates fetched via Open311 and offline updates were being put into the TIME_ZONE setting if present, meaning they were stored incorrectly for future usage.
* [Open311] handle bad FixMyStreet id in updatesStruan Donald2019-04-09-0/+5
| | | | | If an update has a fixmystreet id in it check that it looks like an integer and if not issue a warning and skip the update.
* Factor to common FixMyStreet::MapIt call.Matthew Somerville2019-04-04-6/+2
|
* Merge branch 'open311-hook-update-params'Matthew Somerville2019-03-12-0/+1
|\
| * [Open311] Use cobrand hook for extra update paramsMatthew Somerville2019-03-08-0/+1
| | | | | | | | | | The test has to now create a new comment object each time as `get_cobrand_logged` is cached on the object.
* | [open311] optionally use fixmystreet_id to match update to problemStruan Donald2019-03-12-2/+12
| | | | | | | | | | | | | | | | | | | | | | If an update has a fixmystreet_id field then use the contents of that in preference to the external_id field to match an update to a problem. This handles the case where a report in a third party system passes through different types (eg inspection and defect), resulting in the external id changing. In this case it is sometimes possible to include the fixmystreet id in each type and hence use that to match things up at the fixmystreet side.
* | [Open311] Proper bodies check for sending updates.Matthew Somerville2019-03-12-3/+1
|/ | | | | Otherwise running on a site where one body ID is a substring of another, comments can get processed for the wrong body.
* [Open311] Refactor cobrand specific code.Matthew Somerville2019-01-23-54/+4
|
* [Bromley] Lights code is now SLRS.Matthew Somerville2019-01-11-1/+1
|
* [Open311] run cobrand description filtering if availableStruan Donald2019-01-04-0/+4
| | | | | When fetching reports run them through the cobrands filter_report_description method if it exists.
* [Open311] handle non_public field when fetching requestsStruan Donald2019-01-04-0/+3
| | | | | | | | | If there is <non_public>1</non_public> tag in an incoming service request then set the created report to non_public.
* [Open311] warn on staging if fail to match updatesStruan Donald2018-12-20-0/+4
| | | | | If we fail to match an update to a problem on the staging server then print a warning so we can diagnose issues.
* [Open311] Improve handling of created/updated datetimes of fetched reportsDave Arter2018-11-20-37/+42
| | | | | This should reduce the incidence of the ‘Problem id X for Y has an invalid time, not creating’ cron errors we’ve been seeing.
* Fix Open311 category group bugsDave Arter2018-11-07-11/+24
| | | | | | | - Group wasn’t being set correctly by open311-populate-service-list as cobrand attribute not being updated for each body. - Extra metadata was being persisted to the DB every time even if nothing had changed, causing lots of duplicate entries in contacts_history.
* Deal with possible multiple send_method_useds.Matthew Somerville2018-11-06-1/+1
|
* Only set Open311 category group if cobrand has groups enabledDave Arter2018-11-02-10/+20
|
* allow comment fetching to be limited by body nameStruan Donald2018-11-02-0/+5
| | | | | Allows creating scripts that fetch comments for a single body, e.g for batch updating or because they require special setup.
* do not reuse original open311 object in fetch comments loopStruan Donald2018-10-11-2/+2
| | | | | The //= meant that once `$open311` was populated we reused it each time which mean we were passing the original config in to each body.
* [Open311] More testing of GetServiceRequestUpdatesMatthew Somerville2018-10-09-13/+11
|
* [Open311] Move send-comments cobrand specific codeMatthew Somerville2018-10-09-54/+9
|
* Add get_cobrand_logged to Comment.Matthew Somerville2018-10-09-2/+1
|
* [Open311] Move send-comments code to package.Matthew Somerville2018-10-09-0/+174
|
* [Oxfordshire] remove open311 hardcodingStruan Donald2018-10-01-4/+0
| | | | | we no longer need some of the hardcoded oxfordshire Open311 overrides so remove them
* [Open311] add customer reference from update to problemStruan Donald2018-10-01-0/+7
| | | | | If an Open311 update has a customer_reference property then add that to the metadata for the problem.
* [Open311] No questionnaires on fetched reports.Matthew Somerville2018-09-18-0/+1
|
* Don’t crash when fetching Open311 requests with missing descriptionDave Arter2018-08-17-1/+1
|
* [Open311] No update text on fixed state move.Matthew Somerville2018-08-06-2/+4
| | | | | | A move between fixed states (presumably from fixed-user to fixed-council) should not count as a state change for the purposes of generating comment text from templates.
* Map Open311 CLOSED status to closed state if extended statuses enabled.Dave Arter2018-06-21-3/+4
| | | | | | | | | | | | | | | | | | | | | The Open311 specification has two values for a report's status: - open: it has been reported. - closed: it has been resolved. FixMyStreet previously mapped 'closed' to 'fixed - council', but this has been causing issues with Open311 endpoints that want to mark a FMS report as closed but not fixed. The mySociety Open311 additions introduce extended statuses, some of which represent a 'closed' state e.g. duplicate, no_further_action, but there are times when a report should simply be closed without any indication why - for example, if open311-adapter is being used to integrate with a council system which has a closed state not represented by the extended statuses. Marking a report as 'closed' on a council system and displaying that as 'fixed' on the FixMyStreet front end is not an ideal situation. This commit changes the mapping of the Open311 'closed' status to the 'closed' FMS state when extended_statuses is enabled.
* [Oxfordshire] use localtime in open311 get update callStruan Donald2018-06-08-0/+2
| | | | | | | | | | As Oxfordshire uses local time and not UTC use that when calling the get update script. Also handle a date with a timezone being passed on the server side. And add some tests in for the oxfordshire open311 endpoint Fixes mysociety/fixmystreet-commercial#1062
* Don’t delete email contacts on devolved bodies.Matthew Somerville2018-06-06-21/+8
| | | | | If we assume that any body with can_be_devolved set is probably a mix of Open311/email, we can ignore any email address contacts for such a body.
* [Bromley] Add asset/PROW ID meta to attributes.Matthew Somerville2018-06-04-0/+19
|
* [Open311] Factor cobrand overrides to functions.Matthew Somerville2018-06-04-14/+28
| | | | [Stevenage] Make sure Other included, like East Herts.
* [Open311] Hide fetched update if no data to show.Matthew Somerville2018-04-27-2/+6
| | | | If no text, photo, or state change, hide the update from display.
* better diagnostics for rejected Open311 problemsStruan Donald2018-04-25-1/+2
| | | | | Add a more helpful error message when a problem fetched over Open311 is rejected for problems with the date.
* Don’t trigger response templates unless problem state changesDave Arter2018-04-23-15/+26
| | | | | | | Response templates won't be triggered unless the problem state or external status code is changed. Fixes #2075
* Merge branch 'open311-update-problem-state'Matthew Somerville2018-04-11-16/+16
|\
| * [Open311] Generally store update state.Matthew Somerville2018-04-10-16/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously, an update's problem_state was set via an Open311 update if: * the update timestamp was equal or greater to the report's last update; * the new state was visible, and not equal to the report's current state; * the update wouldn't change the report from a fixed state to another fixed state; * (Oxfordshire) the update wouldn't change the report from any open state to Open. It would also set the report's state to match if the report was currently visible. This mostly worked, but could lead to issues if e.g. the report started life in a non-confirmed state (e.g. we pulled it in already fixed from an external source), as then the update did not record its state and the update display got confused as to the state history. However it did mean there wasn't confusion if a later update than the Open311 update was made on the site itself. This new code will set an update's problem_state if: * the new state is visible; * the update wouldn't change the report from a fixed state to another fixed state; * (Oxfordshire) the update wouldn't change the report from any open state to Open. It will also set the report's state to match if the report is currently visible, changing state, and the update timestamp is equal or greater to the report's last update. So when the report state changes is unchanged, all the conditions still apply, but the update's problem_state is set more often (it will be set regardless of whether the timestamps align, or whether the state matches the report's current state). This could theoretically lead to issues elsewhere, e.g. if an update is left on a report on FixMyStreet and then an Open311 update is pulled in later (but with an earlier timestamp) that changes the state, the report state will not be updated due to the later update being made, though the Open311 update will list the state change, and then the later update might say it changed it back (if it recorded the current state in its problem_state), even though it technically did not. I think this issue is less worrying than the current situation, which can state that a random update has fixed a report when it was the previous update that did, and there will always be such issues with multiple sources of truth for a report status. An alternative would be to allow the Open311 update to override.
* | [Open311] fetch_all option for open311 problem fetchingStruan Donald2018-04-11-7/+17
|/ | | | | | | | | If a body has a `fetch_all_reports` setting in the extra metadata then all reports are fetched over Open311 and processed regardless of age. This is useful for bodies where the API endpoint always returns all the reports as it suppresses the error messages you would otherwise get about reports with invalid dates.
* [BANES] Don’t delete non-Open311 categoriesDave Arter2018-04-10-2/+3
|
* Allow same-time state change from Open311 updates.Matthew Somerville2018-04-06-1/+2
| | | | | | If we've pulled in a report and an update from an external source, both may have exactly the same timestamp, and we do want to record the problem_state in that case.
* Correctly assign problem categories in GetServiceRequestsDave Arter2018-04-04-1/+1
| | | | | | | | FMS uses the Contact->email field for the Open311 service code, and the Contact->category field is the user-friendly service name. The wrong value was being compared previously, resulting in all fetched problems being assigned to the 'Other' category.
* Default to only one hour for GetServiceRequestsDave Arter2018-04-04-1/+1
| | | | Certain endpoints can be slow, so fetch fewer reports at a time.
* Default to last two hours in GetServiceRequestsDave Arter2018-04-04-1/+7
| | | | Also adds script for fetching the last 24hrs of reports
* [Buckinghamshire] Send report_url attribute with Open311 service requestsDave Arter2018-04-03-1/+1
|
* add convert latlong option to open311 body adminStruan Donald2018-03-29-0/+1
|
* optionally convert from EPSG:27700 to WGS84 on report importStruan Donald2018-03-29-2/+7
| | | | | | | When pulling reports in over Open311 it's sometimes useful to be able to accept reports with Easting/Northing rather than latitude/longitude. This adds an option to GetServiceRequests to convert them as they come in.
* Trigger response templates based on external_status_codeDave Arter2018-03-29-3/+10
|
* Fetch and store external_status_code in GetServiceRequestUpdatesDave Arter2018-03-28-0/+9
| | | | | | | If the Open311 endpoint provides the external_status_code field in servicerequestupdates.xml output, it’s stored in each comment’s extra field as well as the problem’s extra field. This will make it possible to trigger response templates based on this value.
* Store server_set automated, but ignore for input.Matthew Somerville2018-03-21-2/+0
| | | | | We do need to store them, so that the sending knows which fields are being requested, but we do not want them output to the client at all.
* permit blank updates to be fetched over Open311Struan Donald2018-03-15-0/+4
| | | | | Add a per body configuration option to allow Open311 updates to contain only a status change, rather than emitting a warning when this happens.