diff --git a/assets/js/ProfilePage.jsx b/assets/js/ProfilePage.jsx
index a9c0fc9f29dbfc420d46ed7f1090672f04d5e391..3c1226f8cfc0cd8caf3d275395a1e572635cabd0 100644
--- a/assets/js/ProfilePage.jsx
+++ b/assets/js/ProfilePage.jsx
@@ -23,8 +23,8 @@ export default class ProfilePage extends React.Component {
major: '',
batch: '',
email: '',
- cityOfBirth: '',
- dateOfBirth: '',
+ birth_place: '',
+ birth_date: '',
resume: '',
phone_number: '',
show_transcript: '',
@@ -63,8 +63,8 @@ export default class ProfilePage extends React.Component {
major: data.major,
batch: data.batch,
email: data.user.email,
- cityOfBirth: data.birth_place,
- dateOfBirth: data.birth_date,
+ birth_place: data.birth_place,
+ birth_date: data.birth_date,
phone_number: data.phone_number,
photo: data.photo,
show_transcript: data.show_transcript,
@@ -92,6 +92,7 @@ export default class ProfilePage extends React.Component {
submitForm[key] = this.state.form[key];
}
});
+ console.log(submitForm)
this.setState({ loading: true });
Server.submit(`/students/${this.state.id}/profile/`, submitForm, 'PATCH').then(() => {
this.setState({ loading: false });
@@ -146,6 +147,22 @@ export default class ProfilePage extends React.Component {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -235,7 +252,7 @@ export default class ProfilePage extends React.Component {
- { this.state.cityOfBirth || 'N/A' }, { this.state.dateOfBirth || 'N/A' }
+ { this.state.birth_place || 'N/A' }, { this.state.birth_date || 'N/A' }
diff --git a/core/serializers/accounts.py b/core/serializers/accounts.py
index e57747ce0e78f08912ea597cb139affa390f56ad..66b1717c96fe9748e9e05e8c667e15fbb2fac161 100644
--- a/core/serializers/accounts.py
+++ b/core/serializers/accounts.py
@@ -42,22 +42,31 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
'email': instance.user.email,
'phone_number': instance.phone_number,
'photo': photo,
- 'show_transcript': instance.show_transcript
+ 'show_transcript': instance.show_transcript,
+ 'birth_date': instance.birth_date,
+ 'birth_place': instance.birth_place,
+ 'major': instance.major,
+ 'batch': instance.batch
}
def update(self, instance, validated_data):
+ print(validated_data)
instance.resume = validated_data.get('resume', instance.resume)
instance.show_transcript = validated_data.get('show_transcript', instance.show_transcript)
instance.phone_number = validated_data.get('phone_number', instance.phone_number)
instance.photo = validated_data.get('photo', instance.photo)
instance.user.email = validated_data.get('email', instance.user.email)
+ instance.birth_date = validated_data.get('birth_date', instance.birth_date)
+ instance.birth_place = validated_data.get('birth_place', instance.birth_place)
+ instance.major = validated_data.get('major', instance.major)
+ instance.batch = validated_data.get('batch', instance.batch)
instance.save()
instance.user.save()
return instance
class Meta:
model = Student
- fields = ['resume', 'email', 'phone_number', 'photo', 'show_transcript']
+ fields = ['resume', 'email', 'phone_number', 'photo', 'show_transcript', 'birth_date', 'birth_place','major', 'batch']
class CompanyUpdateSerializer(serializers.ModelSerializer):
diff --git a/core/tests/test_accounts.py b/core/tests/test_accounts.py
index 35458deb5cb4174f6856ffcdfd95439d6ba6e3a6..c376acdcbd19adb9e8187205f5bf2903e7dcda0c 100644
--- a/core/tests/test_accounts.py
+++ b/core/tests/test_accounts.py
@@ -95,6 +95,27 @@ class RegisterTests(APITestCase):
response = self.client.post(url, tc_post, format='multipart')
self.assertEqual(response.status_code, status.HTTP_409_CONFLICT)
+
+ @requests_mock.Mocker()
+ def test_register_student_also_create_student_object(self, m):
+ m.post('https://api.cs.ui.ac.id/authentication/ldap/v2/', json={
+ "username": "dummy.mahasiswa",
+ "nama": "Dummy Mahasiswa",
+ "state": 1,
+ "kode_org": "01.00.12.01:mahasiswa",
+ "kodeidentitas": "1234567890",
+ "nama_role": "mahasiswa"
+ }, status_code=200)
+
+ url='/api/login/'
+
+ response = self.client.post(url, { 'username' : 'dummy.mahasiswa', 'password' : 'lalala', 'login-type' : 'sso-ui'}, format='json')
+ self.assertEqual(response.status_code, status.HTTP_201_CREATED)
+
+ user_object = User.objects.filter(username="dummy.mahasiswa").first()
+ self.assertTrue(user_object)
+ student_object = Student.objects.filter(user=user_object).first()
+ self.assertTrue(student_object)
def test_bad_request(self):
url = '/api/register/'
diff --git a/core/views/accounts.py b/core/views/accounts.py
index 0b74350fbc0a57c6d6d6a22562cfd647bc7f99a9..231ab7c38bfff1a23e12429f8153f14d03215820 100644
--- a/core/views/accounts.py
+++ b/core/views/accounts.py
@@ -167,15 +167,9 @@ class LoginViewSet(viewsets.GenericViewSet):
login(request, user)
if created:
if resp.get('nama_role') == "mahasiswa":
- student_detail = requests.get('https://api.cs.ui.ac.id/siakngcs/mahasiswa/{}/'.format(resp.get("kodeidentitas")))
- resp_student_detail = student_detail.json()
student = Student.objects.create(
user=user,
npm=resp.get("kodeidentitas"),
- birth_place=resp_student_detail.get('kota_lahir'),
- birth_date=resp_student_detail.get('tgl_lahir'),
- major=resp_student_detail.get('program')[0].get('nm_org'),
- batch=resp_student_detail.get('program')[0].get('angkatan')
)
student.save()
else: