Fakultas Ilmu Komputer UI

Commit ba7e7f98 authored by Fannyah Dita Cahya's avatar Fannyah Dita Cahya
Browse files

1606918414 188

parent 2cb50372
...@@ -66,6 +66,7 @@ export default class EditProfile extends React.Component { ...@@ -66,6 +66,7 @@ export default class EditProfile extends React.Component {
hackerrank_url: '', hackerrank_url: '',
student_gpa: 0.0, student_gpa: 0.0,
student_toefl: 0, student_toefl: 0,
student_toefl_file: '',
website_url: '', website_url: '',
latest_work: '', latest_work: '',
latest_work_desc: '', latest_work_desc: '',
...@@ -655,6 +656,12 @@ export default class EditProfile extends React.Component { ...@@ -655,6 +656,12 @@ export default class EditProfile extends React.Component {
} }
name="student_toefl" name="student_toefl"
/> />
<input
onChange={this.handleFile}
placeholder="TOEFL file"
name="student_toefl_file"
type="File"
/>
</Form.Field> </Form.Field>
<Form.Field> <Form.Field>
......
...@@ -88,6 +88,7 @@ export default class ProfilePage extends React.Component { ...@@ -88,6 +88,7 @@ export default class ProfilePage extends React.Component {
self_description: '', self_description: '',
student_gpa: 0.0, student_gpa: 0.0,
student_toefl: 0, student_toefl: 0,
student_toefl_file: '',
website_url: '', website_url: '',
latest_work: '', latest_work: '',
latest_work_desc: '', latest_work_desc: '',
...@@ -110,6 +111,7 @@ export default class ProfilePage extends React.Component { ...@@ -110,6 +111,7 @@ export default class ProfilePage extends React.Component {
this.handleFile = this.handleFile.bind(this); this.handleFile = this.handleFile.bind(this);
this.gotoStudentResume = this.gotoStudentResume.bind(this); this.gotoStudentResume = this.gotoStudentResume.bind(this);
this.gotoStudentTranscript = this.gotoStudentTranscript.bind(this); this.gotoStudentTranscript = this.gotoStudentTranscript.bind(this);
this.gotoStudentToeflFile = this.gotoStudentToeflFile.bind(this);
this.getProfile(); this.getProfile();
...@@ -154,6 +156,7 @@ export default class ProfilePage extends React.Component { ...@@ -154,6 +156,7 @@ export default class ProfilePage extends React.Component {
self_description: data.self_description, self_description: data.self_description,
student_gpa: data.student_gpa, student_gpa: data.student_gpa,
student_toefl: data.student_toefl, student_toefl: data.student_toefl,
student_toefl_file: data.student_toefl_file,
website_url: data.website_url, website_url: data.website_url,
latest_work: data.latest_work, latest_work: data.latest_work,
alamat: data.alamat, alamat: data.alamat,
...@@ -310,6 +313,8 @@ export default class ProfilePage extends React.Component { ...@@ -310,6 +313,8 @@ export default class ProfilePage extends React.Component {
gotoStudentResume = () => gotoLink(this.state.resume || '#'); gotoStudentResume = () => gotoLink(this.state.resume || '#');
gotoStudentToeflFile = () => gotoLink(this.state.student_toefl_file || '#');
gotoStudentTranscript = () => gotoLink(`transkrip/${this.state.id}`); gotoStudentTranscript = () => gotoLink(`transkrip/${this.state.id}`);
updateForm(show) { updateForm(show) {
...@@ -730,6 +735,12 @@ export default class ProfilePage extends React.Component { ...@@ -730,6 +735,12 @@ export default class ProfilePage extends React.Component {
} }
name="student_toefl" name="student_toefl"
/> />
<input
onChange={this.handleFile}
placeholder="Student Toefl"
name="student_toefl_file"
type="File"
/>
</Form.Field> </Form.Field>
<Form.Field> <Form.Field>
<label htmlFor="dependants">Dependants</label> <label htmlFor="dependants">Dependants</label>
...@@ -1327,6 +1338,14 @@ export default class ProfilePage extends React.Component { ...@@ -1327,6 +1338,14 @@ export default class ProfilePage extends React.Component {
</Segment> </Segment>
<Container textAlign="center"> <Container textAlign="center">
<div className="buttonProfile"> <div className="buttonProfile">
<Button
onClick={this.gotoStudentToeflFile}
disabled={!this.state.student_toefl_file}
primary
size="small"
>
TOEFL
</Button>
<Button <Button
onClick={this.gotoStudentResume} onClick={this.gotoStudentResume}
disabled={!this.state.resume} disabled={!this.state.resume}
......
# -*- coding: utf-8 -*- # Generated by Django 2.2.8 on 2019-12-04 06:45
# Generated by Django 1.11.17 on 2019-12-04 03:48
from __future__ import unicode_literals
import core.lib.validators import core.lib.validators
import core.models.accounts import core.models.accounts
...@@ -48,25 +46,70 @@ class Migration(migrations.Migration): ...@@ -48,25 +46,70 @@ class Migration(migrations.Migration):
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
name='Feedback', name='Recommendation',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.TextField(blank=True)),
('created', models.DateTimeField(auto_now_add=True)), ('created', models.DateTimeField(auto_now_add=True)),
('title', models.CharField(blank=True, default='', max_length=100)), ('updated', models.DateTimeField(auto_now=True)),
('content', models.TextField()),
('companyId', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Company')),
], ],
options={ options={
'ordering': ['created'], 'ordering': ['-updated'],
}, },
), ),
migrations.CreateModel( migrations.CreateModel(
name='Recommendation', name='Vacancy',
fields=[ fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('content', models.TextField(blank=True)), ('verified', models.BooleanField(default=False)),
('open_time', models.DateTimeField()),
('description', models.TextField(blank=True)),
('requirements', models.TextField(blank=True)),
('responsibilities', models.TextField(blank=True)),
('close_time', models.DateTimeField()),
('created', models.DateTimeField(auto_now_add=True)), ('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)), ('updated', models.DateTimeField(auto_now=True)),
('name', models.CharField(max_length=100)),
('amount', models.IntegerField(null=True)),
('max_accepted_applicants', models.IntegerField(default=0)),
('benefits', models.TextField(blank=True)),
('working_period', models.CharField(max_length=100, null=True)),
('tag', models.TextField(blank=True)),
('salary', models.IntegerField(default=0)),
('recruiter_activity', models.CharField(blank=True, max_length=10, null=True)),
('office_address', models.TextField(blank=True, default='')),
('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vacancies', to='core.Company')),
],
options={
'ordering': ['-updated'],
},
),
migrations.CreateModel(
name='ReasonRejected',
fields=[
('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='core.Application')),
('reason', models.TextField(default='Tidak memenuhi kualifikasi perusahaan.')),
],
),
migrations.CreateModel(
name='VacancyMilestone',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('detail', models.TextField()),
('expected_start', models.DateField()),
('expected_finish', models.DateField()),
('vacancy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='milestones', to='core.Vacancy')),
],
),
migrations.CreateModel(
name='Supervisor',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)),
('nip', models.IntegerField(unique=True, validators=[django.core.validators.MinValueValidator(100000000), django.core.validators.MaxValueValidator(9999999999)])),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
], ],
options={ options={
'ordering': ['-updated'], 'ordering': ['-updated'],
...@@ -108,6 +151,7 @@ class Migration(migrations.Migration): ...@@ -108,6 +151,7 @@ class Migration(migrations.Migration):
('job_seeking_status', models.CharField(blank=True, max_length=30, null=True)), ('job_seeking_status', models.CharField(blank=True, max_length=30, null=True)),
('student_gpa', models.FloatField(blank=True, db_column='student_gpa', default=1.0, null=True, validators=[core.lib.validators.validate_student_gpa])), ('student_gpa', models.FloatField(blank=True, db_column='student_gpa', default=1.0, null=True, validators=[core.lib.validators.validate_student_gpa])),
('student_toefl', models.IntegerField(blank=True, db_column='toefl', default=0, null=True)), ('student_toefl', models.IntegerField(blank=True, db_column='toefl', default=0, null=True)),
('student_toefl_file', models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_toefl_file_path, validators=[django.core.validators.FileExtensionValidator(['pdf'])])),
('volunteer', models.CharField(blank=True, max_length=100, null=True)), ('volunteer', models.CharField(blank=True, max_length=100, null=True)),
('awards', models.CharField(blank=True, max_length=100, null=True)), ('awards', models.CharField(blank=True, max_length=100, null=True)),
('projects', models.CharField(blank=True, max_length=100, null=True)), ('projects', models.CharField(blank=True, max_length=100, null=True)),
...@@ -117,89 +161,15 @@ class Migration(migrations.Migration): ...@@ -117,89 +161,15 @@ class Migration(migrations.Migration):
('interests', models.CharField(blank=True, max_length=100, null=True)), ('interests', models.CharField(blank=True, max_length=100, null=True)),
('dependants', models.IntegerField(blank=True, db_column='dependants', default=0, null=True)), ('dependants', models.IntegerField(blank=True, db_column='dependants', default=0, null=True)),
('related_course', models.CharField(blank=True, max_length=200, null=True)), ('related_course', models.CharField(blank=True, max_length=200, null=True)),
], ('applied_vacancies', models.ManyToManyField(blank=True, related_name='applied_vacancies', through='core.Application', to='core.Vacancy')),
options={ ('bookmarked_vacancies', models.ManyToManyField(blank=True, related_name='bookmarked_vacancies', to='core.Vacancy')),
'ordering': ['-updated'], ('recommendations', models.ManyToManyField(blank=True, related_name='recommendations', to='core.Recommendation')),
},
),
migrations.CreateModel(
name='Supervisor',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)),
('nip', models.IntegerField(unique=True, validators=[django.core.validators.MinValueValidator(100000000), django.core.validators.MaxValueValidator(9999999999)])),
('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
], ],
options={ options={
'ordering': ['-updated'], 'ordering': ['-updated'],
}, },
), ),
migrations.CreateModel(
name='Vacancy',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('verified', models.BooleanField(default=False)),
('open_time', models.DateTimeField()),
('description', models.TextField(blank=True)),
('requirements', models.TextField(blank=True)),
('responsibilities', models.TextField(blank=True)),
('close_time', models.DateTimeField()),
('created', models.DateTimeField(auto_now_add=True)),
('updated', models.DateTimeField(auto_now=True)),
('name', models.CharField(max_length=100)),
('amount', models.IntegerField(null=True)),
('max_accepted_applicants', models.IntegerField(default=0)),
('benefits', models.TextField(blank=True)),
('working_period', models.CharField(max_length=100, null=True)),
('tag', models.TextField(blank=True)),
('salary', models.IntegerField(default=0)),
('recruiter_activity', models.CharField(blank=True, max_length=10, null=True)),
('office_address', models.TextField(blank=True, default='')),
('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='vacancies', to='core.Company')),
],
options={
'ordering': ['-updated'],
},
),
migrations.CreateModel(
name='VacancyMilestone',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=100)),
('detail', models.TextField()),
('expected_start', models.DateField()),
('expected_finish', models.DateField()),
('vacancy', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='milestones', to='core.Vacancy')),
],
),
migrations.CreateModel(
name='ReasonRejected',
fields=[
('application', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='core.Application')),
('reason', models.TextField(default='Tidak memenuhi kualifikasi perusahaan.')),
],
),
migrations.AddField(
model_name='student',
name='applied_vacancies',
field=models.ManyToManyField(blank=True, related_name='applied_vacancies', through='core.Application', to='core.Vacancy'),
),
migrations.AddField(
model_name='student',
name='bookmarked_vacancies',
field=models.ManyToManyField(blank=True, related_name='bookmarked_vacancies', to='core.Vacancy'),
),
migrations.AddField(
model_name='student',
name='recommendations',
field=models.ManyToManyField(blank=True, related_name='recommendations', to='core.Recommendation'),
),
migrations.AddField(
model_name='student',
name='user',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
),
migrations.AddField( migrations.AddField(
model_name='recommendation', model_name='recommendation',
name='recommendation_giver', name='recommendation_giver',
...@@ -210,10 +180,19 @@ class Migration(migrations.Migration): ...@@ -210,10 +180,19 @@ class Migration(migrations.Migration):
name='recommendation_receiver', name='recommendation_receiver',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='receiver', to='core.Student'), field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='receiver', to='core.Student'),
), ),
migrations.AddField( migrations.CreateModel(
model_name='feedback', name='Feedback',
name='studentId', fields=[
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Student'), ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(auto_now_add=True)),
('title', models.CharField(blank=True, default='', max_length=100)),
('content', models.TextField()),
('companyId', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Company')),
('studentId', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='core.Student')),
],
options={
'ordering': ['created'],
},
), ),
migrations.AddField( migrations.AddField(
model_name='application', model_name='application',
...@@ -227,10 +206,10 @@ class Migration(migrations.Migration): ...@@ -227,10 +206,10 @@ class Migration(migrations.Migration):
), ),
migrations.AlterUniqueTogether( migrations.AlterUniqueTogether(
name='recommendation', name='recommendation',
unique_together=set([('recommendation_giver', 'recommendation_receiver')]), unique_together={('recommendation_giver', 'recommendation_receiver')},
), ),
migrations.AlterUniqueTogether( migrations.AlterUniqueTogether(
name='application', name='application',
unique_together=set([('student', 'vacancy')]), unique_together={('student', 'vacancy')},
), ),
] ]
# Generated by Django 2.2.8 on 2019-12-04 04:51
import core.lib.validators
import core.models.accounts
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='company',
name='category',
field=models.CharField(default='Belum ada kategori perusahaan', max_length=140),
),
migrations.AlterField(
model_name='company',
name='website',
field=models.CharField(default='Belum ada link website', max_length=100),
),
migrations.AlterField(
model_name='feedback',
name='title',
field=models.CharField(blank=True, default='', max_length=100),
),
migrations.AlterField(
model_name='reasonrejected',
name='reason',
field=models.TextField(default='Tidak memenuhi kualifikasi perusahaan.'),
),
migrations.AlterField(
model_name='student',
name='dependants',
field=models.IntegerField(blank=True, db_column='dependants', default=0, null=True),
),
migrations.AlterField(
model_name='student',
name='expected_salary',
field=models.CharField(blank=True, max_length=10, null=True, validators=[django.core.validators.RegexValidator('^\\d{0,10}$')]),
),
migrations.AlterField(
model_name='student',
name='phone_number',
field=models.CharField(blank=True, db_index=True, max_length=100, null=True, validators=[django.core.validators.RegexValidator('^0\\d{1,11}$')]),
),
migrations.AlterField(
model_name='student',
name='photo',
field=models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_photo_file_path, validators=[django.core.validators.FileExtensionValidator(['jpg', 'jpeg', 'png'])]),
),
migrations.AlterField(
model_name='student',
name='resume',
field=models.FileField(blank=True, null=True, upload_to=core.models.accounts.get_student_resume_file_path, validators=[django.core.validators.FileExtensionValidator(['pdf'])]),
),
migrations.AlterField(
model_name='student',
name='student_gpa',
field=models.FloatField(blank=True, db_column='student_gpa', default=1.0, null=True, validators=[core.lib.validators.validate_student_gpa]),
),
migrations.AlterField(
model_name='student',
name='student_toefl',
field=models.IntegerField(blank=True, db_column='toefl', default=0, null=True),
),
migrations.AlterField(
model_name='vacancy',
name='office_address',
field=models.TextField(blank=True, default=''),
),
]
...@@ -64,6 +64,11 @@ def get_student_sertifikat_file_path(instance, filename): ...@@ -64,6 +64,11 @@ def get_student_sertifikat_file_path(instance, filename):
filename = "%s.%s" % (uuid.uuid4(), extension) filename = "%s.%s" % (uuid.uuid4(), extension)
return os.path.join("student-sertifikat/", filename) return os.path.join("student-sertifikat/", filename)
def get_student_toefl_file_path(instance, filename):
extension = filename.split('.')[-1].lower()
filename = "%s.%s" % (uuid.uuid4(), extension)
return os.path.join("student-toefl-file/", filename)
class Student(models.Model): class Student(models.Model):
""" """
...@@ -112,6 +117,8 @@ class Student(models.Model): ...@@ -112,6 +117,8 @@ class Student(models.Model):
student_gpa = models.FloatField(db_column='student_gpa', default=1.0, blank=True, null=True, student_gpa = models.FloatField(db_column='student_gpa', default=1.0, blank=True, null=True,
validators=[validate_student_gpa]) validators=[validate_student_gpa])
student_toefl = models.IntegerField(db_column='toefl', default=0, blank=True, null=True) student_toefl = models.IntegerField(db_column='toefl', default=0, blank=True, null=True)
student_toefl_file = models.FileField(upload_to=get_student_toefl_file_path, null=True, blank=True,
validators=[FileExtensionValidator(['pdf'])])
volunteer = models.CharField(max_length=100, blank=True, null=True) volunteer = models.CharField(max_length=100, blank=True, null=True)
awards = models.CharField(max_length=100, blank=True, null=True) awards = models.CharField(max_length=100, blank=True, null=True)
projects = models.CharField(max_length=100, blank=True, null=True) projects = models.CharField(max_length=100, blank=True, null=True)
......
...@@ -26,7 +26,7 @@ class StudentSerializer(serializers.ModelSerializer): ...@@ -26,7 +26,7 @@ class StudentSerializer(serializers.ModelSerializer):
'work_experience', 'latest_work', 'latest_work_desc', 'read_no', 'volunteer', 'job_seeking_status', 'work_experience', 'latest_work', 'latest_work_desc', 'read_no', 'volunteer', 'job_seeking_status',
'skills', 'expected_salary', 'skills', 'expected_salary',
'self_description', 'github_url', 'gitlab_url', 'awards', 'certification', 'languages', 'seminar', 'self_description', 'github_url', 'gitlab_url', 'awards', 'certification', 'languages', 'seminar',
'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'related_course'] 'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'student_toefl_file', 'related_course']
@staticmethod @staticmethod
def get_accepted_no(obj): def get_accepted_no(obj):
...@@ -47,10 +47,13 @@ class StudentUpdateSerializer(serializers.ModelSerializer): ...@@ -47,10 +47,13 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
def to_representation(self, instance): def to_representation(self, instance):
resume = None resume = None
photo = None photo = None
student_toefl_file = None
if instance.resume and hasattr(instance.resume, 'url'): if instance.resume and hasattr(instance.resume, 'url'):
resume = instance.resume.url resume = instance.resume.url
if instance.photo and hasattr(instance.photo, 'url'): if instance.photo and hasattr(instance.photo, 'url'):
photo = instance.photo.url photo = instance.photo.url
if instance.student_toefl_file and hasattr(instance.student_toefl_file, 'url'):
student_toefl_file = instance.student_toefl_file.url
return { return {
'resume': resume, 'resume': resume,
'email': instance.user.email, 'email': instance.user.email,
...@@ -67,6 +70,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): ...@@ -67,6 +70,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
'website_url': instance.website_url, 'website_url': instance.website_url,
'student_gpa': instance.student_gpa, 'student_gpa': instance.student_gpa,
'student_toefl':instance.student_toefl, 'student_toefl':instance.student_toefl,
'student_toefl_file': student_toefl_file,
'volunteer': instance.volunteer, 'volunteer': instance.volunteer,
'linkedin_url': instance.linkedin_url, 'linkedin_url': instance.linkedin_url,
'hackerrank_url': instance.hackerrank_url, 'hackerrank_url': instance.hackerrank_url,
...@@ -121,6 +125,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): ...@@ -121,6 +125,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
instance.student_gpa = validated_data.get( instance.student_gpa = validated_data.get(
'student_gpa', instance.student_gpa) 'student_gpa', instance.student_gpa)
instance.student_toefl = validated_data.get('student_toefl', instance.student_toefl) instance.student_toefl = validated_data.get('student_toefl', instance.student_toefl)
instance.student_toefl_file = validated_data.get('student_toefl_file', instance.student_toefl_file)
instance.website_url = validated_data.get( instance.website_url = validated_data.get(
'website_url', instance.website_url) 'website_url', instance.website_url)
instance.skills = validated_data.get('skills', instance.skills) instance.skills = validated_data.get('skills', instance.skills)
...@@ -160,7 +165,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer): ...@@ -160,7 +165,7 @@ class StudentUpdateSerializer(serializers.ModelSerializer):
'work_experience', 'latest_work', 'latest_work_desc', 'volunteer', 'job_seeking_status', 'skills', 'work_experience', 'latest_work', 'latest_work_desc', 'volunteer', 'job_seeking_status', 'skills',
'expected_salary', 'expected_salary',
'self_description', 'github_url', 'gitlab_url', 'awards', 'certification', 'languages', 'seminar', 'self_description', 'github_url', 'gitlab_url', 'awards', 'certification', 'languages', 'seminar',
'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'related_course'] 'interests', 'alamat', 'projects', 'dependants', 'student_toefl', 'student_toefl_file', 'related_course']
class CompanyUpdateSerializer(serializers.ModelSerializer): class CompanyUpdateSerializer(serializers.ModelSerializer):
......
Supports Markdown
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