SciPost Code Repository

Skip to content
Snippets Groups Projects
Commit c3720869 authored by Jean-Sébastien Caux's avatar Jean-Sébastien Caux
Browse files

Add acad_field and specialties to ThesisLink; populate

parent 8405a16f
No related branches found
No related tags found
No related merge requests found
# Generated by Django 2.2.16 on 2020-09-26 20:06
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('ontology', '0007_Branch_Field_Specialty'),
('theses', '0011_auto_20191017_0949'),
]
operations = [
migrations.AddField(
model_name='thesislink',
name='acad_field',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='theses', to='ontology.AcademicField'),
),
migrations.AddField(
model_name='thesislink',
name='specialties',
field=models.ManyToManyField(blank=True, related_name='theses', to='ontology.Specialty'),
),
migrations.AddField(
model_name='thesislink',
name='topics',
field=models.ManyToManyField(blank=True, to='ontology.Topic'),
),
]
# Generated by Django 2.2.16 on 2020-09-26 20:06
from django.db import migrations
from django.utils.text import slugify
def populate_acad_field_specialty(apps, schema_editor):
ThesisLink = apps.get_model('theses.ThesisLink')
AcademicField = apps.get_model('ontology', 'AcademicField')
Specialty = apps.get_model('ontology', 'Specialty')
for t in ThesisLink.objects.all():
t.acad_field = AcademicField.objects.get(slug=t.discipline)
t.specialties.add(
Specialty.objects.get(slug=slugify(t.subject_area.replace(':', '-'))))
t.save()
class Migration(migrations.Migration):
dependencies = [
('theses', '0012_auto_20200926_2206'),
]
operations = [
migrations.RunPython(populate_acad_field_specialty,
reverse_code=migrations.RunPython.noop),
]
# Generated by Django 2.2.16 on 2020-09-26 20:10
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('theses', '0013_populate_thesislink_acad_field_specialties'),
]
operations = [
migrations.AlterField(
model_name='thesislink',
name='acad_field',
field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='theses', to='ontology.AcademicField'),
),
migrations.AlterField(
model_name='thesislink',
name='specialties',
field=models.ManyToManyField(related_name='theses', to='ontology.Specialty'),
),
]
......@@ -25,6 +25,7 @@ class ThesisLink(models.Model):
'scipost.Contributor', blank=True, null=True,
on_delete=models.CASCADE)
type = models.CharField(choices=THESIS_TYPES, max_length=3)
# TODO: Next 2 fields to be deprecated
discipline = models.CharField(
max_length=20, choices=SCIPOST_DISCIPLINES,
default='physics')
......@@ -32,6 +33,20 @@ class ThesisLink(models.Model):
max_length=10,
choices=SCIPOST_SUBJECT_AREAS,
default='Phys:QP')
# Ontology-based semantic linking
acad_field = models.ForeignKey(
'ontology.AcademicField',
on_delete=models.PROTECT,
related_name='theses'
)
specialties = models.ManyToManyField(
'ontology.Specialty',
related_name='theses'
)
topics = models.ManyToManyField(
'ontology.Topic',
blank=True
)
approaches = ChoiceArrayField(
models.CharField(max_length=24, choices=SCIPOST_APPROACHES),
blank=True, null=True, verbose_name='approach(es) [optional]')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment