diff --git a/openedx/features/colaraz_features/admin.py b/openedx/features/colaraz_features/admin.py index 29f89ffc8e42..f299cfca9119 100644 --- a/openedx/features/colaraz_features/admin.py +++ b/openedx/features/colaraz_features/admin.py @@ -7,6 +7,15 @@ class ColarazUserProfileAdmin(admin.ModelAdmin): - list_display = ['user', 'site_identifier', 'level_percentage', 'level_text'] + list_display = [ + 'user', + 'elgg_id', + 'job_title', + 'profile_image_url', + 'profile_strength_title', + 'profile_strength_color', + 'profile_strength_width', + 'site_identifier', + ] admin.site.register(ColarazUserProfile, ColarazUserProfileAdmin) diff --git a/openedx/features/colaraz_features/auth_pipeline.py b/openedx/features/colaraz_features/auth_pipeline.py index 5936807a7ea6..6a3662f7e1f4 100644 --- a/openedx/features/colaraz_features/auth_pipeline.py +++ b/openedx/features/colaraz_features/auth_pipeline.py @@ -5,8 +5,10 @@ from openedx.features.colaraz_features.models import ( ColarazUserProfile, - COLARAZ_DEFAULT_LEVEL_PERCENTAGE, - COLARAZ_DEFAULT_LEVEL_TEXT, + DEFAULT_JOB_TITLE, + DEFAULT_PROFILE_STRENGTH_COLOR, + DEFAULT_PROFILE_STRENGTH_TITLE, + DEFAULT_PROFILE_STRENGTH_WIDTH, ) LOGGER = logging.getLogger(__name__) @@ -26,10 +28,15 @@ def update_colaraz_profile(request, response, user=None, *args, **kargs): """ if user: try: + profile_strength = response.get('profileStrength', {}) instance, _ = ColarazUserProfile.objects.update_or_create(user=user, defaults={ + 'elgg_id': response.get('elggId'), + 'job_title': response.get('jobTitle', DEFAULT_JOB_TITLE), + 'profile_image_url': response.get('profilePicture'), + 'profile_strength_title': profile_strength.get('title', DEFAULT_PROFILE_STRENGTH_TITLE), + 'profile_strength_color': profile_strength.get('color', DEFAULT_PROFILE_STRENGTH_COLOR), + 'profile_strength_width': profile_strength.get('width', DEFAULT_PROFILE_STRENGTH_WIDTH), 'site_identifier': str(response.get('companyInfo', {}).get('url', '')).lower(), - 'level_percentage': response.get('levelPercentage', COLARAZ_DEFAULT_LEVEL_PERCENTAGE), - 'level_text': response.get('levelText', COLARAZ_DEFAULT_LEVEL_TEXT), }) request.session['user_site_identifier'] = instance.site_identifier except AttributeError: diff --git a/openedx/features/colaraz_features/migrations/0002_auto_20200504_0145.py b/openedx/features/colaraz_features/migrations/0002_auto_20200504_0145.py new file mode 100644 index 000000000000..3fcfe51cdcd2 --- /dev/null +++ b/openedx/features/colaraz_features/migrations/0002_auto_20200504_0145.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.28 on 2020-05-04 05:45 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('colaraz_features', '0001_initial'), + ] + + operations = [ + migrations.RenameField( + model_name='colarazuserprofile', + old_name='level_text', + new_name='profile_strength_title', + ), + migrations.RemoveField( + model_name='colarazuserprofile', + name='level_percentage', + ), + migrations.AddField( + model_name='colarazuserprofile', + name='elgg_id', + field=models.IntegerField(blank=True, null=True), + ), + migrations.AddField( + model_name='colarazuserprofile', + name='job_title', + field=models.CharField(default='Student', max_length=100), + ), + migrations.AddField( + model_name='colarazuserprofile', + name='profile_image_url', + field=models.URLField(blank=True, null=True), + ), + migrations.AddField( + model_name='colarazuserprofile', + name='profile_strength_color', + field=models.CharField(default='', max_length=20), + ), + migrations.AddField( + model_name='colarazuserprofile', + name='profile_strength_width', + field=models.CharField(default='0%', max_length=5), + ), + ] diff --git a/openedx/features/colaraz_features/models.py b/openedx/features/colaraz_features/models.py index 51c032cb5b13..896e6010e579 100644 --- a/openedx/features/colaraz_features/models.py +++ b/openedx/features/colaraz_features/models.py @@ -9,18 +9,25 @@ from django.db import models -COLARAZ_DEFAULT_LEVEL_PERCENTAGE = 0 -COLARAZ_DEFAULT_LEVEL_TEXT = 'Beginner' +DEFAULT_JOB_TITLE = 'Student' +DEFAULT_PROFILE_STRENGTH_COLOR = '#A9A9A9' # gray +DEFAULT_PROFILE_STRENGTH_TITLE = 'Beginner' +DEFAULT_PROFILE_STRENGTH_WIDTH = '0%' class ColarazUserProfile(models.Model): """ Represents colaraz user profile. Fields: + user: Linked auth User + elgg_id: It will be used for api calls with colaraz + job_title: User title to be shown on sidebar + profile_image_url: User's profile image link + profile_strength_title: Profile progress-bar title + profile_strength_color: Profile progress-bar color + profile_strength_width: Profile progress-bar width/percentage site_identifier: It represents the starting part of domain which identifies domain e.g: in 'abc.courses.colaraz.com' the identifier will be 'abc' - level_percentage: Colaraz has a sidebar where it shows a profile strength progress bar - level_text: Colaraz has a sidebar where it shows a profile strength display text e.g 'beginner' """ class Meta: app_label = 'colaraz_features' @@ -28,7 +35,10 @@ class Meta: user = models.OneToOneField(User, unique=True, db_index=True, related_name='colaraz_profile', on_delete=models.CASCADE) + elgg_id = models.IntegerField(blank=True, null=True) + job_title = models.CharField(max_length=100, default=DEFAULT_JOB_TITLE) + profile_image_url = models.URLField(max_length=200, blank=True, null=True) + profile_strength_title = models.CharField(max_length=100, default=DEFAULT_PROFILE_STRENGTH_TITLE) + profile_strength_color = models.CharField(max_length=20, default=DEFAULT_PROFILE_STRENGTH_COLOR) + profile_strength_width = models.CharField(max_length=5, default=DEFAULT_PROFILE_STRENGTH_WIDTH) site_identifier = models.CharField(max_length=100) - level_percentage = models.IntegerField(validators=[MinValueValidator(0), MaxValueValidator(100)], - default=COLARAZ_DEFAULT_LEVEL_PERCENTAGE) - level_text = models.CharField(max_length=100, default=COLARAZ_DEFAULT_LEVEL_TEXT)