Commit bb0ce1f6 by asadazam93 Committed by AsadAzam

Create new instructor position if blank

parent 56dc861e
...@@ -266,10 +266,7 @@ class PersonSerializer(serializers.ModelSerializer): ...@@ -266,10 +266,7 @@ class PersonSerializer(serializers.ModelSerializer):
works_data = validated_data.pop('works', []) works_data = validated_data.pop('works', [])
urls_data = validated_data.pop('urls', {}) urls_data = validated_data.pop('urls', {})
instance.position.title = position_data['title'] Position.objects.update_or_create(person=instance, defaults=position_data)
instance.position.organization = position_data.get('organization')
instance.position.organization_override = position_data.get('organization_override')
instance.position.save()
for url_type in [PersonSocialNetwork.FACEBOOK, PersonSocialNetwork.TWITTER, PersonSocialNetwork.BLOG]: for url_type in [PersonSocialNetwork.FACEBOOK, PersonSocialNetwork.TWITTER, PersonSocialNetwork.BLOG]:
value = urls_data.get(url_type) value = urls_data.get(url_type)
......
...@@ -9,7 +9,7 @@ from testfixtures import LogCapture ...@@ -9,7 +9,7 @@ from testfixtures import LogCapture
from course_discovery.apps.api.v1.tests.test_views.mixins import APITestCase, SerializationMixin from course_discovery.apps.api.v1.tests.test_views.mixins import APITestCase, SerializationMixin
from course_discovery.apps.api.v1.views.people import logger as people_logger from course_discovery.apps.api.v1.views.people import logger as people_logger
from course_discovery.apps.core.tests.factories import USER_PASSWORD, UserFactory from course_discovery.apps.core.tests.factories import USER_PASSWORD, UserFactory
from course_discovery.apps.course_metadata.models import Person from course_discovery.apps.course_metadata.models import Person, Position
from course_discovery.apps.course_metadata.people import MarketingSitePeople from course_discovery.apps.course_metadata.people import MarketingSitePeople
from course_discovery.apps.course_metadata.tests import toggle_switch from course_discovery.apps.course_metadata.tests import toggle_switch
from course_discovery.apps.course_metadata.tests.factories import OrganizationFactory, PersonFactory, PositionFactory from course_discovery.apps.course_metadata.tests.factories import OrganizationFactory, PersonFactory, PositionFactory
...@@ -264,3 +264,20 @@ class PersonViewSetTests(SerializationMixin, APITestCase): ...@@ -264,3 +264,20 @@ class PersonViewSetTests(SerializationMixin, APITestCase):
self.assertEqual(updated_person.person_networks.get(type='facebook').value, data['urls']['facebook']) self.assertEqual(updated_person.person_networks.get(type='facebook').value, data['urls']['facebook'])
self.assertEqual(updated_person.person_networks.get(type='twitter').value, data['urls']['twitter']) self.assertEqual(updated_person.person_networks.get(type='twitter').value, data['urls']['twitter'])
self.assertFalse(updated_person.person_networks.filter(type='blog').exists()) self.assertFalse(updated_person.person_networks.filter(type='blog').exists())
def test_update_without_position(self):
"""
Verify that if the people has no position a new position is created while updating people
"""
url = reverse('api:v1:person-detail', kwargs={'uuid': self.person.uuid})
data = self._update_person_data()
Position.objects.all().delete()
with mock.patch.object(MarketingSitePeople, 'update_person', return_value={}):
response = self.client.patch(url, data, format='json')
self.assertEqual(response.status_code, 200)
updated_person = Person.objects.get(id=self.person.id)
self.assertEqual(updated_person.position.title, data['position']['title'])
...@@ -272,20 +272,25 @@ $(document).on('click', '.selected-instructor a.edit', function (e) { ...@@ -272,20 +272,25 @@ $(document).on('click', '.selected-instructor a.edit', function (e) {
$.getJSON({ $.getJSON({
url: btnInstructor.data('url') + uuid, url: btnInstructor.data('url') + uuid,
success: function (data) { success: function (data) {
if (data['position']['organization_id'] == null){ if (data['position'] == null){
$('#org_override_container').hide();
$('#org_container').show();
}
else if (data['position']['organization_id'] == null){
$('#organization_override').val(data['position']['organization_override']); $('#organization_override').val(data['position']['organization_override']);
$('#title').val(data['position']['title']);
$('#org_container').hide(); $('#org_container').hide();
$('#org_override_container').show(); $('#org_override_container').show();
} }
else { else {
$('#id_organization').val(data['position']['organization_id']); $('#id_organization').val(data['position']['organization_id']);
$('#title').val(data['position']['title']);
$('#org_override_container').hide(); $('#org_override_container').hide();
$('#org_container').show(); $('#org_container').show();
} }
$('.select-image').attr('src', data['profile_image_url']); $('.select-image').attr('src', data['profile_image_url']);
$('#given-name').val(data['given_name']); $('#given-name').val(data['given_name']);
$('#family-name').val(data['family_name']); $('#family-name').val(data['family_name']);
$('#title').val(data['position']['title']);
$('#email').val(data['email']); $('#email').val(data['email']);
$('#bio').val(data['bio']); $('#bio').val(data['bio']);
$('#majorWorks').val(data['works'].join('\n')); $('#majorWorks').val(data['works'].join('\n'));
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment