Compare commits

...

24 Commits
v3 ... main

Author SHA1 Message Date
Agate 979bfb7ca9 ci: update .tar.gz URLs for gitea (like #74706)
gitea/passerelle-atreal-openads/pipeline/head There was a failure building this commit Details
2023-02-22 16:50:31 +01:00
Agate d7570c9910 Prepare Jenkinsfile for Gitea migration (#74572)
gitea/passerelle-atreal-openads/pipeline/head There was a failure building this commit Details
2023-02-20 15:12:19 +01:00
Frédéric Péters b305334c75 tox: limit psycopg2 to < 2.9 (#54925) 2021-06-17 08:50:03 +02:00
Frédéric Péters 156ff794f4 tests: give an explicit name when creating files (#53755)
Django 2.2.21 introduced the validation of FieldFile.save() name
argument, which cannot contain a path separator anymore.

ref. https://docs.djangoproject.com/en/3.2/releases/2.2.21/
2021-05-13 09:15:24 +02:00
Frédéric Péters 43c7cf6fcc tests: cast order_by to lists 2021-01-05 09:15:48 +01:00
Frédéric Péters a76678bfcf build: update to use origin/main 2020-12-26 15:21:16 +01:00
Frédéric Péters a6b22e6b40 tox: limit mock version for compatibility with python 3.5 2020-10-06 09:26:03 +02:00
Frédéric Péters 5e08716cd9 tox: get additional modules using https (via #46904#note-2) 2020-09-24 20:04:05 +02:00
Frédéric Péters 214f8e813d tox: stop testing against python 2 2020-09-09 08:04:34 +02:00
Frédéric Péters f4092a6534 build: don't install manage.py 2020-06-12 13:10:29 +02:00
Frédéric Péters 55f359c09d jenkins: build for all default distributions 2020-06-12 13:07:40 +02:00
Frédéric Péters 417768cce7 misc: remove README extraction for setup long description 2020-06-12 12:59:51 +02:00
Frédéric Péters 2dc4176591 debian: add python3 packaging 2020-06-12 12:53:54 +02:00
Frédéric Péters 14fd10268e build: sync setup.py 2020-06-12 12:53:40 +02:00
Thomas NOËL 7066d22b0a tests: run tests with postgres 2020-05-09 13:49:10 +02:00
Thomas NOËL b84bec87e9 switch to native postgresql json field 2020-05-09 13:33:14 +02:00
Benjamin Dauvergne fe1b4fa541 misc: move AddIndex to end of 0002 migration (#39544)
Automatic generation does not sort AddIndex for manual indexes correctly
with respect to Remove/AddField.
2020-05-01 01:41:40 +02:00
Benjamin Dauvergne d4d1234615 misc: add proper 0002 migration (#39544)
0001 should never be modified apart from cosmetic changes.
2020-05-01 01:41:40 +02:00
Benjamin Dauvergne f5828d45e4 tox.ini: add env to manipulate migrations (#39544)
tox -e manage makemigrations
2020-05-01 01:41:40 +02:00
Benjamin Dauvergne 97932ec03c misc: remove explicit byte string in migrations for py3 (#39544) 2020-05-01 01:41:40 +02:00
Benjamin Dauvergne 9865ae0b61 misc: fix package path in migration (#39544) 2020-05-01 01:41:40 +02:00
Benjamin Dauvergne 9656393c58 misc: restore initial 0001 migration (#39544) 2020-05-01 01:41:40 +02:00
Emmanuel Cazenave 78f65b8603 tox: add psycopg2 in deps 2020-04-26 08:41:05 +02:00
Frédéric Péters 424417c08c tox: limit enum34 to 1.1.6, for python 2 compatibility 2020-02-22 10:12:05 +01:00
13 changed files with 342 additions and 154 deletions

16
Jenkinsfile vendored
View File

@ -17,7 +17,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
@Library('eo-jenkins-lib@master') import eo.Utils
@Library('eo-jenkins-lib@main') import eo.Utils
pipeline {
agent any
@ -41,10 +41,18 @@ pipeline {
stage('Packaging') {
steps {
script {
if (env.JOB_NAME == 'passerelle-atreal-openads' && env.GIT_BRANCH == 'origin/master') {
sh 'sudo -H -u eobuilder /usr/local/bin/eobuilder passerelle-atreal-openads'
env.SHORT_JOB_NAME=sh(
returnStdout: true,
// given JOB_NAME=gitea/project/PR-46, returns project
// given JOB_NAME=project/main, returns project
script: '''
echo "${JOB_NAME}" | sed "s/gitea\\///" | awk -F/ '{print $1}'
'''
).trim()
if (env.GIT_BRANCH == 'main' || env.GIT_BRANCH == 'origin/main') {
sh "sudo -H -u eobuilder /usr/local/bin/eobuilder ${SHORT_JOB_NAME}"
} else if (env.GIT_BRANCH.startsWith('hotfix/')) {
sh "sudo -H -u eobuilder /usr/local/bin/eobuilder -d stretch --branch ${env.GIT_BRANCH} --hotfix passerelle-atreal-openads"
sh "sudo -H -u eobuilder /usr/local/bin/eobuilder --branch ${env.GIT_BRANCH} --hotfix ${SHORT_JOB_NAME}"
}
}
}

View File

@ -1,10 +1,10 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2019-08-22 16:28
# Generated by Django 1.11.15 on 2019-04-30 12:07
from __future__ import unicode_literals
import atreal_openads.utils
import django.contrib.postgres.fields.jsonb
from django.db import migrations, models
import django.db.models.deletion
import atreal_openads.models
class Migration(migrations.Migration):
@ -12,7 +12,7 @@ class Migration(migrations.Migration):
initial = True
dependencies = [
('base', '0013_delete_templatevar'),
('base', '0012_job'),
]
operations = [
@ -23,131 +23,30 @@ class Migration(migrations.Migration):
('title', models.CharField(max_length=50, verbose_name='Title')),
('description', models.TextField(verbose_name='Description')),
('slug', models.SlugField(unique=True, verbose_name='Identifier')),
('basic_auth_username', models.CharField(blank=True, max_length=128, verbose_name='Basic authentication username')),
('basic_auth_password', models.CharField(blank=True, max_length=128, verbose_name='Basic authentication password')),
('client_certificate', models.FileField(blank=True, null=True, upload_to='', verbose_name='TLS client certificate')),
('trusted_certificate_authorities', models.FileField(blank=True, null=True, upload_to='', verbose_name='TLS trusted CAs')),
('verify_cert', models.BooleanField(default=True, verbose_name='TLS verify certificates')),
('http_proxy', models.CharField(blank=True, max_length=128, verbose_name='HTTP and HTTPS proxy')),
('default_collectivite_openADS_id', models.PositiveIntegerField(blank=True, default=0, help_text='ex: 3', verbose_name="Default 'collectivite' (identifier in openADS)")),
('myjobs', django.contrib.postgres.fields.jsonb.JSONField(default={})),
('collectivite', models.CharField(blank=True, default='', help_text='ex: Marseille, ou ex: 3', max_length=255, verbose_name='Collectivity (identifier)')),
('openADS_API_key', models.CharField(default='', help_text='ex: ah9pGbKKHv5ToF3cPQuV', max_length=255, verbose_name='openADS API key (secret)')),
('openADS_API_url', models.URLField(default='', help_text='ex: https://openads.your_domain.net/api/', max_length=255, verbose_name='openADS API URL')),
('users', models.ManyToManyField(blank=True, related_name='_atrealopenads_users_+', related_query_name='+', to='base.ApiUser')),
('users', models.ManyToManyField(blank=True, to='base.ApiUser')),
],
options={
'ordering': ['openADS_API_url'],
'verbose_name': 'openADS',
'verbose_name_plural': 'openADS',
},
bases=(models.Model, atreal_openads.utils.BaseModel),
),
migrations.CreateModel(
name='Collectivite',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, default='', max_length=150, verbose_name='Name')),
('openADS_id', models.PositiveIntegerField(help_text='ex: 3', verbose_name='openADS identifier')),
('connecteur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='collectivites', related_query_name='collectivite', to='atreal_openads.AtrealOpenads')),
],
options={
'ordering': ['name'],
'verbose_name': 'Collectivite',
},
bases=(models.Model, atreal_openads.utils.BaseModel),
),
migrations.CreateModel(
name='ForwardFile',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('numero_demande', models.CharField(max_length=20, verbose_name='Tracking code')),
('numero_dossier', models.CharField(max_length=20, verbose_name='Numero dossier')),
('type_fichier', models.CharField(max_length=10, verbose_name='Type')),
('file_hash', models.CharField(blank=True, default='', max_length=100, verbose_name='Hash')),
('orig_filename', models.CharField(blank=True, default='', max_length=100, verbose_name='Filename')),
('content_type', models.CharField(blank=True, default='', max_length=100, verbose_name='Content type')),
('size', models.PositiveIntegerField(default=0, verbose_name='Size')),
('upload_file', models.FileField(blank=True, null=True, upload_to=atreal_openads.utils.get_upload_path, verbose_name='File')),
('upload_attempt', models.PositiveIntegerField(blank=True, default=0, verbose_name='Upload attempt')),
('upload_status', models.CharField(choices=[('pending', 'Pending'), ('uploading', 'Uploading'), ('failed', 'Failed'), ('success', 'Success')], default='pending', max_length=10, verbose_name='Upload status')),
('upload_msg', models.CharField(blank=True, default='', max_length=255, verbose_name='Upload message')),
('last_update_datetime', models.DateTimeField(auto_now=True, verbose_name='Last update')),
('collectivite', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='forward_files', related_query_name='forward_file', to='atreal_openads.Collectivite')),
('connecteur', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='forward_files', related_query_name='forward_file', to='atreal_openads.AtrealOpenads')),
('numero_demande', models.CharField(max_length=20)),
('numero_dossier', models.CharField(max_length=20)),
('type_fichier', models.CharField(max_length=10)),
('file_hash', models.CharField(blank=True, default='', max_length=100)),
('orig_filename', models.CharField(blank=True, default='', max_length=100)),
('content_type', models.CharField(blank=True, default='', max_length=100)),
('upload_file', models.FileField(null=True, upload_to=atreal_openads.models.get_upload_path)),
('upload_status', models.CharField(blank=True, default='', max_length=10)),
('upload_msg', models.CharField(blank=True, default='', max_length=255)),
('last_update_datetime', models.DateTimeField(auto_now=True)),
],
options={
'ordering': ['-last_update_datetime'],
'verbose_name': 'Forward File',
},
bases=(models.Model, atreal_openads.utils.BaseModel),
),
migrations.CreateModel(
name='Guichet',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ouverture_jour_h', models.TimeField(help_text='ex: 08:30', verbose_name='Hour of opening (each day)')),
('fermeture_jour_h', models.TimeField(help_text='ex: 17:00', verbose_name='Hour of closing (each day)')),
('ouverture_sem_d', models.PositiveIntegerField(choices=[(1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday'), (7, 'Sunday')], default=1, help_text='ex: Lundi', verbose_name='Day of opening (each week)')),
('fermeture_sem_d', models.PositiveIntegerField(choices=[(1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday'), (7, 'Sunday')], default=6, help_text='ex: Samedi', verbose_name='Day of closing (each week)')),
('ouverture_sem_h', models.TimeField(help_text='ex: 08:30', verbose_name='Hour of opening (on opening day)')),
('fermeture_sem_h', models.TimeField(help_text='ex: 12:15', verbose_name='Hour of closing (on closing day)')),
('collectivite', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='guichet', to='atreal_openads.Collectivite')),
],
options={
'ordering': ['collectivite'],
'verbose_name': 'Guichet',
'verbose_name_plural': 'Guichets',
},
bases=(models.Model, atreal_openads.utils.BaseModel),
),
migrations.AddIndex(
model_name='guichet',
index=models.Index(fields=['collectivite'], name='su_collectivite_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['connecteur'], name='ff_connecteur_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['collectivite'], name='ff_collectivite_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['numero_demande', 'numero_dossier'], name='ff_deman_doss_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['numero_demande'], name='ff_demande_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['numero_dossier'], name='ff_dossier_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['orig_filename'], name='ff_filename_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['upload_status'], name='ff_status_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['last_update_datetime'], name='ff_last_up_dt_idx'),
),
migrations.AddIndex(
model_name='collectivite',
index=models.Index(fields=['connecteur', 'openADS_id'], name='col_conn_openADSid_idx'),
),
migrations.AddIndex(
model_name='collectivite',
index=models.Index(fields=['connecteur'], name='col_connecteur_idx'),
),
migrations.AddIndex(
model_name='collectivite',
index=models.Index(fields=['openADS_id'], name='col_openADS_id_idx'),
),
migrations.AlterUniqueTogether(
name='collectivite',
unique_together=set([('connecteur', 'openADS_id')]),
),
]

View File

@ -0,0 +1,241 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.29 on 2020-04-15 08:41
from __future__ import unicode_literals
import atreal_openads.utils
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
('atreal_openads', '0001_initial'),
]
operations = [
migrations.CreateModel(
name='Collectivite',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(blank=True, default='', max_length=150, verbose_name='Name')),
('openADS_id', models.PositiveIntegerField(help_text='ex: 3', verbose_name='openADS identifier')),
],
options={
'verbose_name': 'Collectivite',
'ordering': ['name'],
},
bases=(models.Model, atreal_openads.utils.BaseModel),
),
migrations.CreateModel(
name='Guichet',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('ouverture_jour_h', models.TimeField(help_text='ex: 08:30', verbose_name='Hour of opening (each day)')),
('fermeture_jour_h', models.TimeField(help_text='ex: 17:00', verbose_name='Hour of closing (each day)')),
('ouverture_sem_d', models.PositiveIntegerField(choices=[(1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday'), (7, 'Sunday')], default=1, help_text='ex: Lundi', verbose_name='Day of opening (each week)')),
('fermeture_sem_d', models.PositiveIntegerField(choices=[(1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), (6, 'Saturday'), (7, 'Sunday')], default=6, help_text='ex: Samedi', verbose_name='Day of closing (each week)')),
('ouverture_sem_h', models.TimeField(help_text='ex: 08:30', verbose_name='Hour of opening (on opening day)')),
('fermeture_sem_h', models.TimeField(help_text='ex: 12:15', verbose_name='Hour of closing (on closing day)')),
],
options={
'verbose_name': 'Guichet',
'verbose_name_plural': 'Guichets',
'ordering': ['collectivite'],
},
bases=(models.Model, atreal_openads.utils.BaseModel),
),
migrations.AlterModelOptions(
name='atrealopenads',
options={'ordering': ['openADS_API_url'], 'verbose_name': 'openADS', 'verbose_name_plural': 'openADS'},
),
migrations.AlterModelOptions(
name='forwardfile',
options={'ordering': ['-last_update_datetime'], 'verbose_name': 'Forward File'},
),
migrations.RemoveField(
model_name='atrealopenads',
name='collectivite',
),
migrations.RemoveField(
model_name='atrealopenads',
name='myjobs',
),
migrations.RemoveField(
model_name='atrealopenads',
name='openADS_API_key',
),
migrations.AddField(
model_name='atrealopenads',
name='basic_auth_password',
field=models.CharField(blank=True, max_length=128, verbose_name='Basic authentication password'),
),
migrations.AddField(
model_name='atrealopenads',
name='basic_auth_username',
field=models.CharField(blank=True, max_length=128, verbose_name='Basic authentication username'),
),
migrations.AddField(
model_name='atrealopenads',
name='client_certificate',
field=models.FileField(blank=True, null=True, upload_to='', verbose_name='TLS client certificate'),
),
migrations.AddField(
model_name='atrealopenads',
name='default_collectivite_openADS_id',
field=models.PositiveIntegerField(blank=True, default=0, help_text='ex: 3', verbose_name="Default 'collectivite' (identifier in openADS)"),
),
migrations.AddField(
model_name='atrealopenads',
name='http_proxy',
field=models.CharField(blank=True, max_length=128, verbose_name='HTTP and HTTPS proxy'),
),
migrations.AddField(
model_name='atrealopenads',
name='trusted_certificate_authorities',
field=models.FileField(blank=True, null=True, upload_to='', verbose_name='TLS trusted CAs'),
),
migrations.AddField(
model_name='atrealopenads',
name='verify_cert',
field=models.BooleanField(default=True, verbose_name='TLS verify certificates'),
),
migrations.AddField(
model_name='forwardfile',
name='connecteur',
field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, related_name='forward_files', related_query_name='forward_file', to='atreal_openads.AtrealOpenads'),
preserve_default=False,
),
migrations.AddField(
model_name='forwardfile',
name='size',
field=models.PositiveIntegerField(default=0, verbose_name='Size'),
),
migrations.AddField(
model_name='forwardfile',
name='upload_attempt',
field=models.PositiveIntegerField(blank=True, default=0, verbose_name='Upload attempt'),
),
migrations.AlterField(
model_name='atrealopenads',
name='users',
field=models.ManyToManyField(blank=True, related_name='_atrealopenads_users_+', related_query_name='+', to='base.ApiUser'),
),
migrations.AlterField(
model_name='forwardfile',
name='content_type',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='Content type'),
),
migrations.AlterField(
model_name='forwardfile',
name='file_hash',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='Hash'),
),
migrations.AlterField(
model_name='forwardfile',
name='last_update_datetime',
field=models.DateTimeField(auto_now=True, verbose_name='Last update'),
),
migrations.AlterField(
model_name='forwardfile',
name='numero_demande',
field=models.CharField(max_length=20, verbose_name='Tracking code'),
),
migrations.AlterField(
model_name='forwardfile',
name='numero_dossier',
field=models.CharField(max_length=20, verbose_name='Numero dossier'),
),
migrations.AlterField(
model_name='forwardfile',
name='orig_filename',
field=models.CharField(blank=True, default='', max_length=100, verbose_name='Filename'),
),
migrations.AlterField(
model_name='forwardfile',
name='type_fichier',
field=models.CharField(max_length=10, verbose_name='Type'),
),
migrations.AlterField(
model_name='forwardfile',
name='upload_file',
field=models.FileField(blank=True, null=True, upload_to=atreal_openads.utils.get_upload_path, verbose_name='File'),
),
migrations.AlterField(
model_name='forwardfile',
name='upload_msg',
field=models.CharField(blank=True, default='', max_length=255, verbose_name='Upload message'),
),
migrations.AlterField(
model_name='forwardfile',
name='upload_status',
field=models.CharField(choices=[('pending', 'Pending'), ('uploading', 'Uploading'), ('failed', 'Failed'), ('success', 'Success')], default='pending', max_length=10, verbose_name='Upload status'),
),
migrations.AddField(
model_name='guichet',
name='collectivite',
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='guichet', to='atreal_openads.Collectivite'),
),
migrations.AddField(
model_name='collectivite',
name='connecteur',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='collectivites', related_query_name='collectivite', to='atreal_openads.AtrealOpenads'),
),
migrations.AddField(
model_name='forwardfile',
name='collectivite',
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='forward_files', related_query_name='forward_file', to='atreal_openads.Collectivite'),
),
migrations.AddIndex(
model_name='guichet',
index=models.Index(fields=['collectivite'], name='su_collectivite_idx'),
),
migrations.AddIndex(
model_name='collectivite',
index=models.Index(fields=['connecteur', 'openADS_id'], name='col_conn_openADSid_idx'),
),
migrations.AddIndex(
model_name='collectivite',
index=models.Index(fields=['connecteur'], name='col_connecteur_idx'),
),
migrations.AddIndex(
model_name='collectivite',
index=models.Index(fields=['openADS_id'], name='col_openADS_id_idx'),
),
migrations.AlterUniqueTogether(
name='collectivite',
unique_together=set([('connecteur', 'openADS_id')]),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['connecteur'], name='ff_connecteur_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['collectivite'], name='ff_collectivite_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['numero_demande', 'numero_dossier'], name='ff_deman_doss_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['numero_demande'], name='ff_demande_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['numero_dossier'], name='ff_dossier_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['orig_filename'], name='ff_filename_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['upload_status'], name='ff_status_idx'),
),
migrations.AddIndex(
model_name='forwardfile',
index=models.Index(fields=['last_update_datetime'], name='ff_last_up_dt_idx'),
),
]

2
debian/compat vendored
View File

@ -1 +1 @@
9
10

9
debian/control vendored
View File

@ -2,7 +2,7 @@ Source: passerelle-atreal-openads
Maintainer: Michael Bideau <mbideau+publik@atreal.fr>
Section: python
Priority: optional
Build-Depends: python-setuptools (>= 0.6b3), python-all (>= 2.6.6-3), debhelper (>= 9), python-django
Build-Depends: python-setuptools, python-all, debhelper (>= 10), python-django, python3-setuptools, python3-all, python3-django
Standards-Version: 3.9.1
Package: python-passerelle-atreal-openads
@ -11,3 +11,10 @@ Depends: ${misc:Depends}, ${python:Depends},
python-magic
Description: Passerelle connector to openADS.API
.
Package: python3-passerelle-atreal-openads
Architecture: all
Depends: ${misc:Depends}, ${python3:Depends},
python3-magic
Description: Passerelle connector to openADS.API (Python 3)
.

5
debian/rules vendored
View File

@ -1,4 +1,7 @@
#!/usr/bin/make -f
export PYBUILD_NAME=passerelle-atreal-openads
export PYBUILD_DISABLE=test
%:
dh $@ --with python2
dh $@ --with python2,python3 --buildsystem=pybuild

4
manage.py Normal file → Executable file
View File

@ -23,6 +23,10 @@ import sys
if __name__ == "__main__":
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "passerelle.settings")
from django.conf import settings
if 'atreal_openads' not in settings.INSTALLED_APPS:
settings.INSTALLED_APPS += ('atreal_openads',)
from django.core.management import execute_from_command_line

View File

@ -23,11 +23,12 @@ import subprocess
import sys
from setuptools.command.install_lib import install_lib as _install_lib
from setuptools.command.sdist import sdist
from distutils.command.build import build as _build
from distutils.command.sdist import sdist
from distutils.cmd import Command
from setuptools import setup, find_packages
class eo_sdist(sdist):
def run(self):
if os.path.exists('VERSION'):
@ -40,20 +41,32 @@ class eo_sdist(sdist):
if os.path.exists('VERSION'):
os.remove('VERSION')
def get_version():
'''Use the VERSION, if absent generates a version with git describe, if not
tag exists, take 0.0- and add the length of the commit log.
'''
if os.path.exists('VERSION'):
version_file = open('VERSION', 'r')
version = version_file.read()
version_file.close()
return version
with open('VERSION', 'r') as v:
return v.read()
if os.path.exists('.git'):
p = subprocess.Popen(['git', 'describe', '--dirty', '--match=v*'], stdout=subprocess.PIPE)
p = subprocess.Popen(
['git', 'describe', '--dirty=.dirty', '--match=v*'],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
result = p.communicate()[0]
if p.returncode == 0:
version = str(result.split()[0][1:])
version = version.replace('-', '.')
result = result.decode('ascii').strip()[1:] # strip spaces/newlines and initial v
if '-' in result: # not a tagged version
real_number, commit_count, commit_hash = result.split('-', 2)
version = '%s.post%s+%s' % (real_number, commit_count, commit_hash)
else:
version = result
return version
return '0'
else:
return '0.0.post%s' % len(subprocess.check_output(['git', 'rev-list', 'HEAD']).splitlines())
return '0.0'
class compile_translations(Command):
@ -67,17 +80,18 @@ class compile_translations(Command):
pass
def run(self):
curdir = os.getcwd()
try:
from django.core.management import call_command
for path, dirs, files in os.walk('atreal_openads'):
if 'locale' not in dirs:
continue
curdir = os.getcwd()
os.chdir(os.path.realpath(path))
call_command('compilemessages')
os.chdir(curdir)
except ImportError:
sys.stderr.write('!!! Please install Django >= 1.4 to build translations\n')
finally:
os.chdir(curdir)
class build(_build):
@ -96,7 +110,6 @@ setup(
author='atReal',
author_email="support@atreal.fr",
description="A Publik connector for Passerelle to openADS",
long_description=open('README').read(),
classifiers=[
"Programming Language :: Python :: 2.7",
"Development Status :: Testing",
@ -113,7 +126,7 @@ setup(
'install_lib': install_lib,
'sdist': eo_sdist
},
scripts=['manage.py'],
scripts=[],
install_requires=[
'python-magic'
]

View File

@ -182,7 +182,8 @@ def forwardfile_1(fake_conf, db, atreal_openads, collectivite_1):
orig_filename=os.path.basename(fake_conf['TEST_FILE_CERFA_DIA']),
content_type='application/pdf',
file_hash='ffdf456fdsvgb4bgfb6g4f5b',
upload_file=File(open(fake_conf['TEST_FILE_CERFA_DIA'], 'rb')),
upload_file=File(open(fake_conf['TEST_FILE_CERFA_DIA'], 'rb'),
name=os.path.basename(fake_conf['TEST_FILE_CERFA_DIA'])),
upload_status='pending'
)
@ -200,7 +201,8 @@ def forwardfile_2(fake_conf, connecteur=None, collectivite=None):
orig_filename=os.path.basename(fake_conf['TEST_FILE_CERFA_DIA']),
content_type='application/pdf',
file_hash='ffdf456fdsvgb4bgfb6g4f5b',
upload_file=File(open(fake_conf['TEST_FILE_CERFA_DIA'], 'rb')),
upload_file=File(open(fake_conf['TEST_FILE_CERFA_DIA'], 'rb'),
name=os.path.basename(fake_conf['TEST_FILE_CERFA_DIA'])),
upload_status='pending'
)

View File

@ -76,7 +76,7 @@ def build_forwardfile_from_path(connecteur, path, numero_dossier, type_fichier):
fwd_file.content_type = magic.from_file(path, mime=True)
with open(path, 'rb') as file_pt:
fwd_file.file_hash = get_file_digest(file_pt)
fwd_file.upload_file = File(open(path, 'rb'))
fwd_file.upload_file = File(open(path, 'rb'), name=fwd_file.orig_filename)
fwd_file.upload_status = 'pending'
return fwd_file
return None
@ -206,7 +206,7 @@ def test_guichet(collectivite_1_guichet):
assert repr(guichet) == force_encoded_string_output(
u'Guichet(id=%s,collectivite=%s,%s)' % (
1, force_text(guichet.collectivite), force_text(guichet)
guichet.id, force_text(guichet.collectivite), force_text(guichet)
)
)

View File

@ -232,9 +232,9 @@ def test_base_model(fake_conf, atreal_openads, collectivite_1, collectivite_1_gu
assert forwardfile_1.get_url_name('list', plural=True) == 'list-forward-files'
assert forwardfile_1.get_absolute_url() == '/manage/atreal-openads/atreal/forward-file/1'
assert forwardfile_1.get_edit_url() == '/manage/atreal-openads/atreal/edit-forward-file/1'
assert forwardfile_1.get_delete_url() == '/manage/atreal-openads/atreal/delete-forward-file/1'
assert forwardfile_1.get_absolute_url() == '/manage/atreal-openads/atreal/forward-file/%s' % forwardfile_1.id
assert forwardfile_1.get_edit_url() == '/manage/atreal-openads/atreal/edit-forward-file/%s' % forwardfile_1.id
assert forwardfile_1.get_delete_url() == '/manage/atreal-openads/atreal/delete-forward-file/%s' % forwardfile_1.id
assert forwardfile_1.get_list_url() == '/manage/atreal-openads/atreal/forward-files'
assert atreal_openads.get_class_name_plural() == 'AtrealOpenads'

View File

@ -138,7 +138,7 @@ def test_forwardfile_view(atreal_openads, collectivite_1, forwardfile_1, request
queryset = view.get_queryset()
assert queryset.query is not None
assert queryset.query.order_by == ['id']
assert list(queryset.query.order_by) == ['id']
assert queryset.query.default_ordering
assert queryset.query.get_meta().ordering == ['-last_update_datetime']
assert queryset.ordered
@ -146,7 +146,7 @@ def test_forwardfile_view(atreal_openads, collectivite_1, forwardfile_1, request
request_1.GET['order-by'] = '-id'
queryset = view.get_queryset()
assert queryset.query is not None
assert queryset.query.order_by == ['-id']
assert list(queryset.query.order_by) == ['-id']
assert queryset.query.default_ordering
request_1.path = '/manage/atreal-openads/%s/forward-files' % atreal_openads.slug
@ -162,7 +162,7 @@ def test_forwardfile_view(atreal_openads, collectivite_1, forwardfile_1, request
queryset = view.get_queryset()
assert queryset.query is not None
assert queryset.query.order_by == ['id']
assert list(queryset.query.order_by) == ['id']
assert queryset.query.default_ordering
assert queryset.query.get_meta().ordering == ['-last_update_datetime']
assert queryset.ordered
@ -245,7 +245,7 @@ def test_collectivite_view(atreal_openads, collectivite_1, forwardfile_1, reques
queryset = view.get_queryset()
assert queryset.query is not None
assert queryset.query.order_by == ['id']
assert list(queryset.query.order_by) == ['id']
assert queryset.query.default_ordering
assert queryset.query.get_meta().ordering == ['name']
assert queryset.ordered
@ -253,7 +253,7 @@ def test_collectivite_view(atreal_openads, collectivite_1, forwardfile_1, reques
request_1.GET['order-by'] = '-id'
queryset = view.get_queryset()
assert queryset.query is not None
assert queryset.query.order_by == ['-id']
assert list(queryset.query.order_by) == ['-id']
assert queryset.query.default_ordering

17
tox.ini
View File

@ -16,7 +16,7 @@
; along with this program. If not, see <http://www.gnu.org/licenses/>.
[tox]
envlist = py2-junit, py3-junit-coverage
envlist = py3-junit-coverage
toxworkdir = {env:TMPDIR:/tmp}/tox-{env:USER}/passerelle-atreal-openads/{env:BRANCH_NAME:}
[testenv]
@ -24,18 +24,20 @@ usedevelop =
coverage: True
nocoverage: False
setenv =
DB_ENGINE=django.db.backends.postgresql_psycopg2
DJANGO_SETTINGS_MODULE=passerelle.settings
PASSERELLE_SETTINGS_FILE=tests/settings.py
coverage: COVERAGE=--cov-report xml --cov-report html --cov=atreal_openads/
junit: JUNIT=--junitxml=junit-{envname}.xml
deps =
http://git.entrouvert.org/passerelle.git/snapshot/passerelle-master.tar.gz
https://git.entrouvert.org/entrouvert/passerelle/archive/main.tar.gz
pytest-cov
pytest-django
pytest>=3.3.0
WebTest
mock
mock<4
httmock
psycopg2-binary<2.9
pylint<1.8
pylint-django<0.8.1
django-webtest<1.9.3
@ -43,3 +45,12 @@ deps =
commands =
py.test {posargs: {env:COVERAGE:} {env:JUNIT:} tests/}
coverage: ./pylint.sh atreal_openads/
[testenv:manage]
usedevelop = True
setenv =
DJANGO_SETTINGS_MODULE=passerelle.settings
deps =
https://git.entrouvert.org/entrouvert/passerelle/archive/main.tar.gz
commands =
python3 ./manage.py {posargs:--help}