Skip to content

Commit 2a6e64e

Browse files
committed
Merge branch 'dev' into 1055-add-additional-workflow-statuses-on-cosmos-to-help-the-re-indexation-process
2 parents 74d02d7 + b001d04 commit 2a6e64e

15 files changed

+1575
-18
lines changed

sde_collections/admin.py

Lines changed: 97 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import csv
22

3+
from django import forms
34
from django.contrib import admin, messages
45
from django.http import HttpResponse
56

@@ -11,6 +12,7 @@
1112

1213
from .models.candidate_url import CandidateURL, ResolvedTitle
1314
from .models.collection import Collection, ReindexingHistory, WorkflowHistory
15+
from .models.collection_choice_fields import TDAMMTags
1416
from .models.delta_url import CuratedUrl, DeltaUrl, DumpUrl
1517
from .models.pattern import DivisionPattern, IncludePattern, TitlePattern
1618
from .tasks import fetch_and_replace_full_text, import_candidate_urls_from_api
@@ -251,6 +253,7 @@ class CollectionAdmin(admin.ModelAdmin, ExportCsvMixin, UpdateConfigMixin):
251253
"is_multi_division",
252254
"reindexing_status",
253255
)
256+
254257
readonly_fields = ("config_folder",)
255258
list_filter = (
256259
"division",
@@ -291,11 +294,90 @@ def exclude_and_delete_children(modeladmin, request, queryset):
291294
candidate_url.get_children().delete()
292295

293296

294-
class CandidateURLAdmin(admin.ModelAdmin):
295-
"""Admin View for CandidateURL"""
297+
class TDAMMFormMixin(forms.ModelForm):
298+
"""Mixin for forms that need TDAMM tag fields"""
299+
300+
tdamm_tag_manual = forms.MultipleChoiceField(
301+
choices=TDAMMTags.choices,
302+
required=False,
303+
label="TDAMM Manual Tags",
304+
widget=forms.CheckboxSelectMultiple,
305+
)
306+
307+
tdamm_tag_ml = forms.MultipleChoiceField(
308+
choices=TDAMMTags.choices,
309+
required=False,
310+
label="TDAMM ML Tags",
311+
widget=forms.CheckboxSelectMultiple,
312+
)
296313

297-
list_display = ("url", "scraped_title", "collection")
298-
list_filter = ("collection",)
314+
315+
class TDAMMAdminMixin:
316+
"""Mixin for admin classes that handle TDAMM tags"""
317+
318+
list_display = ("url", "scraped_title", "generated_title", "collection")
319+
list_filter = ["collection"]
320+
search_fields = ("url", "collection__name")
321+
322+
def get_fieldsets(self, request, obj=None):
323+
fieldsets = [
324+
(
325+
"Overall Information",
326+
{
327+
"fields": (
328+
"collection",
329+
"url",
330+
"scraped_title",
331+
"scraped_text",
332+
"generated_title",
333+
"visited",
334+
"document_type",
335+
"division",
336+
)
337+
},
338+
),
339+
(
340+
"TDAMM Tags",
341+
{
342+
"fields": (
343+
"tdamm_tag_ml",
344+
"tdamm_tag_manual",
345+
),
346+
"classes": ("collapse",),
347+
},
348+
),
349+
]
350+
return fieldsets
351+
352+
353+
class CandidateURLForm(TDAMMFormMixin):
354+
class Meta:
355+
model = CandidateURL
356+
fields = "__all__"
357+
358+
359+
class DumpURLForm(TDAMMFormMixin, forms.ModelForm):
360+
class Meta:
361+
model = DumpUrl
362+
fields = "__all__"
363+
364+
365+
class DeltaURLForm(TDAMMFormMixin, forms.ModelForm):
366+
class Meta:
367+
model = DeltaUrl
368+
fields = "__all__"
369+
370+
371+
class CuratedURLForm(TDAMMFormMixin, forms.ModelForm):
372+
class Meta:
373+
model = CuratedUrl
374+
fields = "__all__"
375+
376+
377+
class CandidateURLAdmin(TDAMMAdminMixin, admin.ModelAdmin):
378+
"""Admin view for CandidateURL"""
379+
380+
form = CandidateURLForm
299381

300382

301383
class TitlePatternAdmin(admin.ModelAdmin):
@@ -359,25 +441,27 @@ class DeltaDivisionPatternAdmin(admin.ModelAdmin):
359441
search_fields = ("match_pattern", "division")
360442

361443

362-
class DumpUrlAdmin(admin.ModelAdmin):
444+
class DumpUrlAdmin(TDAMMAdminMixin, admin.ModelAdmin):
363445
"""Admin View for DumpUrl"""
364446

365-
list_display = ("url", "scraped_title", "collection")
366-
list_filter = ("collection",)
447+
form = DumpURLForm
367448

368449

369-
class DeltaUrlAdmin(admin.ModelAdmin):
450+
class DeltaUrlAdmin(TDAMMAdminMixin, admin.ModelAdmin):
370451
"""Admin View for DeltaUrl"""
371452

372-
list_display = ("url", "scraped_title", "generated_title", "collection")
373-
list_filter = ("collection",)
453+
form = DeltaURLForm
374454

455+
def get_fieldsets(self, request, obj=None):
456+
fieldsets = super().get_fieldsets(request, obj)
457+
fieldsets[0][1]["fields"] += ("to_delete",)
458+
return fieldsets
375459

376-
class CuratedUrlAdmin(admin.ModelAdmin):
460+
461+
class CuratedUrlAdmin(TDAMMAdminMixin, admin.ModelAdmin):
377462
"""Admin View for CuratedUrl"""
378463

379-
list_display = ("url", "scraped_title", "generated_title", "collection")
380-
list_filter = ("collection",)
464+
form = CuratedURLForm
381465

382466

383467
admin.site.register(ReindexingHistory, ReindexingHistoryAdmin)
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# Generated by Django 4.2.9 on 2024-11-20 06:39
2+
3+
import django.contrib.postgres.fields
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
("sde_collections", "0058_candidateurl_division_collection_is_multi_division_and_more"),
11+
]
12+
13+
operations = [
14+
migrations.AddField(
15+
model_name="candidateurl",
16+
name="tdamm_tag_manual",
17+
field=django.contrib.postgres.fields.ArrayField(
18+
base_field=models.CharField(
19+
choices=[
20+
("MMA_M_EM", "Messenger - EM Radiation"),
21+
("MMA_M_EM_G", "Messenger - EM Radiation - Gamma rays"),
22+
("MMA_M_EM_X", "Messenger - EM Radiation - X-rays"),
23+
("MMA_M_EM_U", "Messenger - EM Radiation - Ultraviolet"),
24+
("MMA_M_EM_O", "Messenger - EM Radiation - Optical"),
25+
("MMA_M_EM_I", "Messenger - EM Radiation - Infrared"),
26+
("MMA_M_EM_M", "Messenger - EM Radiation - Microwave"),
27+
("MMA_M_EM_R", "Messenger - EM Radiation - Radio"),
28+
("MMA_M_G", "Messenger - Gravitational Waves"),
29+
("MMA_M_G_CBI", "Messenger - Gravitational Waves - Compact Binary Inspiral"),
30+
("MMA_M_G_S", "Messenger - Gravitational Waves - Stochastic"),
31+
("MMA_M_G_CON", "Messenger - Gravitational Waves - Continuous"),
32+
("MMA_M_G_B", "Messenger - Gravitational Waves - Burst"),
33+
("MMA_M_C", "Messenger - Cosmic Rays"),
34+
("MMA_M_N", "Messenger - Neutrinos"),
35+
("MMA_O_BI", "Objects - Binaries"),
36+
("MMA_O_BI_BBH", "Objects - Binaries - Binary Black Holes"),
37+
("MMA_O_BI_BNS", "Objects - Binaries - Binary Neutron Stars"),
38+
("MMA_O_BI_C", "Objects - Binaries - Cataclysmic Variables"),
39+
("MMA_O_BI_N", "Objects - Binaries - Neutron Star-Black Hole"),
40+
("MMA_O_BI_B", "Objects - Binaries - Binary Pulsars"),
41+
("MMA_O_BI_W", "Objects - Binaries - White Dwarf Binaries"),
42+
("MMA_O_BH", "Objects - Black Holes"),
43+
("MMA_O_BH_AGN", "Objects - Black Holes - Active Galactic Nuclei"),
44+
("MMA_O_BH_IM", "Objects - Black Holes - Intermediate mass"),
45+
("MMA_O_BH_STM", "Objects - Black Holes - Stellar mass"),
46+
("MMA_O_BH_SUM", "Objects - Black Holes - Supermassive"),
47+
("MMA_O_E", "Objects - Exoplanets"),
48+
("MMA_O_N", "Objects - Neutron Stars"),
49+
("MMA_O_N_M", "Objects - Neutron Stars - Magnetars"),
50+
("MMA_O_N_P", "Objects - Neutron Stars - Pulsars"),
51+
("MMA_O_N_PWN", "Objects - Neutron Stars - Pulsar Wind Nebula"),
52+
("MMA_O_S", "Objects - Supernova Remnants"),
53+
("MMA_S_F", "Signals - Fast Radio Bursts"),
54+
("MMA_S_G", "Signals - Gamma-ray Bursts"),
55+
("MMA_S_K", "Signals - Kilonovae"),
56+
("MMA_S_N", "Signals - Novae"),
57+
("MMA_S_P", "Signals - Pevatrons"),
58+
("MMA_S_ST", "Signals - Stellar flares"),
59+
("MMA_S_SU", "Signals - Supernovae"),
60+
],
61+
max_length=255,
62+
),
63+
blank=True,
64+
db_column="tdamm_tag_manual",
65+
null=True,
66+
size=None,
67+
),
68+
),
69+
migrations.AddField(
70+
model_name="candidateurl",
71+
name="tdamm_tag_ml",
72+
field=django.contrib.postgres.fields.ArrayField(
73+
base_field=models.CharField(
74+
choices=[
75+
("MMA_M_EM", "Messenger - EM Radiation"),
76+
("MMA_M_EM_G", "Messenger - EM Radiation - Gamma rays"),
77+
("MMA_M_EM_X", "Messenger - EM Radiation - X-rays"),
78+
("MMA_M_EM_U", "Messenger - EM Radiation - Ultraviolet"),
79+
("MMA_M_EM_O", "Messenger - EM Radiation - Optical"),
80+
("MMA_M_EM_I", "Messenger - EM Radiation - Infrared"),
81+
("MMA_M_EM_M", "Messenger - EM Radiation - Microwave"),
82+
("MMA_M_EM_R", "Messenger - EM Radiation - Radio"),
83+
("MMA_M_G", "Messenger - Gravitational Waves"),
84+
("MMA_M_G_CBI", "Messenger - Gravitational Waves - Compact Binary Inspiral"),
85+
("MMA_M_G_S", "Messenger - Gravitational Waves - Stochastic"),
86+
("MMA_M_G_CON", "Messenger - Gravitational Waves - Continuous"),
87+
("MMA_M_G_B", "Messenger - Gravitational Waves - Burst"),
88+
("MMA_M_C", "Messenger - Cosmic Rays"),
89+
("MMA_M_N", "Messenger - Neutrinos"),
90+
("MMA_O_BI", "Objects - Binaries"),
91+
("MMA_O_BI_BBH", "Objects - Binaries - Binary Black Holes"),
92+
("MMA_O_BI_BNS", "Objects - Binaries - Binary Neutron Stars"),
93+
("MMA_O_BI_C", "Objects - Binaries - Cataclysmic Variables"),
94+
("MMA_O_BI_N", "Objects - Binaries - Neutron Star-Black Hole"),
95+
("MMA_O_BI_B", "Objects - Binaries - Binary Pulsars"),
96+
("MMA_O_BI_W", "Objects - Binaries - White Dwarf Binaries"),
97+
("MMA_O_BH", "Objects - Black Holes"),
98+
("MMA_O_BH_AGN", "Objects - Black Holes - Active Galactic Nuclei"),
99+
("MMA_O_BH_IM", "Objects - Black Holes - Intermediate mass"),
100+
("MMA_O_BH_STM", "Objects - Black Holes - Stellar mass"),
101+
("MMA_O_BH_SUM", "Objects - Black Holes - Supermassive"),
102+
("MMA_O_E", "Objects - Exoplanets"),
103+
("MMA_O_N", "Objects - Neutron Stars"),
104+
("MMA_O_N_M", "Objects - Neutron Stars - Magnetars"),
105+
("MMA_O_N_P", "Objects - Neutron Stars - Pulsars"),
106+
("MMA_O_N_PWN", "Objects - Neutron Stars - Pulsar Wind Nebula"),
107+
("MMA_O_S", "Objects - Supernova Remnants"),
108+
("MMA_S_F", "Signals - Fast Radio Bursts"),
109+
("MMA_S_G", "Signals - Gamma-ray Bursts"),
110+
("MMA_S_K", "Signals - Kilonovae"),
111+
("MMA_S_N", "Signals - Novae"),
112+
("MMA_S_P", "Signals - Pevatrons"),
113+
("MMA_S_ST", "Signals - Stellar flares"),
114+
("MMA_S_SU", "Signals - Supernovae"),
115+
],
116+
max_length=255,
117+
),
118+
blank=True,
119+
db_column="tdamm_tag_ml",
120+
null=True,
121+
size=None,
122+
),
123+
),
124+
migrations.AlterModelTable(
125+
name="candidateurl",
126+
table="sde_collections_candidateurl",
127+
),
128+
]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# Generated by Django 4.2.9 on 2024-11-20 07:58
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("sde_collections", "0059_candidateurl_tdamm_tag_manual_and_more"),
10+
("sde_collections", "0065_rename_delete_deltaurl_to_delete_and_more"),
11+
]
12+
13+
operations = []
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 4.2.9 on 2024-11-20 16:12
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("sde_collections", "0066_merge_20241120_0158"),
10+
]
11+
12+
operations = [
13+
migrations.RemoveField(
14+
model_name="candidateurl",
15+
name="tdamm_tag_manual",
16+
),
17+
migrations.RemoveField(
18+
model_name="candidateurl",
19+
name="tdamm_tag_ml",
20+
),
21+
]

0 commit comments

Comments
 (0)