From 17c3e3bd57715a2e21691a25ddbacfc6704684a2 Mon Sep 17 00:00:00 2001 From: Guillaume Pellerin Date: Mon, 22 Nov 2021 12:03:53 +0100 Subject: [PATCH] update recovery env, allow null profile.user, fix profile copy --- env/recovery.env | 2 +- env/recovery.yml | 21 ++++++++++++++++--- .../commands/teleforma-copy-students.py | 8 ++++++- .../migrations/0014_alter_profile_user.py | 21 +++++++++++++++++++ teleforma/models/crfpa.py | 2 +- 5 files changed, 48 insertions(+), 6 deletions(-) create mode 100644 teleforma/migrations/0014_alter_profile_user.py diff --git a/env/recovery.env b/env/recovery.env index 18b569ea..0c0c7b69 100644 --- a/env/recovery.env +++ b/env/recovery.env @@ -3,7 +3,7 @@ DEBUG=True DB_PORT=5432 DB_HOST=db POSTGRES_HOST=db -POSTGRES_PASSWORD=mysecretpassword +POSTGRES_PASSWORD=EtOdlerlOt8ob POSTGRES_DATABASE=teleforma POSTGRES_DB=teleforma POSTGRES_USER=teleforma diff --git a/env/recovery.yml b/env/recovery.yml index 777ba361..bacddd3d 100644 --- a/env/recovery.yml +++ b/env/recovery.yml @@ -9,7 +9,7 @@ services: command: /bin/sh /srv/app/wsgi.sh restart: unless-stopped env_file: - - env/prod.env + - env/recovery.env volumes: - /mnt/crfpa-videos:/mnt/crfpa-videos - /mnt/crfpa-scripts:/mnt/crfpa-scripts @@ -33,7 +33,7 @@ services: ports: - "9006:8000" env_file: - - env/prod.env + - env/recovery.env networks: - teleforma-recovery links: @@ -47,7 +47,21 @@ services: db: env_file: - - env/prod.env + - env/recovery.env + networks: + - teleforma-recovery + + db-recovery: + image: postgres:13 + env_file: + - env/recovery.env + environment: + PGDATA: /var/lib/postgresql/data/pgdata + volumes: + - ./var/lib/postgresql-recovery:/var/lib/postgresql/data:rw + - ./bin:/srv/bin + - ./var/backup/:/srv/backup + - /etc/localtime:/etc/localtime:ro networks: - teleforma-recovery @@ -64,6 +78,7 @@ volumes: app: channels: db: + db-recovery: redis: diff --git a/teleforma/management/commands/teleforma-copy-students.py b/teleforma/management/commands/teleforma-copy-students.py index 31488d59..50c6a4e1 100644 --- a/teleforma/management/commands/teleforma-copy-students.py +++ b/teleforma/management/commands/teleforma-copy-students.py @@ -30,7 +30,7 @@ class Command(BaseCommand): period_name = 'Annuelle' db_from = 'recovery' db_to = 'default' - logger = Logger('/var/log/app/sudent_import_recovery.log') + logger = Logger('/var/log/app/student_import_recovery.log') def handle(self, *args, **options): period = Period.objects.get(name=self.period_name) @@ -63,6 +63,7 @@ class Command(BaseCommand): optional_fees = deepcopy(student.optional_fees.all()) paybacks = deepcopy(student.paybacks.all()) trainings = student.trainings.all() + profile = deepcopy(Profile.objects.using(self.db_from).get(user=student.user)) user.pk = None user.username = get_unique_username(user.first_name, user.last_name) @@ -73,6 +74,11 @@ class Command(BaseCommand): student.save(using=self.db_to) student.user = user student.save(using=self.db_to) + profile.pk = None + profile.user = None + profile.save(using=self.db_to) + profile.user = user + profile.save(using=self.db_to) for training in trainings: training_to = Training.objects.using(self.db_to).get(name=training.name, period=period) diff --git a/teleforma/migrations/0014_alter_profile_user.py b/teleforma/migrations/0014_alter_profile_user.py new file mode 100644 index 00000000..8a4c4ba5 --- /dev/null +++ b/teleforma/migrations/0014_alter_profile_user.py @@ -0,0 +1,21 @@ +# Generated by Django 3.2.3 on 2021-11-22 11:55 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('teleforma', '0013_auto_20211122_0057'), + ] + + operations = [ + migrations.AlterField( + model_name='profile', + name='user', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='profile', to=settings.AUTH_USER_MODEL, unique=True, verbose_name='user'), + ), + ] diff --git a/teleforma/models/crfpa.py b/teleforma/models/crfpa.py index e84d429a..712bbf4b 100755 --- a/teleforma/models/crfpa.py +++ b/teleforma/models/crfpa.py @@ -422,7 +422,7 @@ class Profile(models.Model): "User profile extension" user = models.ForeignKey(User, related_name='profile', - verbose_name=_('user'), unique=True, on_delete=models.CASCADE) + verbose_name=_('user'), unique=True, on_delete=models.CASCADE, null=True) address = models.CharField(_('Address'), max_length=255, blank=True) address_detail = models.CharField( _('Address detail'), max_length=255, blank=True, null=True) -- 2.39.5