Projet

Général

Profil

0004-models-hide-related_name-and-related_query_name-for-.patch

Benjamin Dauvergne, 09 avril 2019 13:33

Télécharger (55,8 ko)

Voir les différences:

Subject: [PATCH 04/10] models: hide related_name and related_query_name for
 BaseResource.users (#31595)

It creates errors if a connector names its connector model 'Resource',
as all related names on users get the same name.
 passerelle/apps/actesweb/migrations/0001_initial.py             | 2 +-
 passerelle/apps/airquality/migrations/0001_initial.py           | 2 +-
 passerelle/apps/api_particulier/migrations/0001_initial.py      | 2 +-
 passerelle/apps/arcgis/migrations/0001_initial.py               | 2 +-
 passerelle/apps/arpege_ecp/migrations/0001_initial.py           | 2 +-
 passerelle/apps/atos_genesys/migrations/0001_initial.py         | 2 +-
 passerelle/apps/base_adresse/migrations/0001_initial.py         | 2 +-
 passerelle/apps/bdp/migrations/0001_initial.py                  | 2 +-
 passerelle/apps/cartads_cs/migrations/0001_initial.py           | 2 +-
 passerelle/apps/choosit/migrations/0001_initial.py              | 2 +-
 passerelle/apps/cityweb/migrations/0001_initial.py              | 2 +-
 .../clicrdv/migrations/0001_squashed_0006_auto_20170920_0951.py | 2 +-
 passerelle/apps/clicrdv/migrations/0004_newclicrdv.py           | 2 +-
 passerelle/apps/cmis/migrations/0001_initial.py                 | 2 +-
 passerelle/apps/csvdatasource/migrations/0001_initial.py        | 2 +-
 passerelle/apps/family/migrations/0001_initial.py               | 2 +-
 passerelle/apps/feeds/migrations/0001_initial.py                | 2 +-
 passerelle/apps/gdc/migrations/0001_initial.py                  | 2 +-
 passerelle/apps/jsondatastore/migrations/0001_initial.py        | 2 +-
 passerelle/apps/mobyt/migrations/0001_initial.py                | 2 +-
 passerelle/apps/okina/migrations/0001_initial.py                | 2 +-
 passerelle/apps/opengis/migrations/0001_initial.py              | 2 +-
 passerelle/apps/orange/migrations/0001_initial.py               | 2 +-
 passerelle/apps/ovh/migrations/0001_initial.py                  | 2 +-
 passerelle/apps/oxyd/migrations/0001_initial.py                 | 2 +-
 passerelle/apps/pastell/migrations/0001_initial.py              | 2 +-
 passerelle/apps/phonecalls/migrations/0001_initial.py           | 2 +-
 passerelle/apps/solis/migrations/0001_initial.py                | 2 +-
 passerelle/apps/vivaticket/migrations/0001_initial.py           | 2 +-
 passerelle/base/models.py                                       | 2 +-
 passerelle/contrib/adict/migrations/0001_initial.py             | 2 +-
 passerelle/contrib/agoraplus/migrations/0001_initial.py         | 2 +-
 passerelle/contrib/dpark/migrations/0001_initial.py             | 2 +-
 passerelle/contrib/fake_family/migrations/0001_initial.py       | 2 +-
 passerelle/contrib/gdema/migrations/0001_initial.py             | 2 +-
 .../contrib/grandlyon_streetsections/migrations/0001_initial.py | 2 +-
 passerelle/contrib/greco/migrations/0001_initial.py             | 2 +-
 passerelle/contrib/grenoble_gru/migrations/0001_initial.py      | 2 +-
 passerelle/contrib/iparapheur/migrations/0001_initial.py        | 2 +-
 passerelle/contrib/iws/migrations/0001_initial.py               | 2 +-
 passerelle/contrib/maarch/migrations/0001_initial.py            | 2 +-
 passerelle/contrib/mdel/migrations/0001_initial.py              | 2 +-
 passerelle/contrib/mdph13/migrations/0001_initial.py            | 2 +-
 .../contrib/meyzieu_newsletters/migrations/0001_initial.py      | 2 +-
 passerelle/contrib/nancypoll/migrations/0001_initial.py         | 2 +-
 passerelle/contrib/planitech/migrations/0001_initial.py         | 2 +-
 passerelle/contrib/seisin_by_email/migrations/0001_initial.py   | 2 +-
 passerelle/contrib/solis_apa/migrations/0001_initial.py         | 2 +-
 passerelle/contrib/strasbourg_eu/migrations/0001_initial.py     | 2 +-
 passerelle/contrib/stub_invoices/migrations/0001_initial.py     | 2 +-
 passerelle/contrib/tcl/migrations/0001_initial.py               | 2 +-
 passerelle/contrib/teamnet_axel/migrations/0001_initial.py      | 2 +-
 passerelle/contrib/tlmcom/migrations/0001_initial.py            | 2 +-
 53 files changed, 53 insertions(+), 53 deletions(-)
passerelle/apps/actesweb/migrations/0001_initial.py
19 19
                ('description', models.TextField(verbose_name='Description')),
20 20
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
21 21
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
22
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_actesweb_users_+', related_query_name='+', blank=True)),
23 23
            ],
24 24
            options={
25 25
                'verbose_name': "ActesWeb - Demande d'acte d'\xe9tat civil",
passerelle/apps/airquality/migrations/0001_initial.py
19 19
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
22
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_airquality_users_+', related_query_name='+', blank=True)),
23 23
            ],
24 24
            options={
25 25
                'verbose_name': 'Air Quality',
passerelle/apps/api_particulier/migrations/0001_initial.py
21 21
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22 22
                ('_platform', models.CharField(choices=[(b'prod', 'Production'), (b'test', 'Test')], max_length=8, verbose_name='Platform')),
23 23
                ('_api_key', models.CharField(default=b'', max_length=64, verbose_name='API key', blank=True)),
24
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
24
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_apiparticulier_users_+', related_query_name='+', blank=True)),
25 25
            ],
26 26
            options={
27 27
                'abstract': False,
passerelle/apps/arcgis/migrations/0001_initial.py
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22 22
                ('base_url', models.CharField(max_length=256, verbose_name='SIG Url')),
23
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_arcgis_users_+', related_query_name='+', blank=True)),
24 24
            ],
25 25
            options={
26 26
                'verbose_name': 'Arcgis Webservice',
passerelle/apps/arpege_ecp/migrations/0001_initial.py
22 22
                ('webservice_base_url', models.URLField(verbose_name='Webservice Base URL')),
23 23
                ('hawk_auth_id', models.CharField(max_length=64, verbose_name='Hawk Authentication id')),
24 24
                ('hawk_auth_key', models.CharField(max_length=64, verbose_name='Hawk Authentication secret')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_arpegeecp_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Arpege ECP',
passerelle/apps/atos_genesys/migrations/0001_initial.py
45 45
                ('http_proxy', models.CharField(blank=True, max_length=128, verbose_name='HTTP and HTTPS proxy')),
46 46
                ('webservice_base_url', models.URLField(verbose_name='Webservice Base URL')),
47 47
                ('cod_rgp', models.CharField(default=b'RGP_PUB', max_length=64, verbose_name='Code RGP')),
48
                ('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
48
                ('users', models.ManyToManyField(blank=True, related_name='_link_users_+', related_query_name='+', to='base.ApiUser')),
49 49
            ],
50 50
            options={
51 51
                'verbose_name': 'ATOS Genesys',
passerelle/apps/base_adresse/migrations/0001_initial.py
19 19
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('service_url', models.CharField(help_text='Base Adresse Web Service URL', max_length=128, verbose_name='Service URL')),
22
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
22
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_baseaddresse_users_+', related_query_name='+', blank=True)),
23 23
            ],
24 24
            options={
25 25
                'verbose_name': 'Base Adresse Web Service',
passerelle/apps/bdp/migrations/0001_initial.py
23 23
                ('password', models.CharField(max_length=128, verbose_name='Password', blank=True)),
24 24
                ('verify_cert', models.BooleanField(default=True, verbose_name='Check HTTPS Certificate validity')),
25 25
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'bdp', null=True, verbose_name='Keystore', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_bdp_users_+', related_query_name='+', blank=True)),
27 27
            ],
28 28
            options={
29 29
                'verbose_name': 'BDP Web Service',
passerelle/apps/cartads_cs/migrations/0001_initial.py
31 31
                ('ftp_username', models.CharField(max_length=64, verbose_name='FTP Username')),
32 32
                ('ftp_password', models.CharField(max_length=64, verbose_name='FTP Password')),
33 33
                ('ftp_client_name', models.CharField(max_length=64, verbose_name='FTP Client Name')),
34
                ('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
34
                ('users', models.ManyToManyField(blank=True, related_name='_cartadscs_users_+', related_query_name='+', to='base.ApiUser')),
35 35
            ],
36 36
            options={
37 37
                'verbose_name': 'Cart@DS CS',
passerelle/apps/choosit/migrations/0001_initial.py
50 50
                ('description', models.TextField(verbose_name='Description')),
51 51
                ('key', models.CharField(max_length=64)),
52 52
                ('default_country_code', models.CharField(default='33', max_length=3)),
53
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
53
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_choositsmsgateway_users_+', related_query_name='+', blank=True)),
54 54
            ],
55 55
            options={
56 56
                'db_table': 'sms_choosit',
passerelle/apps/cityweb/migrations/0001_initial.py
19 19
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
22
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_cityweb_users_+', related_query_name='+', blank=True)),
23 23
            ],
24 24
            options={
25 25
                'verbose_name': "CityWeb - Demande d'acte d'\xe9tat civil",
passerelle/apps/clicrdv/migrations/0001_squashed_0006_auto_20170920_0951.py
32 32
                (b'password', models.CharField(max_length=64, verbose_name='Password')),
33 33
                (b'websource', models.CharField(blank=True, max_length=64, null=True, verbose_name='Web source')),
34 34
                (b'default_comment', models.CharField(blank=True, max_length=250, null=True, verbose_name='Default comment')),
35
                (b'users', models.ManyToManyField(blank=True, to=b'base.ApiUser')),
35
                (b'users', models.ManyToManyField(blank=True, related_name='_clicrdv_users_+', related_query_name='+', to='base.ApiUser')),
36 36
            ],
37 37
            options={
38 38
                b'verbose_name': b'Clicrdv Agenda',
passerelle/apps/clicrdv/migrations/0004_newclicrdv.py
25 25
                ('password', models.CharField(max_length=64)),
26 26
                ('websource', models.CharField(max_length=64, null=True, blank=True)),
27 27
                ('default_comment', models.CharField(max_length=250, null=True, blank=True)),
28
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
28
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_newclicrdv_users_+', related_query_name='+', blank=True)),
29 29
            ],
30 30
            options={
31 31
                'verbose_name': 'Clicrdv Agenda',
passerelle/apps/cmis/migrations/0001_initial.py
22 22
                ('cmis_endpoint', models.URLField(help_text='URL of the CMIS Atom endpoint', max_length=400, verbose_name='CMIS Atom endpoint')),
23 23
                ('username', models.CharField(max_length=128, verbose_name='Service username')),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_cmisconnector_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'CMIS connector',
passerelle/apps/csvdatasource/migrations/0001_initial.py
26 26
                                                      verbose_name='Column keynames',
27 27
                                                      blank=True)),
28 28
                ('skip_header', models.BooleanField(default=False, verbose_name='Skip first line')),
29
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
29
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_csvdatasource_users_+', related_query_name='+', blank=True)),
30 30
            ],
31 31
            options={
32 32
                'verbose_name': 'CSV File',
passerelle/apps/family/migrations/0001_initial.py
80 80
                ('description', models.TextField(verbose_name='Description')),
81 81
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
82 82
                ('archive', models.FileField(upload_to=b'archives', verbose_name='Data Archive')),
83
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
83
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_genericfamily_users_+', related_query_name='+', blank=True)),
84 84
            ],
85 85
            options={
86 86
                'verbose_name': 'Generic Family Connector',
passerelle/apps/feeds/migrations/0001_initial.py
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22 22
                ('url', models.URLField(max_length=1000, verbose_name='URL')),
23
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_feed_users_+', related_query_name='+', blank=True)),
24 24
            ],
25 25
            options={
26 26
                'verbose_name': 'Feed',
passerelle/apps/gdc/migrations/0001_initial.py
19 19
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('service_url', models.CharField(help_text='GDC Web Service URL', max_length=128, verbose_name='Service URL')),
22
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
22
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_gdc_users_+', related_query_name='+', blank=True)),
23 23
            ],
24 24
            options={
25 25
                'verbose_name': 'GDC Web Service',
passerelle/apps/jsondatastore/migrations/0001_initial.py
32 32
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
33 33
                ('description', models.TextField(verbose_name='Description')),
34 34
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
35
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
35
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_jsondata_users_+', related_query_name='+', blank=True)),
36 36
            ],
37 37
            options={
38 38
                'verbose_name': 'JSON Data Store',
passerelle/apps/mobyt/migrations/0001_initial.py
23 23
                ('password', models.CharField(max_length=64)),
24 24
                ('quality', models.CharField(default=b'l', max_length=4, verbose_name='message quality', choices=[(b'l', 'sms direct'), (b'll', 'sms low-cost'), (b'n', 'sms top')])),
25 25
                ('default_country_code', models.CharField(default='33', max_length=3)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_mobytsmsgateway_users_+', related_query_name='+', blank=True)),
27 27
            ],
28 28
            options={
29 29
                'db_table': 'sms_mobyt',
passerelle/apps/okina/migrations/0001_initial.py
22 22
                ('service_url', models.URLField(help_text='Okina API base URL', max_length=256, verbose_name='Service URL')),
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username')),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_okina_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Okina',
passerelle/apps/opengis/migrations/0001_initial.py
21 21
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22 22
                ('service_root_url', models.URLField(max_length=256, verbose_name='Service Root URL')),
23 23
                ('query_layer', models.CharField(max_length=256, verbose_name='Query Layer')),
24
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
24
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_opengis_users_+', related_query_name='+', blank=True)),
25 25
            ],
26 26
            options={
27 27
                'verbose_name': 'OpenGIS',
passerelle/apps/orange/migrations/0001_initial.py
20 20
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
21 21
                ('description', models.TextField(verbose_name='Description')),
22 22
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'orange', null=True, verbose_name='Keystore', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_orangesmsgateway_users_+', related_query_name='+', blank=True)),
24 24
            ],
25 25
            options={
26 26
                'db_table': 'sms_orange',
passerelle/apps/ovh/migrations/0001_initial.py
26 26
                ('credit_threshold_alert', models.PositiveIntegerField(default=100)),
27 27
                ('default_country_code', models.CharField(default='33', max_length=3)),
28 28
                ('credit_left', models.PositiveIntegerField(default=0)),
29
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
29
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_ovhsmsgateway_users_+', related_query_name='+', blank=True)),
30 30
            ],
31 31
            options={
32 32
                'db_table': 'sms_ovh',
passerelle/apps/oxyd/migrations/0001_initial.py
22 22
                ('username', models.CharField(max_length=64)),
23 23
                ('password', models.CharField(max_length=64)),
24 24
                ('default_country_code', models.CharField(default='33', max_length=3)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_oxydsmsgateway_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'db_table': 'sms_oxyd',
passerelle/apps/pastell/migrations/0001_initial.py
26 26
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'pastell', null=True, verbose_name='Keystore')),
27 27
                ('document_type', models.CharField(max_length=128, verbose_name='Document Type', blank=True)),
28 28
                ('document_fields', jsonfield.fields.JSONField(null=True, verbose_name='Fields')),
29
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
29
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_pastell_users_+', related_query_name='+', blank=True)),
30 30
            ],
31 31
            options={
32 32
                'verbose_name': 'Pastell',
passerelle/apps/phonecalls/migrations/0001_initial.py
40 40
                ('slug', models.SlugField(unique=True, verbose_name='Identifier')),
41 41
                ('max_call_duration', models.PositiveIntegerField(default=120, help_text='Each hour, too long calls are closed.', verbose_name='Maximum duration of a call, in minutes.')),
42 42
                ('data_retention_period', models.PositiveIntegerField(default=60, help_text='Each day, old calls are removed.', verbose_name='Data retention period, in days.')),
43
                ('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
43
                ('users', models.ManyToManyField(blank=True, related_name='_phonecalls_users_+', related_query_name='+', to='base.ApiUser')),
44 44
            ],
45 45
            options={
46 46
                'verbose_name': 'Phone Calls',
passerelle/apps/solis/migrations/0001_initial.py
22 22
                ('service_url', models.URLField(help_text='Solis API base URL', max_length=256, verbose_name='Service URL')),
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username')),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_solis_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Solis',
passerelle/apps/vivaticket/migrations/0001_initial.py
21 21
                ('url', models.URLField(verbose_name='API URL')),
22 22
                ('login', models.CharField(max_length=256, verbose_name='API Login')),
23 23
                ('password', models.CharField(max_length=256, verbose_name='API Password')),
24
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
24
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_vivaticket_users_+', related_query_name='+', blank=True)),
25 25
            ],
26 26
            options={
27 27
                'verbose_name': 'VivaTicket',
passerelle/base/models.py
117 117
    title = models.CharField(max_length=50, verbose_name=_('Title'))
118 118
    description = models.TextField(verbose_name=_('Description'))
119 119
    slug = models.SlugField(verbose_name=_('Identifier'), unique=True)
120
    users = models.ManyToManyField(ApiUser, blank=True)
120
    users = models.ManyToManyField(ApiUser, blank=True, related_name='+', related_query_name='+')
121 121
    objects = InheritanceManager()
122 122

  
123 123
    parameters = None
passerelle/contrib/adict/migrations/0001_initial.py
22 22
                ('service_root_url', models.URLField(max_length=256, verbose_name='Service Root URL')),
23 23
                ('sector_type', models.CharField(max_length=256, verbose_name='Sector Type')),
24 24
                ('api_token', models.CharField(max_length=256, verbose_name='API Token')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_adict_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'ADICT (Strasbourg GIS)',
passerelle/contrib/agoraplus/migrations/0001_initial.py
25 25
                ('username', models.CharField(max_length=128, verbose_name='HTTP Basic Auth username', blank=True)),
26 26
                ('password', models.CharField(max_length=128, verbose_name='HTTP Basic Auth password', blank=True)),
27 27
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'agoraplus', null=True, verbose_name='Keystore', blank=True)),
28
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
28
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_agoraplus_users_+', related_query_name='+', blank=True)),
29 29
            ],
30 30
            options={
31 31
                'verbose_name': 'Agora+',
passerelle/contrib/dpark/migrations/0001_initial.py
21 21
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22 22
                ('wsdl_url', models.URLField(help_text='URL of the SOAP wsdl endpoint', max_length=512, verbose_name='SOAP wsdl endpoint')),
23 23
                ('operation_url', models.URLField(help_text='URL of the SOAP operation endpoint', max_length=512, verbose_name='SOAP operation endpoint')),
24
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
24
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_dpark_users_+', related_query_name='+', blank=True)),
25 25
            ],
26 26
            options={
27 27
                'verbose_name': 'D-Park connector',
passerelle/contrib/fake_family/migrations/0001_initial.py
20 20
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
21 21
                ('description', models.TextField(verbose_name='Description')),
22 22
                ('jsondatabase', jsonfield.fields.JSONField(default=dict, verbose_name='Fake Database (JSON)', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_fakefamily_users_+', related_query_name='+', blank=True)),
24 24
            ],
25 25
            options={
26 26
                'verbose_name': 'Fake Family System',
passerelle/contrib/gdema/migrations/0001_initial.py
22 22
                ('service_url', models.URLField(help_text='GDEMA API base URL', max_length=256, verbose_name='Service URL')),
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username')),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_gdema_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'GDEMA',
passerelle/contrib/grandlyon_streetsections/migrations/0001_initial.py
19 19
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
22
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_grandlyonstreetsections_users_+', related_query_name='+', blank=True)),
23 23
            ],
24 24
            options={
25 25
                'verbose_name': 'Sections of Grand Lyon Streets',
passerelle/contrib/greco/migrations/0001_initial.py
24 24
                ('token_authorization', models.CharField(max_length=128, verbose_name='Token Authorization')),
25 25
                ('wsdl_url', models.CharField(max_length=256, verbose_name='WSDL URL')),
26 26
                ('verify_cert', models.BooleanField(default=True, verbose_name='Check HTTPS Certificate validity')),
27
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
27
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_greco_users_+', related_query_name='+', blank=True)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'GRECO Webservices',
passerelle/contrib/grenoble_gru/migrations/0001_initial.py
22 22
                ('base_url', models.URLField(help_text='Grenoble GRU API base URL', max_length=256, verbose_name='Base URL')),
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username')),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_grenoblegru_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Grenoble - Gestion des signalements',
passerelle/contrib/iparapheur/migrations/0001_initial.py
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username', blank=True)),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password', blank=True)),
25 25
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'iparapheur', null=True, verbose_name='Keystore', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_management_users_+', related_query_name='+', blank=True)),
27 27
            ],
28 28
            options={
29 29
                'verbose_name': 'i-Parapheur',
passerelle/contrib/iws/migrations/0001_initial.py
24 24
                ('username', models.CharField(max_length=128, verbose_name='Service username')),
25 25
                ('password', models.CharField(max_length=128, null=True, verbose_name='Service password', blank=True)),
26 26
                ('database', models.CharField(max_length=128, verbose_name='Service database')),
27
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
27
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_iwsconnector_users_+', related_query_name='+', blank=True)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'IWS connector',
passerelle/contrib/maarch/migrations/0001_initial.py
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username', blank=True)),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password', blank=True)),
25 25
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'maarch', null=True, verbose_name='Keystore', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_management_users_+', related_query_name='+', blank=True)),
27 27
            ],
28 28
            options={
29 29
                'verbose_name': 'Maarch',
passerelle/contrib/mdel/migrations/0001_initial.py
29 29
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
30 30
                ('description', models.TextField(verbose_name='Description')),
31 31
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
32
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
32
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_demand_users_+', related_query_name='+', blank=True)),
33 33
            ],
34 34
            options={
35 35
                'verbose_name': 'Mes Demarches En Ligne',
passerelle/contrib/mdph13/migrations/0001_initial.py
43 43
                ('verify_cert', models.BooleanField(default=True, verbose_name='TLS verify certificates')),
44 44
                ('http_proxy', models.CharField(blank=True, max_length=128, verbose_name='HTTP and HTTPS proxy')),
45 45
                ('webservice_base_url', models.URLField(verbose_name='Webservice Base URL')),
46
                ('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
46
                ('users', models.ManyToManyField(blank=True, related_name='_link_users_+', related_query_name='+', to='base.ApiUser')),
47 47
            ],
48 48
            options={
49 49
                'verbose_name': 'MDPH CD13',
passerelle/contrib/meyzieu_newsletters/migrations/0001_initial.py
22 22
                ('url', models.URLField(verbose_name='Newsletter service URL')),
23 23
                ('apikey', models.CharField(max_length=32, verbose_name='API key')),
24 24
                ('transport_titles_mapping', jsonfield.fields.JSONField(default=dict, verbose_name='Mapping of transports ids and titles')),
25
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
25
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_meyzieunewsletters_users_+', related_query_name='+', blank=True)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Meyzieu Newsletters',
passerelle/contrib/nancypoll/migrations/0001_initial.py
20 20
                ('description', models.TextField(verbose_name='Description')),
21 21
                ('log_level', models.CharField(default=b'NOTSET', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
22 22
                ('csv_file', models.FileField(upload_to=b'csv', verbose_name='CSV File')),
23
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_nancypoll_users_+', related_query_name='+', blank=True)),
24 24
            ],
25 25
            options={
26 26
                'verbose_name': 'NancyPoll',
passerelle/contrib/planitech/migrations/0001_initial.py
25 25
                ('username', models.CharField(max_length=128, verbose_name='Service username')),
26 26
                ('password', models.CharField(blank=True, max_length=128, null=True, verbose_name='Service password')),
27 27
                ('verify_cert', models.BooleanField(default=True, verbose_name='Check HTTPS Certificate validity')),
28
                ('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
28
                ('users', models.ManyToManyField(blank=True, related_name='_planitechconnector_users_+', related_query_name='+', to='base.ApiUser')),
29 29
            ],
30 30
            options={
31 31
                'verbose_name': 'Planitech',
passerelle/contrib/seisin_by_email/migrations/0001_initial.py
23 23
                ('username', models.CharField(max_length=128, verbose_name='Username', blank=True)),
24 24
                ('password', models.CharField(max_length=128, verbose_name='Password', blank=True)),
25 25
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'seisin-by-email', null=True, verbose_name='Keystore', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
26
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_seisinbyemailmanagement_users_+', related_query_name='+', blank=True)),
27 27
            ],
28 28
            options={
29 29
                'verbose_name': 'Seisin-by-Email',
passerelle/contrib/solis_apa/migrations/0001_initial.py
24 24
                ('username', models.CharField(max_length=128, verbose_name='Username', blank=True)),
25 25
                ('password', models.CharField(max_length=128, verbose_name='Password', blank=True)),
26 26
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'solis_apa', null=True, verbose_name='Keystore', blank=True)),
27
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
27
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_solisapa_users_+', related_query_name='+', blank=True)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'Solis',
passerelle/contrib/strasbourg_eu/migrations/0001_initial.py
23 23
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
24 24
                ('log_level', models.CharField(choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')], default=b'INFO', max_length=10, verbose_name='Log Level')),
25 25
                ('liferay_api_url', models.URLField(max_length=256, verbose_name='Liferay API URL')),
26
                ('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
26
                ('users', models.ManyToManyField(blank=True, related_name='_strasbourgeu_users_+', related_query_name='+', to='base.ApiUser')),
27 27
            ],
28 28
            options={
29 29
                'verbose_name': 'Strasbourg.eu',
passerelle/contrib/stub_invoices/migrations/0001_initial.py
18 18
                ('title', models.CharField(verbose_name='Title', max_length=50)),
19 19
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
20 20
                ('description', models.TextField(verbose_name='Description')),
21
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
21
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_stubinvoicesconnector_users_+', related_query_name='+', blank=True)),
22 22
            ],
23 23
            options={
24 24
                'verbose_name': 'Invoices',
passerelle/contrib/tcl/migrations/0001_initial.py
51 51
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
52 52
                ('description', models.TextField(verbose_name='Description')),
53 53
                ('log_level', models.CharField(default=b'INFO', max_length=10, verbose_name='Log Level', choices=[(b'NOTSET', b'NOTSET'), (b'DEBUG', b'DEBUG'), (b'INFO', b'INFO'), (b'WARNING', b'WARNING'), (b'ERROR', b'ERROR'), (b'CRITICAL', b'CRITICAL')])),
54
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
54
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_line_users_+', related_query_name='+', blank=True)),
55 55
            ],
56 56
            options={
57 57
                'verbose_name': 'TCL',
passerelle/contrib/teamnet_axel/migrations/0001_initial.py
35 35
                ('username', models.CharField(max_length=128, verbose_name='Username', blank=True)),
36 36
                ('password', models.CharField(max_length=128, verbose_name='Password', blank=True)),
37 37
                ('keystore', models.FileField(help_text='Certificate and private key in PEM format', upload_to=b'teamnet_axel', null=True, verbose_name='Keystore', blank=True)),
38
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
38
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_link_users_+', related_query_name='+', blank=True)),
39 39
            ],
40 40
            options={
41 41
                'verbose_name': 'Teamnet Axel',
passerelle/contrib/tlmcom/migrations/0001_initial.py
20 20
                ('slug', models.SlugField(verbose_name='Identifier', unique=True)),
21 21
                ('description', models.TextField(verbose_name='Description')),
22 22
                ('welco_url', models.URLField(default=passerelle.pbx.models.get_default_welco_url, max_length=120, verbose_name='welco URL')),
23
                ('users', models.ManyToManyField(to='base.ApiUser', blank=True)),
23
                ('users', models.ManyToManyField(to='base.ApiUser', related_name='_tlmcom_users_+', related_query_name='+', blank=True)),
24 24
            ],
25 25
            options={
26 26
                'verbose_name': 'TLM COM gateway',
27
-