Projet

Général

Profil

0001-define-allowed-services-m2m-for-user-profile-types-6.patch

Paul Marillonnet, 23 février 2022 11:46

Télécharger (3,6 ko)

Voir les différences:

Subject: [PATCH] define allowed services m2m for user profile types (#60082)

 .../migrations/0030_auto_20220222_1028.py     | 48 +++++++++++++++++++
 src/authentic2/custom_user/models.py          | 17 +++++++
 2 files changed, 65 insertions(+)
 create mode 100644 src/authentic2/custom_user/migrations/0030_auto_20220222_1028.py
src/authentic2/custom_user/migrations/0030_auto_20220222_1028.py
1
# Generated by Django 2.2.24 on 2022-02-22 09:28
2

  
3
import django.db.models.deletion
4
from django.db import migrations, models
5

  
6

  
7
class Migration(migrations.Migration):
8

  
9
    dependencies = [
10
        ('authentic2', '0035_service_home_url'),
11
        ('custom_user', '0029_profile_profiletype'),
12
    ]
13

  
14
    operations = [
15
        migrations.CreateModel(
16
            name='ServiceProfileType',
17
            fields=[
18
                (
19
                    'id',
20
                    models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'),
21
                ),
22
                (
23
                    'profile_type',
24
                    models.ForeignKey(
25
                        on_delete=django.db.models.deletion.CASCADE, to='custom_user.ProfileType'
26
                    ),
27
                ),
28
                (
29
                    'service',
30
                    models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='authentic2.Service'),
31
                ),
32
            ],
33
            options={
34
                'unique_together': {('service', 'profile_type')},
35
            },
36
        ),
37
        migrations.AddField(
38
            model_name='profiletype',
39
            name='allowed_services',
40
            field=models.ManyToManyField(
41
                blank=True,
42
                through='custom_user.ServiceProfileType',
43
                to='authentic2.Service',
44
                related_name='authorized_profile_types',
45
                verbose_name='allowed services for this profile type',
46
            ),
47
        ),
48
    ]
src/authentic2/custom_user/models.py
485 485
    name = models.CharField(max_length=128, verbose_name=_('name'))
486 486
    slug = models.SlugField(verbose_name=_('slug'), max_length=256, unique=True)
487 487

  
488
    allowed_services = models.ManyToManyField(
489
        to=Service,
490
        verbose_name=_('allowed services for this profile type'),
491
        through='ServiceProfileType',
492
        through_fields=('profile_type', 'service'),
493
        blank=True,
494
        related_name='authorized_profile_types',
495
    )
496

  
488 497
    def save(self, *args, **kwargs):
489 498
        if not self.slug:
490 499
            self.slug = generate_slug(self.name)
......
518 527
        verbose_name = _('profile')
519 528
        verbose_name_plural = _('profiles')
520 529
        ordering = ('user', 'profile_type')
530

  
531

  
532
class ServiceProfileType(models.Model):
533
    service = models.ForeignKey(Service, on_delete=models.CASCADE)
534
    profile_type = models.ForeignKey(ProfileType, on_delete=models.CASCADE)
535

  
536
    class Meta:
537
        unique_together = (('service', 'profile_type'),)
521
-