csv_import: remove modify import form (#53463)
This commit is contained in:
parent
08ece07bb2
commit
8faea5022c
|
@ -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'),
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue