Compare commits
136 Commits
imgbot
...
fcff722260
| Author | SHA1 | Date | |
|---|---|---|---|
|
fcff722260
|
|||
|
9f68a6017e
|
|||
|
91ed890f68
|
|||
|
e002ab7bed
|
|||
|
3abb73872b
|
|||
|
7aba26218f
|
|||
|
aa6bb8410e
|
|||
|
b4c5493705
|
|||
|
9c8d8f077d
|
|||
|
6414e68231
|
|||
|
b539312538
|
|||
|
88dee9477b
|
|||
|
1984725275
|
|||
|
9db122acb8
|
|||
|
8e00d86023
|
|||
|
3258094a81
|
|||
|
b9ee6abebd
|
|||
|
f15cfa8fce
|
|||
|
1b32dc2db0
|
|||
|
1490d906ca
|
|||
|
fe854198fa
|
|||
|
f8ee1ffb0b
|
|||
|
af963ac0eb
|
|||
|
42ea30931e
|
|||
|
b8dc56d129
|
|||
|
f333aa2c18
|
|||
|
9bc2c2b509
|
|||
|
9abb76d4fa
|
|||
|
e6af66a964
|
|||
|
6c484b984c
|
|||
|
2a66342cd3
|
|||
|
7bd32b3ac5
|
|||
|
2a61ee2896
|
|||
|
3bac6050f1
|
|||
|
7aa37c225d
|
|||
|
215c51e718
|
|||
|
fbe4d7271f
|
|||
|
2a2f010028
|
|||
|
6b19d0e8b8
|
|||
|
3e8cfe4f11
|
|||
|
7a70270dfd
|
|||
|
5160eb7f78
|
|||
|
99e05d91bb
|
|||
|
f094ace862
|
|||
|
945fb393c0
|
|||
|
c6157d3e2b
|
|||
|
2767777d0e
|
|||
|
19e6585e26
|
|||
|
747575b968
|
|||
|
046d0e461d
|
|||
|
b73b8401b6
|
|||
|
3fe388af26
|
|||
|
22dc83d595
|
|||
|
70d4c42676
|
|||
|
0727a23236
|
|||
| f0b3a6daf3 | |||
| 3c5f6da363 | |||
| ee9be86465 | |||
| 5554edf977 | |||
| 14b73f6f50 | |||
| 732affa0b2 | |||
| 7c830ee7e5 | |||
| d47d00d79b | |||
| 3b5b3b84d4 | |||
| aa8be6a6d0 | |||
| 640362c203 | |||
| 71a8823ac2 | |||
| c6de3dc9e2 | |||
| 8696bf5d94 | |||
| 0d9bf89180 | |||
| f4f2fbdc03 | |||
| 67aaada9e8 | |||
| fcae39c93c | |||
| d1970edfb3 | |||
| ce5efff268 | |||
|
522837c64e
|
|||
| e78decdf92 | |||
| 84a3c9db24 | |||
|
280a1d9604
|
|||
|
a184bbfa26
|
|||
|
4416e5bfcb
|
|||
|
21276bcca0
|
|||
|
bc465d67e9
|
|||
|
a644735cd6
|
|||
|
10326f884f
|
|||
|
0a0c9f15af
|
|||
|
dbb9e3e530
|
|||
|
55558d1a4a
|
|||
| 081c33ebc8 | |||
| 75410db752 | |||
| 06c6b9a36e | |||
| 13b1cea28b | |||
|
cddb76bf7e
|
|||
|
f4f1fb66a2
|
|||
|
d80aeca01f
|
|||
|
45dfe2db51
|
|||
|
de5997b9da
|
|||
|
4a121964dc
|
|||
|
df5e4c8e0a
|
|||
|
3601c14ab7
|
|||
|
adde6496f5
|
|||
|
ad734d94b2
|
|||
|
7d3ada822d
|
|||
|
732af53fda
|
|||
|
4fb0529cc0
|
|||
|
aa23b1cd09
|
|||
|
0c4228da57
|
|||
|
246a52d19e
|
|||
|
8b10aaf700
|
|||
|
4d0d4f02aa
|
|||
|
af987c1ebb
|
|||
|
d406a911bb
|
|||
|
63c5a68933
|
|||
|
66f7f830db
|
|||
|
9590c2066d
|
|||
|
8b48b02ca7
|
|||
|
68e7ec2a0d
|
|||
|
5779ebdf7e
|
|||
| be648c20d5 | |||
| b6ef7c1d89 | |||
| 85f40b358a | |||
| 2698798035 | |||
| dbaab5cf8c | |||
| 0a9f82e480 | |||
| 54f2bd36bd | |||
| e836195fef | |||
| 68a424d62b | |||
| 5e15b8bb59 | |||
| d26c1b535e | |||
| dff5ac2308 | |||
| a3729fa930 | |||
| 458a734331 | |||
| b1646d556c | |||
| f8624d3b7a | |||
| f6836fdab6 | |||
| b3949f2903 |
25
RIGS/migrations/0045_legacy_supervisors.py
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
# Generated by Django 3.2.11 on 2022-01-09 15:00
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
from training.models import TrainingLevel
|
||||||
|
|
||||||
|
def find_existing_supervisors(apps, schema_editor):
|
||||||
|
Profile = apps.get_model('RIGS', 'Profile')
|
||||||
|
for person in Profile.objects.all():
|
||||||
|
if person.level_qualifications.exclude(confirmed_on=None).select_related('level') \
|
||||||
|
.filter(level__level__gte=TrainingLevel.SUPERVISOR) \
|
||||||
|
.exclude(level__department=TrainingLevel.HAULAGE) \
|
||||||
|
.exclude(level__department__isnull=True).exists():
|
||||||
|
person.is_supervisor = True
|
||||||
|
person.save()
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('RIGS', '0044_profile_is_supervisor'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(find_existing_supervisors, migrations.RunPython.noop)
|
||||||
|
]
|
||||||
|
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 278 KiB After Width: | Height: | Size: 278 KiB |
|
Before Width: | Height: | Size: 5.4 MiB After Width: | Height: | Size: 6.3 MiB |
|
Before Width: | Height: | Size: 852 KiB After Width: | Height: | Size: 852 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 24 KiB |
29
package-lock.json
generated
@@ -10173,19 +10173,12 @@
|
|||||||
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
|
"integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40="
|
||||||
},
|
},
|
||||||
"copy-props": {
|
"copy-props": {
|
||||||
"version": "2.0.5",
|
"version": "2.0.4",
|
||||||
"resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/copy-props/-/copy-props-2.0.4.tgz",
|
||||||
"integrity": "sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw==",
|
"integrity": "sha512-7cjuUME+p+S3HZlbllgsn2CDwS+5eCCX16qBgNC4jgSTf49qR1VKy/Zhl400m0IQXl/bPGEVqncgUUMjrr4s8A==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"each-props": "^1.3.2",
|
"each-props": "^1.3.0",
|
||||||
"is-plain-object": "^5.0.0"
|
"is-plain-object": "^2.0.1"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"is-plain-object": {
|
|
||||||
"version": "5.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
|
||||||
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"core-util-is": {
|
"core-util-is": {
|
||||||
@@ -11178,9 +11171,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"follow-redirects": {
|
"follow-redirects": {
|
||||||
"version": "1.14.7",
|
"version": "1.14.6",
|
||||||
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.7.tgz",
|
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.6.tgz",
|
||||||
"integrity": "sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ==",
|
"integrity": "sha512-fhUl5EwSJbbl8AR+uYL2KQDxLkdSjZGR36xy46AO7cOMTrCMON6Sa28FmAnC2tRTDbd/Uuzz3aJBv7EBN7JH8A==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"for-in": {
|
"for-in": {
|
||||||
@@ -12899,9 +12892,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"marked": {
|
"marked": {
|
||||||
"version": "4.0.10",
|
"version": "4.0.8",
|
||||||
"resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz",
|
"resolved": "https://registry.npmjs.org/marked/-/marked-4.0.8.tgz",
|
||||||
"integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw=="
|
"integrity": "sha512-dkpJMIlJpc833hbjjg8jraw1t51e/eKDoG8TFOgc5O0Z77zaYKigYekTDop5AplRoKFGIaoazhYEhGkMtU3IeA=="
|
||||||
},
|
},
|
||||||
"matchdep": {
|
"matchdep": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
|
|||||||
@@ -48,7 +48,6 @@ class Command(BaseCommand):
|
|||||||
|
|
||||||
if profile:
|
if profile:
|
||||||
self.id_map[child.find('ID').text] = profile.pk
|
self.id_map[child.find('ID').text] = profile.pk
|
||||||
print(f"Found existing user {profile}, matching data")
|
|
||||||
tally[0] += 1
|
tally[0] += 1
|
||||||
else:
|
else:
|
||||||
# PYTHONIC, BABY
|
# PYTHONIC, BABY
|
||||||
@@ -60,7 +59,6 @@ class Command(BaseCommand):
|
|||||||
initials=initials)
|
initials=initials)
|
||||||
self.id_map[child.find('ID').text] = new_profile.pk
|
self.id_map[child.find('ID').text] = new_profile.pk
|
||||||
tally[1] += 1
|
tally[1] += 1
|
||||||
print(f"No match found, creating new user {new_profile}")
|
|
||||||
except AttributeError: # W.T.F
|
except AttributeError: # W.T.F
|
||||||
print("Trainee #{} is FUBAR".format(child.find('ID').text))
|
print("Trainee #{} is FUBAR".format(child.find('ID').text))
|
||||||
|
|
||||||
|
|||||||
@@ -97,17 +97,17 @@ class TraineeList(generic.ListView):
|
|||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
q = self.request.GET.get('q', "")
|
q = self.request.GET.get('q', "")
|
||||||
|
|
||||||
filt = Q(first_name__icontains=q) | Q(last_name__icontains=q) | Q(initials__icontains=q)
|
fil = Q(first_name__icontains=q) | Q(last_name__icontains=q) | Q(initials__icontains=q)
|
||||||
|
|
||||||
# try and parse an int
|
# try and parse an int
|
||||||
try:
|
try:
|
||||||
val = int(q)
|
val = int(q)
|
||||||
filt = filt | Q(pk=val)
|
fil = fil | Q(pk=val)
|
||||||
except: # noqa
|
except: # noqa
|
||||||
# not an integer
|
# not an integer
|
||||||
pass
|
pass
|
||||||
|
|
||||||
return self.model.objects.filter(filt).annotate(num_qualifications=Count('qualifications_obtained')).order_by('-num_qualifications').prefetch_related('level_qualifications', 'qualifications_obtained', 'qualifications_obtained__item')
|
return self.model.objects.filter(filter).annotate(num_qualifications=Count('qualifications_obtained')).order_by('-num_qualifications').prefetch_related('level_qualifications', 'qualifications_obtained', 'qualifications_obtained__item')
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
|
|||||||