diff --git a/src/account/migrations/0002_profile_role.py b/src/account/migrations/0002_profile_role.py new file mode 100644 index 0000000000000000000000000000000000000000..77f8eb7d1784cc27dcd4318538a706de4462fc80 --- /dev/null +++ b/src/account/migrations/0002_profile_role.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.1 on 2019-01-05 18:22 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='profile', + name='role', + field=models.CharField(choices=[('Staff', 'Staff'), ('Applicant', 'Applicant'), ('Student', 'Student')], default='Applicant', max_length=10, unique=True), + ), + ] diff --git a/src/account/models.py b/src/account/models.py index 71b79f0c59102fe236def8d5459f6e3170e9f417..4ebe686bd56ce176040582981f9e7f83d8c8f400 100644 --- a/src/account/models.py +++ b/src/account/models.py @@ -19,6 +19,11 @@ class GroupChoice(models.Model): class Profile(models.Model): + ROLES = ( + ('Staff', 'Staff'), + ('Applicant', 'Applicant'), + ('Student', 'Student'), + ) join_date = models.DateTimeField(auto_now_add=True, editable=False) updated_at = models.DateTimeField(auto_now=True, editable=False) user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE) @@ -29,6 +34,7 @@ class Profile(models.Model): nick = models.CharField(max_length=15, blank=True, default='') signed = models.BooleanField(default=False, null=False) groups = models.ManyToManyField(GroupChoice, related_name='profiles') + role = models.CharField(max_length=10, choices=ROLES, default='Applicant', unique=True) @property def full_name(self): diff --git a/src/account/serializers.py b/src/account/serializers.py index 861e0314dbeb10f76183f4c81081ffbdbda4bd91..0cf14877821160a38115d33ceba4cd0155150d93 100644 --- a/src/account/serializers.py +++ b/src/account/serializers.py @@ -16,6 +16,7 @@ class ProfileSerializer(serializers.ModelSerializer): class Meta: model = models.Profile + read_only_fields = ('role', ) fields = ( 'id', 'join_date', @@ -27,7 +28,8 @@ class ProfileSerializer(serializers.ModelSerializer): 'motivation_about', 'motivation_profession', 'motivation_exercise', - 'full_name' + 'full_name', + 'role', ) def validate(self, data): diff --git a/src/homework/migrations/0002_auto_20190105_1922.py b/src/homework/migrations/0002_auto_20190105_1922.py new file mode 100644 index 0000000000000000000000000000000000000000..9f4e7663b40f4c198a6145bfdb2a55a442e36f1f --- /dev/null +++ b/src/homework/migrations/0002_auto_20190105_1922.py @@ -0,0 +1,19 @@ +# Generated by Django 2.0.1 on 2019-01-05 18:22 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('homework', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='solution', + name='created_by', + field=models.ForeignKey(on_delete=django.db.models.deletion.DO_NOTHING, related_name='student_solution', to='account.Profile'), + ), + ] diff --git a/src/homework/models.py b/src/homework/models.py index 9bebd8131438be78478709f98999f140be2e2b52..5585d8dd4e17871e57dd379bb8c3c5f7ad41ea02 100755 --- a/src/homework/models.py +++ b/src/homework/models.py @@ -20,7 +20,7 @@ class Task(models.Model): class Solution(models.Model): task = models.ForeignKey(Task, related_name='task_solution', on_delete=models.CASCADE) - created_by = models.ForeignKey(Profile, related_name='student_solution', on_delete=models.CASCADE) + created_by = models.ForeignKey(Profile, related_name='student_solution', on_delete=models.DO_NOTHING) created_at = models.DateTimeField(auto_now_add=True, editable=False) updated_at = models.DateTimeField(auto_now=True, editable=False) note = models.TextField() diff --git a/src/role/urls.py b/src/role/urls.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/src/stats/migrations/0002_auto_20190105_2221.py b/src/stats/migrations/0002_auto_20190105_2221.py new file mode 100644 index 0000000000000000000000000000000000000000..ac48b18a93a3d57d6fc4de8a0338260b25bfa776 --- /dev/null +++ b/src/stats/migrations/0002_auto_20190105_2221.py @@ -0,0 +1,24 @@ +# Generated by Django 2.0.1 on 2019-01-05 21:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('stats', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='note', + name='event', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes_event', to='stats.Event'), + ), + migrations.AlterField( + model_name='note', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes_user', to='account.Profile'), + ), + ] diff --git a/src/stats/migrations/0003_auto_20190105_2227.py b/src/stats/migrations/0003_auto_20190105_2227.py new file mode 100644 index 0000000000000000000000000000000000000000..3e826f0240a8e3ea7a4fc32469ec3c12d61b2515 --- /dev/null +++ b/src/stats/migrations/0003_auto_20190105_2227.py @@ -0,0 +1,24 @@ +# Generated by Django 2.0.1 on 2019-01-05 21:27 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('stats', '0002_auto_20190105_2221'), + ] + + operations = [ + migrations.AlterField( + model_name='note', + name='event', + field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, related_name='notes_event', to='stats.Event'), + ), + migrations.AlterField( + model_name='note', + name='user', + field=models.ForeignKey(default='', on_delete=django.db.models.deletion.CASCADE, related_name='notes_user', to='account.Profile'), + ), + ] diff --git a/src/stats/migrations/0004_auto_20190105_2227.py b/src/stats/migrations/0004_auto_20190105_2227.py new file mode 100644 index 0000000000000000000000000000000000000000..48f1c3687c99af521557572ee5b43ab6753c5c0b --- /dev/null +++ b/src/stats/migrations/0004_auto_20190105_2227.py @@ -0,0 +1,24 @@ +# Generated by Django 2.0.1 on 2019-01-05 21:27 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('stats', '0003_auto_20190105_2227'), + ] + + operations = [ + migrations.AlterField( + model_name='note', + name='event', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes_event', to='stats.Event'), + ), + migrations.AlterField( + model_name='note', + name='user', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes_user', to='account.Profile'), + ), + ] diff --git a/src/stats/models.py b/src/stats/models.py index d8ea90905d2b9a04257e5e581920fd99dc9b073b..0b2c91d6e7f22facba041f20ddc75bde720bb6d5 100644 --- a/src/stats/models.py +++ b/src/stats/models.py @@ -17,8 +17,8 @@ class Event(models.Model): class Note(models.Model): - event = models.ForeignKey(Event, related_name='notes_event', on_delete=models.CASCADE) - user = models.ForeignKey(Profile, related_name='notes_user', on_delete=models.CASCADE) + event = models.ForeignKey(Event, related_name='notes_event', on_delete=models.CASCADE, blank=True, null=True, ) + user = models.ForeignKey(Profile, related_name='notes_user', on_delete=models.CASCADE, blank=True, null=True, ) note = models.TextField() created_by = models.ForeignKey(Profile, related_name='created_notes', on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True, editable=False)