From c4a546d372b9e3aaad567cb8a1e536239edf32a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bodor=20M=C3=A1t=C3=A9?= <bodor.mate@kszk.bme.hu> Date: Sun, 6 Jan 2019 10:12:29 +0100 Subject: [PATCH] Create role --- src/account/migrations/0002_profile_role.py | 18 ++++++++++++++ src/account/models.py | 6 +++++ src/account/serializers.py | 4 +++- .../migrations/0002_auto_20190105_1922.py | 19 +++++++++++++++ src/homework/models.py | 2 +- src/role/urls.py | 0 .../migrations/0002_auto_20190105_2221.py | 24 +++++++++++++++++++ .../migrations/0003_auto_20190105_2227.py | 24 +++++++++++++++++++ .../migrations/0004_auto_20190105_2227.py | 24 +++++++++++++++++++ src/stats/models.py | 4 ++-- 10 files changed, 121 insertions(+), 4 deletions(-) create mode 100644 src/account/migrations/0002_profile_role.py create mode 100644 src/homework/migrations/0002_auto_20190105_1922.py create mode 100644 src/role/urls.py create mode 100644 src/stats/migrations/0002_auto_20190105_2221.py create mode 100644 src/stats/migrations/0003_auto_20190105_2227.py create mode 100644 src/stats/migrations/0004_auto_20190105_2227.py diff --git a/src/account/migrations/0002_profile_role.py b/src/account/migrations/0002_profile_role.py new file mode 100644 index 0000000..77f8eb7 --- /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 71b79f0..4ebe686 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 861e031..0cf1487 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 0000000..9f4e766 --- /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 9bebd81..5585d8d 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 0000000..e69de29 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 0000000..ac48b18 --- /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 0000000..3e826f0 --- /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 0000000..48f1c36 --- /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 d8ea909..0b2c91d 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) -- GitLab