Skip to content

Latest commit

 

History

History
85 lines (52 loc) · 4.08 KB

data-protection.md

File metadata and controls

85 lines (52 loc) · 4.08 KB

Data Protection

See also: Cookies

This page gives an overview of personally-identifying information (PII) stored or processed by the Buckinghamshire Council project.

User accounts

Buckinghamshire Council Wagtail user accounts store a user's name and email address.

Other

Wagtail Forms submissions

These can store any type of data, as they are configured by the editors at Buckinghamshire Council.

Responsibility for the definition and use of form fields, and their compliance with the GDPR, rests with the Data Controller, Buckinghamshire Council.

When duplicating the database for development purposes, developers are responsible for deleting these records from duplicates. See Data locations below.

Aptean forms submissions

These submissions, part of the bc.cases app, are processed by Django view functions, but data is not stored in our application. Form submissions are posted via HTTPS to the Aptean Forms API. We also process responses to those submissions, which may contain PII if the response is an error message. Form field error messages are merely displayed to the user where possible, but may be stored in Sentry if a server error is caused. See Data locations > Error logs below.

Other personal data handling

These are common sources of personal data which are not handled by the Buckinghamshire Council Django application.

Newsletter subscription requests

These requests are handled by sending the users to a third party, where PII is handled. The Django application does not handle any such data directly or indirectly.

Job applications

These requests are handled by a third-party provider. The code which processes data is JavaScript hosted on our site, but provided by the third-party, and posting to an external API. Our servers do not process or store any personally-identifying data.

Data locations

PII is stored in the database, in the models:

  • bc.recruitment.models.JobAlertSubscription
  • bc.users.models.User
  • wagtail.contrib.forms.models.FormSubmission (Wagtail FormPage instances)

Potentially users submit feedback form responses which store personally identifying information in the model bc.feedback.models.FeedbackComment, though this is not invited.

All backups, automated or otherwise, include this data.

Exports

All exports include the above data. The first steps when downloading a copy of the production database, or cloning it to staging, should be to delete all records in the user-submitted tables:

$ python manage.py shell_plus
>>> JobAlertSubscription.objects.all().delete()
>>> FormSubmission.objects.all().delete()
>>> FeedbackComment.objects.all().delete()

When copying the data to staging, you probably want to leave user accounts intact, as users are not members of the public and will still want to access the staging site. If using the data locally, you should anonymise user accounts:

$ python manage.py shell_plus
>>> for user in User.objects.all():
...     user.first_name = "User"
...     user.last_name = user.id
...     user.email = f"user.{user.id}@example.com"
...     user.username = f"user.{user.id}"
...     user.save()

Error logs

Personally-identifying data may also appear in error reports, at sentry.io. We have configured the Sentry project to anonymise known sensitive fields, including some bespoke fields for this project, such as for Aptean forms submissions.

Responding to GDPR requests

If a request is received to purge or report the stored data for a given user, what steps are needed?

Note: this will not purge such data from backups.