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