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 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): class RolesCsvImportForm(LimitQuerysetFormMixin, forms.Form):
import_file = forms.FileField( import_file = forms.FileField(
label=_('Roles file'), label=_('Roles file'),

View File

@ -20,22 +20,21 @@
{% block sidebar %} {% block sidebar %}
<aside id="sidebar"> <aside id="sidebar">
<div> <div>
<h3>{% trans "Modify import" %}</h3> <h3>{% trans "Actions" %}</h3>
<form method="post" id="action-form"> <form method="post" id="action-form">
{% csrf_token %} {% csrf_token %}
{{ form|with_template }}
<div class="buttons"> <div class="buttons">
<button name="modify">{% trans "Modify" %}</button> <button name="simulate">{% trans "Simulate import" %}</button>
<button name="simulate">{% trans "Simulate" %}</button> </div>
<button name="execute">{% trans "Execute" %}</button> <div class="buttons">
<button name="execute">{% trans "Execute import" %}</button>
</div> </div>
</form> </form>
</div> </div>
<div> <div>
<h3>{% trans "Download" %}</h3>
<form action="download/{{ user_import.filename }}" id="download-form"> <form action="download/{{ user_import.filename }}" id="download-form">
<div class="buttons"> <div class="buttons">
<button>{% trans "Download" %}</button> <button>{% trans "Download CSV file" %}</button>
</div> </div>
</form> </form>
</div> </div>
@ -43,7 +42,9 @@
{% endblock %} {% endblock %}
{% block main %} {% block main %}
<p>{% trans "Encoding:" %} {{ encoding }}</p>
<p>{% trans "Rows count:" %} {{ user_import.rows_count }}</p> <p>{% trans "Rows count:" %} {{ user_import.rows_count }}</p>
<p>{% trans "Target Organizational Unit:" %} {{ user_import.ou }}</p>
<h2>{% trans "Reports" %}</h2> <h2>{% trans "Reports" %}</h2>
<table class="main"> <table class="main">
<thead> <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 . import app_settings
from .forms import ( from .forms import (
ENCODINGS,
ChooseUserAuthorizationsForm, ChooseUserAuthorizationsForm,
ChooseUserRoleForm, ChooseUserRoleForm,
UserAddChooseOUForm, UserAddChooseOUForm,
@ -62,7 +63,6 @@ from .forms import (
UserChangeEmailForm, UserChangeEmailForm,
UserChangePasswordForm, UserChangePasswordForm,
UserEditForm, UserEditForm,
UserEditImportForm,
UserNewImportForm, UserNewImportForm,
UserRoleSearchForm, UserRoleSearchForm,
UserSearchForm, UserSearchForm,
@ -831,8 +831,7 @@ class UserImportsView(MediaMixin, PermissionMixin, FormView):
user_imports = UserImportsView.as_view() user_imports = UserImportsView.as_view()
class UserImportView(MediaMixin, PermissionMixin, FormView): class UserImportView(MediaMixin, PermissionMixin, TemplateView):
form_class = UserEditImportForm
permissions = ['custom_user.admin_user'] permissions = ['custom_user.admin_user']
permissions_global = True permissions_global = True
template_name = 'authentic2/manager/user_import.html' 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 FileResponse(self.user_import.import_file, content_type='text/csv')
return super(UserImportView, self).get(request, uuid=uuid, filename=filename) 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): def post(self, request, *args, **kwargs):
from authentic2.manager import user_import from authentic2.manager import user_import
@ -868,23 +862,13 @@ class UserImportView(MediaMixin, PermissionMixin, FormView):
report.delete() report.delete()
return redirect(request, 'a2-manager-users-import', kwargs={'uuid': self.user_import.uuid}) return redirect(request, 'a2-manager-users-import', kwargs={'uuid': self.user_import.uuid})
simulate = 'simulate' in request.POST report = user_import.Report.new(self.user_import)
execute = 'execute' in request.POST report.run(simulate=bool('simulate' in request.POST))
if simulate or execute: return redirect(request, 'a2-manager-users-import', kwargs={'uuid': self.user_import.uuid})
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})
def get_context_data(self, **kwargs): def get_context_data(self, **kwargs):
ctx = super(UserImportView, self).get_context_data(**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['user_import'] = self.user_import
ctx['reports'] = sorted(self.user_import.reports, key=operator.attrgetter('created'), reverse=True) ctx['reports'] = sorted(self.user_import.reports, key=operator.attrgetter('created'), reverse=True)
return ctx return ctx
@ -894,7 +878,6 @@ user_import = UserImportView.as_view()
class UserImportReportView(MediaMixin, PermissionMixin, TemplateView): class UserImportReportView(MediaMixin, PermissionMixin, TemplateView):
form_class = UserEditImportForm
permissions = ['custom_user.admin_user'] permissions = ['custom_user.admin_user']
permissions_global = True permissions_global = True

View File

@ -490,8 +490,6 @@ x,x,x,x'''.encode(
response = response.follow() response = response.follow()
response = response.forms['action-form'].submit(name='modify').follow()
response = response.forms['action-form'].submit(name='simulate') response = response.forms['action-form'].submit(name='simulate')
reports = list(_import.reports) reports = list(_import.reports)
@ -634,6 +632,9 @@ def import_csv(csv_content, app):
start = time.time() start = time.time()
response = response.click('Users Import') 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: while 'Running' in response.text:
response = response.click('Users Import') response = response.click('Users Import')
assert time.time() - start < 2 assert time.time() - start < 2