nanterre: ajout d'une action supprimer sur les jobs de synchronisation (fixes #29624)

This commit is contained in:
Benjamin Dauvergne 2019-01-07 14:36:05 +01:00
parent 882a2735cd
commit b319e939e2
4 changed files with 45 additions and 3 deletions

View File

@ -79,6 +79,11 @@ class ZooNanterreConfig(AppConfig):
'view': '_apply_report',
'name': '-show-apply-report',
},
{
're': r'(?P<job_id>\d+)/delete/',
'view': '_delete',
'name': '-delete',
},
{
're': r'(?P<job_id>\d+)/apply/',
'view': '_apply',

View File

@ -240,7 +240,10 @@ class SynchronizeFederationsAction(object):
def report(self):
if not self.report_csv_filepath:
return None
return default_storage.open(self.report_csv_filepath)
try:
return default_storage.open(self.report_csv_filepath)
except IOError:
return None
def make_url(self, action, prefix):
stream = getattr(self, prefix)
@ -253,6 +256,21 @@ class SynchronizeFederationsAction(object):
'filename': filename,
})
@classmethod
def __delete(self, path):
if not path:
return
if default_storage.exists(path):
try:
default_storage.delete(path)
except IOError:
pass
def delete(self):
self.__delete(self.csv_filepath)
self.__delete(self.report_csv_filepath)
self.__delete(self.apply_report_csv_filepath)
@property
def download_report_url(self):
return self.make_url('download', 'report')
@ -273,7 +291,10 @@ class SynchronizeFederationsAction(object):
def apply_report(self):
if not self.apply_report_csv_filepath:
return None
return default_storage.open(self.apply_report_csv_filepath)
try:
return default_storage.open(self.apply_report_csv_filepath)
except IOError:
return None
def set_apply(self, job):
job.content['apply'] = True

View File

@ -31,6 +31,7 @@
<th>Nom du fichier</th>
<th>Rapport d'import</th>
<th>Synchroniser ?</th>
<th></th>
</tr>
</thead>
<tbody>
@ -55,7 +56,12 @@
</form>
{% endif %}
</td>
<td>
<form action="{% url "admin:synchronize-federations-delete" job_id=job.id %}" method="post">
{% csrf_token %}
<input type="submit" value="{% trans "Delete" %}">
</form>
</td>
</tr>
{% endfor %}
</tbody>

View File

@ -197,6 +197,16 @@ def synchronize_federations_apply(request, job_id, model_admin, **kwargs):
return redirect('admin:synchronize-federations')
@permission_required('zoo_data.action1_entity')
def synchronize_federations_delete(request, job_id, model_admin, *args, **kwargs):
if request.method == 'POST':
jobs = SynchronizeFederationsAction.get_jobs()
job = get_object_or_404(jobs, id=job_id)
job.action.delete()
job.delete()
return redirect('admin:synchronize-federations')
def fiches_inactives():
inactivity = Inactivity(
child_delay=getattr(settings, 'ZOO_NANTERRE_INACTIVITY_CHILD_DELAY', 365),