csv_import: remove modify import form (#53463)

This commit is contained in:
Valentin Deniaud 2021-04-29 11:45:58 +02:00
parent 08ece07bb2
commit 8faea5022c
4 changed files with 17 additions and 57 deletions

View File

@ -737,31 +737,6 @@ class UserNewImportForm(UserImportForm):
return new_import
class UserEditImportForm(UserImportForm):
def __init__(self, *args, **kwargs):
self.user_import = kwargs.pop('user_import')
initial = kwargs.setdefault('initial', {})
initial['encoding'] = self.user_import.encoding
initial['ou'] = self.user_import.ou
super(UserEditImportForm, self).__init__(*args, **kwargs)
del self.fields['import_file']
def clean(self):
from authentic2.csv_import import CsvImporter
encoding = self.cleaned_data['encoding']
with self.user_import.import_file as fd:
importer = CsvImporter()
if not importer.run(fd, encoding):
self.raise_validation_error(importer.error.description or importer.error.code)
self.cleaned_data['rows_count'] = len(importer.rows)
def save(self):
with self.user_import.meta_update as meta:
meta['ou'] = self.cleaned_data['ou']
meta['encoding'] = self.cleaned_data['encoding']
class RolesCsvImportForm(LimitQuerysetFormMixin, forms.Form):
import_file = forms.FileField(
label=_('Roles file'),

View File

@ -20,22 +20,21 @@
{% block sidebar %}
<aside id="sidebar">
<div>
<h3>{% trans "Modify import" %}</h3>
<h3>{% trans "Actions" %}</h3>
<form method="post" id="action-form">
{% csrf_token %}
{{ form|with_template }}
<div class="buttons">
<button name="modify">{% trans "Modify" %}</button>
<button name="simulate">{% trans "Simulate" %}</button>
<button name="execute">{% trans "Execute" %}</button>
<button name="simulate">{% trans "Simulate import" %}</button>
</div>
<div class="buttons">
<button name="execute">{% trans "Execute import" %}</button>
</div>
</form>
</div>
<div>
<h3>{% trans "Download" %}</h3>
<form action="download/{{ user_import.filename }}" id="download-form">
<div class="buttons">
<button>{% trans "Download" %}</button>
<button>{% trans "Download CSV file" %}</button>
</div>
</form>
</div>
@ -43,7 +42,9 @@
{% endblock %}
{% block main %}
<p>{% trans "Encoding:" %} {{ encoding }}</p>
<p>{% trans "Rows count:" %} {{ user_import.rows_count }}</p>
<p>{% trans "Target Organizational Unit:" %} {{ user_import.ou }}</p>
<h2>{% trans "Reports" %}</h2>
<table class="main">
<thead>

View File

@ -55,6 +55,7 @@ from django_rbac.utils import get_ou_model, get_role_model, get_role_parenting_m
from . import app_settings
from .forms import (
ENCODINGS,
ChooseUserAuthorizationsForm,
ChooseUserRoleForm,
UserAddChooseOUForm,
@ -62,7 +63,6 @@ from .forms import (
UserChangeEmailForm,
UserChangePasswordForm,
UserEditForm,
UserEditImportForm,
UserNewImportForm,
UserRoleSearchForm,
UserSearchForm,
@ -831,8 +831,7 @@ class UserImportsView(MediaMixin, PermissionMixin, FormView):
user_imports = UserImportsView.as_view()
class UserImportView(MediaMixin, PermissionMixin, FormView):
form_class = UserEditImportForm
class UserImportView(MediaMixin, PermissionMixin, TemplateView):
permissions = ['custom_user.admin_user']
permissions_global = True
template_name = 'authentic2/manager/user_import.html'
@ -850,11 +849,6 @@ class UserImportView(MediaMixin, PermissionMixin, FormView):
return FileResponse(self.user_import.import_file, content_type='text/csv')
return super(UserImportView, self).get(request, uuid=uuid, filename=filename)
def get_form_kwargs(self):
kwargs = super(UserImportView, self).get_form_kwargs()
kwargs['user_import'] = self.user_import
return kwargs
def post(self, request, *args, **kwargs):
from authentic2.manager import user_import
@ -868,23 +862,13 @@ class UserImportView(MediaMixin, PermissionMixin, FormView):
report.delete()
return redirect(request, 'a2-manager-users-import', kwargs={'uuid': self.user_import.uuid})
simulate = 'simulate' in request.POST
execute = 'execute' in request.POST
if simulate or execute:
report = user_import.Report.new(self.user_import)
report.run(simulate=simulate)
return redirect(request, 'a2-manager-users-import', kwargs={'uuid': self.user_import.uuid})
return super(UserImportView, self).post(request, *args, **kwargs)
def form_valid(self, form):
form.save()
return super(UserImportView, self).form_valid(form)
def get_success_url(self):
return reverse('a2-manager-users-import', kwargs={'uuid': self.user_import.uuid})
report = user_import.Report.new(self.user_import)
report.run(simulate=bool('simulate' in request.POST))
return redirect(request, 'a2-manager-users-import', kwargs={'uuid': self.user_import.uuid})
def get_context_data(self, **kwargs):
ctx = super(UserImportView, self).get_context_data(**kwargs)
ctx['encoding'] = [encoding for id, encoding in ENCODINGS if id == self.user_import.encoding][0]
ctx['user_import'] = self.user_import
ctx['reports'] = sorted(self.user_import.reports, key=operator.attrgetter('created'), reverse=True)
return ctx
@ -894,7 +878,6 @@ user_import = UserImportView.as_view()
class UserImportReportView(MediaMixin, PermissionMixin, TemplateView):
form_class = UserEditImportForm
permissions = ['custom_user.admin_user']
permissions_global = True

View File

@ -490,8 +490,6 @@ x,x,x,x'''.encode(
response = response.follow()
response = response.forms['action-form'].submit(name='modify').follow()
response = response.forms['action-form'].submit(name='simulate')
reports = list(_import.reports)
@ -634,6 +632,9 @@ def import_csv(csv_content, app):
start = time.time()
response = response.click('Users Import')
assert 'Encoding: Unicode (UTF-8)' in response.text
assert 'Target Organizational Unit: Default organizational unit' in response.text
while 'Running' in response.text:
response = response.click('Users Import')
assert time.time() - start < 2