Skip to content

Commit

Permalink
Merge pull request #32 from colaraz/hamza/EDE-444
Browse files Browse the repository at this point in the history
add and update colaraz user profile fields
  • Loading branch information
HamzaIbnFarooq authored May 4, 2020
2 parents 637ba71 + 1d26010 commit dbc0c05
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 12 deletions.
11 changes: 10 additions & 1 deletion openedx/features/colaraz_features/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
15 changes: 11 additions & 4 deletions openedx/features/colaraz_features/auth_pipeline.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__)
Expand All @@ -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:
Expand Down
Original file line number Diff line number Diff line change
@@ -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),
),
]
24 changes: 17 additions & 7 deletions openedx/features/colaraz_features/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,36 @@
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'
verbose_name_plural = 'Colaraz user profiles'

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)

0 comments on commit dbc0c05

Please sign in to comment.