diff --git a/export/serializers/people.py b/export/serializers/people.py index 7be3e85..8791775 100644 --- a/export/serializers/people.py +++ b/export/serializers/people.py @@ -30,7 +30,6 @@ class PersonAnswerSetSerializer(base.FlattenedModelSerializer): 'organisation', 'organisation_started_date', 'job_title', - 'themes', 'latitude', 'longitude', ] diff --git a/people/admin.py b/people/admin.py index b8bda69..de2f2bc 100644 --- a/people/admin.py +++ b/people/admin.py @@ -41,11 +41,6 @@ class OrganisationAdmin(admin.ModelAdmin): ] -@admin.register(models.Theme) -class ThemeAdmin(admin.ModelAdmin): - pass - - class PersonQuestionChoiceInline(admin.TabularInline): model = models.PersonQuestionChoice diff --git a/people/forms.py b/people/forms.py index 22fe9f5..d0f397b 100644 --- a/people/forms.py +++ b/people/forms.py @@ -163,7 +163,6 @@ class PersonAnswerSetForm(forms.ModelForm, DynamicAnswerSetBase): 'organisation_started_date', 'project_started_date', 'job_title', - 'themes', 'latitude', 'longitude', ] @@ -172,7 +171,6 @@ class PersonAnswerSetForm(forms.ModelForm, DynamicAnswerSetBase): 'country_of_residence': Select2Widget(), 'organisation_started_date': DatePickerInput(format='%Y-%m-%d'), 'project_started_date': DatePickerInput(format='%Y-%m-%d'), - 'themes': Select2MultipleWidget(), 'latitude': forms.HiddenInput, 'longitude': forms.HiddenInput, } diff --git a/people/migrations/0044_themes_to_admin_question.py b/people/migrations/0044_themes_to_admin_question.py new file mode 100644 index 0000000..0f27299 --- /dev/null +++ b/people/migrations/0044_themes_to_admin_question.py @@ -0,0 +1,39 @@ +# Generated by Django 2.2.10 on 2021-03-10 09:05 + +from django.db import migrations + +from .utils.question_sets import port_question + + +def migrate_forward(apps, schema_editor): + # Make question + Theme = apps.get_model('people', 'Theme') + theme_question = port_question( + apps, 'Research theme affiliation', + Theme.objects.all().values_list('name', flat=True), + is_multiple_choice=True) + + PersonAnswerSet = apps.get_model('people', 'PersonAnswerSet') + for answerset in PersonAnswerSet.objects.all(): + for theme in answerset.themes.all(): + answerset.question_answers.add( + theme_question.answers.get(text=theme.name) + ) + + +class Migration(migrations.Migration): + + dependencies = [ + ('people', '0043_organisationanswerset_is_partner_organisation'), + ] + + operations = [ + migrations.RunPython(migrate_forward), + migrations.RemoveField( + model_name='personanswerset', + name='themes', + ), + migrations.DeleteModel( + name='Theme', + ), + ] diff --git a/people/models/person.py b/people/models/person.py index 4d1489b..e683127 100644 --- a/people/models/person.py +++ b/people/models/person.py @@ -18,7 +18,6 @@ logger = logging.getLogger(__name__) # pylint: disable=invalid-name __all__ = [ 'User', - 'Theme', 'PersonQuestion', 'PersonQuestionChoice', 'Person', @@ -66,16 +65,6 @@ class User(AbstractUser): self.username) -class Theme(models.Model): - """ - Project theme within which a :class:`Person` works. - """ - name = models.CharField(max_length=255, blank=False, null=False) - - def __str__(self) -> str: - return self.name - - class PersonQuestion(Question): """Question which may be asked about a person.""" @@ -180,9 +169,6 @@ class PersonAnswerSet(AnswerSet): blank=True, null=False) - #: Project themes within this person works - themes = models.ManyToManyField(Theme, related_name='people', blank=True) - #: Latitude for displaying location on a map latitude = models.FloatField(blank=True, null=True) diff --git a/people/templates/people/person/includes/answer_set_full.html b/people/templates/people/person/includes/answer_set_full.html index c4aac76..6b2c90d 100644 --- a/people/templates/people/person/includes/answer_set_full.html +++ b/people/templates/people/person/includes/answer_set_full.html @@ -31,17 +31,6 @@