Skip to content

Commit b9b3ea8

Browse files
committed
management command to fill in missing Marker objects
we need these now for various things and we did not in the past so add them in for users who are missing them. Fixes #153
1 parent 1348ad9 commit b9b3ea8

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
from django.contrib.auth.models import User
2+
from django.core.management.base import BaseCommand
3+
4+
from crowdsourcer.models import Assigned, Marker, MarkingSession, ResponseType
5+
6+
YELLOW = "\033[33m"
7+
NOBOLD = "\033[0m"
8+
9+
10+
class Command(BaseCommand):
11+
help = "Make sure all user's have a related Marker"
12+
13+
rts = ["First Mark", "Right of Reply", "Audit"]
14+
15+
def add_arguments(self, parser):
16+
parser.add_argument(
17+
"--session", required=True, action="store", help="Marking session to use"
18+
)
19+
20+
def handle(self, *args, **kwargs):
21+
users = User.objects.filter(marker__isnull=True)
22+
23+
session_label = kwargs["session"]
24+
25+
session = MarkingSession.objects.get(label=session_label)
26+
27+
for user in users:
28+
assigned = list(
29+
Assigned.objects.filter(user=user)
30+
.values_list("response_type__type", flat=True)
31+
.distinct()
32+
)
33+
34+
num_rts = len(assigned)
35+
if num_rts == 0:
36+
rt_type = "First Mark"
37+
elif len(assigned) == 1:
38+
rt_type = assigned[0]
39+
else:
40+
for rt in self.rts:
41+
if rt in assigned:
42+
rt_type = rt
43+
44+
if rt_type is None:
45+
rt_type = "First Mark"
46+
47+
m = Marker.objects.create(
48+
user=user,
49+
response_type=ResponseType.objects.get(type=rt_type),
50+
)
51+
m.marking_session.add(session)
52+
53+
print(f"Added markers to {users.count()} users")

0 commit comments

Comments
 (0)