From 87a66640130db06b1ab84b19ac5a44e89ba64c97 Mon Sep 17 00:00:00 2001 From: Erica Nwoga <66533300+chimsara@users.noreply.github.com> Date: Thu, 3 Aug 2023 10:17:52 -0400 Subject: [PATCH] feat: created ltipiisignature model (#32853) * feat: created ltipiisignature model --- .../migrations/0002_ltipiisignature.py | 27 +++++++++++++++++++ ...ge_0002_ltipiisignature_0002_ltipiitool.py | 14 ++++++++++ openedx/core/djangoapps/agreements/models.py | 18 +++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 openedx/core/djangoapps/agreements/migrations/0002_ltipiisignature.py create mode 100644 openedx/core/djangoapps/agreements/migrations/0003_merge_0002_ltipiisignature_0002_ltipiitool.py diff --git a/openedx/core/djangoapps/agreements/migrations/0002_ltipiisignature.py b/openedx/core/djangoapps/agreements/migrations/0002_ltipiisignature.py new file mode 100644 index 000000000000..c72ab0dc8c57 --- /dev/null +++ b/openedx/core/djangoapps/agreements/migrations/0002_ltipiisignature.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.20 on 2023-08-02 13:59 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion +import opaque_keys.edx.django.models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('agreements', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='LTIPIISignature', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('course_key', opaque_keys.edx.django.models.CourseKeyField(db_index=True, max_length=255)), + ('lti_tools', models.JSONField()), + ('lti_tools_hash', models.IntegerField()), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + ] diff --git a/openedx/core/djangoapps/agreements/migrations/0003_merge_0002_ltipiisignature_0002_ltipiitool.py b/openedx/core/djangoapps/agreements/migrations/0003_merge_0002_ltipiisignature_0002_ltipiitool.py new file mode 100644 index 000000000000..32da27854fb0 --- /dev/null +++ b/openedx/core/djangoapps/agreements/migrations/0003_merge_0002_ltipiisignature_0002_ltipiitool.py @@ -0,0 +1,14 @@ +# Generated by Django 3.2.20 on 2023-08-03 13:18 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('agreements', '0002_ltipiisignature'), + ('agreements', '0002_ltipiitool'), + ] + + operations = [ + ] diff --git a/openedx/core/djangoapps/agreements/models.py b/openedx/core/djangoapps/agreements/models.py index 01f1fb8258dd..f9dbf784c3a5 100644 --- a/openedx/core/djangoapps/agreements/models.py +++ b/openedx/core/djangoapps/agreements/models.py @@ -34,3 +34,21 @@ class LTIPIITool(models.Model): class Meta: app_label = 'agreements' + + +class LTIPIISignature(models.Model): + """ + This model stores a user's acknowledgement to share PII via LTI tools in a particular course. + """ + user = models.ForeignKey(User, db_index=True, on_delete=models.CASCADE) + course_key = CourseKeyField(max_length=255, db_index=True) + lti_tools = models.JSONField() + + # lti_tools_hash represents the hash of the list of LTI tools receiving + # PII acknowledged by the user. The hash is used to compare user + # acknowledgments - which reduces response time and decreases any impact + # on unit rendering time. + lti_tools_hash = models.IntegerField() + + class Meta: + app_label = 'agreements'