Skip to content

Commit 5f92fbb

Browse files
committed
on_delete=models.DO_NOTHING -> on_delete=models.CASCADE
1 parent 7797ee4 commit 5f92fbb

File tree

21 files changed

+513
-48
lines changed

21 files changed

+513
-48
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 2.0.13 on 2025-10-26 20:54
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('admission', '0001_initial'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='admissionregistrationprofile',
17+
name='user',
18+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
19+
),
20+
]

anytask/admission/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ def decline_user(self, activation_key):
172172

173173

174174
class AdmissionRegistrationProfile(models.Model):
175-
user = models.ForeignKey(User, unique=False, null=False, blank=False, on_delete=models.DO_NOTHING)
175+
user = models.ForeignKey(User, unique=False, null=False, blank=False, on_delete=models.CASCADE)
176176
activation_key = models.CharField(max_length=40, null=True, blank=True)
177177
old_activation_key = models.CharField(max_length=40, null=True, blank=True)
178178
is_updating = models.BooleanField(default=False)
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Generated by Django 2.0.13 on 2025-10-26 20:54
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('anycontest', '0003_auto_20240226_2150'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='contestsubmission',
17+
name='author',
18+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
19+
),
20+
migrations.AlterField(
21+
model_name='contestsubmission',
22+
name='file',
23+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='issues.File'),
24+
),
25+
migrations.AlterField(
26+
model_name='contestsubmission',
27+
name='issue',
28+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='issues.Issue'),
29+
),
30+
]

anytask/anycontest/models.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@ class ContestSubmissionWaiting(Exception):
2525

2626

2727
class ContestSubmission(models.Model):
28-
issue = models.ForeignKey('issues.Issue', db_index=True, null=False, blank=False, on_delete=models.DO_NOTHING)
29-
author = models.ForeignKey(User, null=False, blank=False, on_delete=models.DO_NOTHING)
30-
file = models.ForeignKey('issues.File', null=False, blank=False, on_delete=models.DO_NOTHING)
28+
issue = models.ForeignKey('issues.Issue', db_index=True, null=False, blank=False, on_delete=models.CASCADE)
29+
author = models.ForeignKey(User, null=False, blank=False, on_delete=models.CASCADE)
30+
file = models.ForeignKey('issues.File', null=False, blank=False, on_delete=models.CASCADE)
3131

3232
run_id = models.CharField(max_length=191, blank=True)
3333
compiler_id = models.CharField(max_length=191, blank=True)
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
# Generated by Django 2.0.13 on 2025-10-26 20:54
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('courses', '0010_auto_20230305_2301'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='course',
17+
name='group_with_extern',
18+
field=models.ForeignKey(blank=True, db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='course_with_extern', to='groups.Group'),
19+
),
20+
migrations.AlterField(
21+
model_name='course',
22+
name='issue_status_system',
23+
field=models.ForeignKey(db_index=False, default=1, on_delete=django.db.models.deletion.CASCADE, to='issues.IssueStatusSystem'),
24+
),
25+
migrations.AlterField(
26+
model_name='course',
27+
name='mark_system',
28+
field=models.ForeignKey(blank=True, db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.CourseMarkSystem'),
29+
),
30+
migrations.AlterField(
31+
model_name='course',
32+
name='year',
33+
field=models.ForeignKey(default=2025, on_delete=django.db.models.deletion.CASCADE, to='years.Year'),
34+
),
35+
migrations.AlterField(
36+
model_name='defaultteacher',
37+
name='course',
38+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='courses.Course'),
39+
),
40+
migrations.AlterField(
41+
model_name='defaultteacher',
42+
name='group',
43+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='groups.Group'),
44+
),
45+
migrations.AlterField(
46+
model_name='defaultteacher',
47+
name='teacher',
48+
field=models.ForeignKey(blank=True, db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
49+
),
50+
migrations.AlterField(
51+
model_name='studentcoursemark',
52+
name='course',
53+
field=models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, to='courses.Course'),
54+
),
55+
migrations.AlterField(
56+
model_name='studentcoursemark',
57+
name='mark',
58+
field=models.ForeignKey(blank=True, db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='courses.MarkField'),
59+
),
60+
migrations.AlterField(
61+
model_name='studentcoursemark',
62+
name='student',
63+
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
64+
),
65+
migrations.AlterField(
66+
model_name='studentcoursemark',
67+
name='teacher',
68+
field=models.ForeignKey(blank=True, db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='teacher_change_mark', to=settings.AUTH_USER_MODEL),
69+
),
70+
]

anytask/courses/models.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ class Course(models.Model):
101101
null=False,
102102
blank=False,
103103
default=timezone.now().year,
104-
on_delete=models.DO_NOTHING,
104+
on_delete=models.CASCADE,
105105
)
106106

107107
is_active = models.BooleanField(db_index=True, null=False, blank=False, default=False)
@@ -138,15 +138,15 @@ class Course(models.Model):
138138
db_index=False,
139139
null=True,
140140
blank=True,
141-
on_delete=models.DO_NOTHING,
141+
on_delete=models.CASCADE,
142142
)
143143

144144
mark_system = models.ForeignKey(
145145
CourseMarkSystem,
146146
db_index=False,
147147
null=True,
148148
blank=True,
149-
on_delete=models.DO_NOTHING,
149+
on_delete=models.CASCADE,
150150
)
151151

152152
show_accepted_after_contest_ok = models.BooleanField(db_index=False, null=False, blank=False, default=False)
@@ -163,7 +163,7 @@ class Course(models.Model):
163163
null=False,
164164
blank=False,
165165
default=1,
166-
on_delete=models.DO_NOTHING,
166+
on_delete=models.CASCADE,
167167
)
168168

169169
is_python_task = models.BooleanField(db_index=False, null=False, blank=False, default=False)
@@ -302,13 +302,13 @@ def is_contest_integrated(self):
302302

303303
class DefaultTeacher(models.Model):
304304
teacher = models.ForeignKey(
305-
User, db_index=False, null=True, blank=True, on_delete=models.DO_NOTHING
305+
User, db_index=False, null=True, blank=True, on_delete=models.CASCADE
306306
)
307307
course = models.ForeignKey(
308-
Course, db_index=True, null=False, blank=False, on_delete=models.DO_NOTHING
308+
Course, db_index=True, null=False, blank=False, on_delete=models.CASCADE
309309
)
310310
group = models.ForeignKey(
311-
Group, db_index=True, null=True, blank=True, on_delete=models.DO_NOTHING
311+
Group, db_index=True, null=True, blank=True, on_delete=models.CASCADE
312312
)
313313

314314
def __str__(self):
@@ -320,13 +320,13 @@ class Meta:
320320

321321
class StudentCourseMark(models.Model):
322322
student = models.ForeignKey(
323-
User, db_index=True, null=False, blank=False, on_delete=models.DO_NOTHING
323+
User, db_index=True, null=False, blank=False, on_delete=models.CASCADE
324324
)
325325
course = models.ForeignKey(
326-
Course, db_index=False, null=False, blank=False, on_delete=models.DO_NOTHING
326+
Course, db_index=False, null=False, blank=False, on_delete=models.CASCADE
327327
)
328328
mark = models.ForeignKey(
329-
MarkField, db_index=False, null=True, blank=True, on_delete=models.DO_NOTHING
329+
MarkField, db_index=False, null=True, blank=True, on_delete=models.CASCADE
330330
)
331331

332332
teacher = models.ForeignKey(
@@ -335,7 +335,7 @@ class StudentCourseMark(models.Model):
335335
db_index=False,
336336
null=True,
337337
blank=True,
338-
on_delete=models.DO_NOTHING,
338+
on_delete=models.CASCADE,
339339
)
340340
update_time = models.DateTimeField(auto_now=True) # remove default=timezone.now
341341

anytask/courses/tests.py

Lines changed: 78 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@
22

33
import datetime
44

5-
from django.test import TestCase, override_settings
5+
from django.db import connection
6+
from django.test import TestCase, override_settings, TransactionTestCase
67
from django.contrib.auth.models import User
78
from django.conf import settings
89
from schools.models import School
@@ -11,7 +12,7 @@
1112
from issues.models import Issue, IssueStatus
1213
from groups.models import Group
1314
from years.models import Year
14-
from tasks.models import Task, TaskTaken
15+
from tasks.models import Task, TaskTaken, TaskGroupRelations
1516
from tasks.management.commands.check_task_taken_expires import Command as CheckTastTakenExpiresCommand
1617

1718
from bs4 import BeautifulSoup
@@ -963,6 +964,81 @@ def test_set_task_mark_with_student(self):
963964
self.assertEqual(table_body_sum.span.string.strip().strip('\n'), '3.0')
964965

965966

967+
@override_settings(LANGUAGE_CODE='en-EN', LANGUAGES=(('en', 'English'),))
968+
class DeleteTaskTest(TransactionTestCase):
969+
def setUp(self):
970+
if connection.vendor == "sqlite":
971+
with connection.cursor() as cursor:
972+
# We need TransactionTestCase here to run this PRAGMA
973+
# Can be deleted after migrating to Django 2.2+
974+
# Need this pragma for test_delete_task,
975+
# because we got a problems with FK while deleting tasks
976+
977+
cursor.execute("PRAGMA foreign_keys = ON;")
978+
979+
self.teacher_password = 'password1'
980+
self.teacher = User.objects.create_user(username='teacher',
981+
password=self.teacher_password)
982+
self.teacher.first_name = 'teacher_name'
983+
self.teacher.last_name = 'teacher_last_name'
984+
self.teacher.save()
985+
986+
self.student_password = 'password2'
987+
self.student = User.objects.create_user(username='student',
988+
password=self.student_password)
989+
self.student.first_name = 'student_name'
990+
self.student.last_name = 'student_last_name'
991+
self.student.save()
992+
993+
self.year = Year.objects.create(start_year=2016)
994+
995+
self.group = Group.objects.create(name='group_name',
996+
year=self.year)
997+
self.group.students.set([self.student])
998+
self.group.save()
999+
1000+
seminar_status = IssueStatus(name="seminar", tag=IssueStatus.STATUS_SEMINAR)
1001+
seminar_status.save()
1002+
issue_status_system = IssueStatusSystem()
1003+
issue_status_system.name = "seminar"
1004+
issue_status_system.save()
1005+
issue_status_system.statuses.add(seminar_status)
1006+
1007+
self.course = Course.objects.create(name='course_name',
1008+
year=self.year,
1009+
issue_status_system=issue_status_system)
1010+
self.course.groups.set([self.group])
1011+
self.course.teachers.set([self.teacher])
1012+
self.course.save()
1013+
1014+
self.school = School.objects.create(name='school_name',
1015+
link='school_link')
1016+
self.school.courses.set([self.course])
1017+
self.school.save()
1018+
1019+
def test_delete_task(self):
1020+
client = self.client
1021+
task = Task.objects.create(title='task_title',
1022+
course=self.course,
1023+
score_max=10,
1024+
type=Task.TYPE_SIMPLE)
1025+
1026+
task.set_position_in_new_group()
1027+
1028+
self.assertTrue(client.login(username=self.teacher.username, password=self.teacher_password))
1029+
data = {
1030+
'course_id': task.id,
1031+
'group_id': self.group.id,
1032+
'task_deleted[]': task.id,
1033+
'deleting_ids_from_groups': '{}',
1034+
}
1035+
response = client.post("/course/change_table_tasks_pos", data=data)
1036+
self.assertEqual(response.status_code, 200)
1037+
1038+
self.assertEqual(Task.objects.filter(id=task.id).count(), 0)
1039+
self.assertEqual(TaskGroupRelations.objects.filter(task__id=task.id).count(), 0)
1040+
1041+
9661042
class PythonTaskTest(TestCase):
9671043
def setUp(self):
9681044
User.objects.create_user(username="anytask")
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 2.0.13 on 2025-10-26 20:54
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('groups', '0003_auto_20210228_1721'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='group',
16+
name='year',
17+
field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='years.Year'),
18+
),
19+
]

anytask/groups/models.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66

77
class Group(models.Model):
8-
year = models.ForeignKey(Year, db_index=True, null=False, blank=True, on_delete=models.DO_NOTHING)
8+
year = models.ForeignKey(Year, db_index=True, null=False, blank=True, on_delete=models.CASCADE)
99
name = models.CharField(max_length=191, db_index=True, null=False, blank=True)
1010
students = models.ManyToManyField(User, blank=True)
1111

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 2.0.13 on 2025-10-26 20:54
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
('invites', '0003_auto_20210228_1721'),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name='invite',
17+
name='generated_by',
18+
field=models.ForeignKey(db_index=False, on_delete=django.db.models.deletion.CASCADE, related_name='invite_generated_by', to=settings.AUTH_USER_MODEL),
19+
),
20+
migrations.AlterField(
21+
model_name='invite',
22+
name='group',
23+
field=models.ForeignKey(blank=True, db_index=False, null=True, on_delete=django.db.models.deletion.CASCADE, to='groups.Group'),
24+
),
25+
]

0 commit comments

Comments
 (0)