53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
from __future__ import annotations
|
|
|
|
from django.contrib import messages
|
|
from django.http import HttpResponse
|
|
from django.urls import reverse
|
|
from django.utils.translation import gettext_lazy as _
|
|
from django.views.generic import FormView
|
|
|
|
from hotpocket_backend.apps.accounts.mixins import AccountRequiredMixin
|
|
from hotpocket_backend.apps.core.conf import settings
|
|
from hotpocket_backend.apps.ui.forms.imports import PocketImportForm
|
|
from hotpocket_backend.apps.ui.services import UIImportsService
|
|
|
|
|
|
class PocketImportView(AccountRequiredMixin, FormView):
|
|
template_name = 'ui/imports/pocket.html'
|
|
form_class = PocketImportForm
|
|
|
|
def form_valid(self, form: PocketImportForm) -> HttpResponse:
|
|
csv_filename = '{user_pk}-{filename}'.format(
|
|
user_pk=self.request.user.pk,
|
|
filename=form.cleaned_data['csv'].name,
|
|
)
|
|
|
|
csv_path = settings.UPLOADS_PATH / csv_filename
|
|
with open(csv_path, 'wb') as csv_file:
|
|
for chunk in form.cleaned_data['csv']:
|
|
csv_file.write(chunk)
|
|
|
|
result = UIImportsService().schedule_import_from_pocket(
|
|
account_uuid=self.request.user.pk,
|
|
csv_path=str(csv_path),
|
|
)
|
|
|
|
if result.ready() is True:
|
|
messages.add_message(
|
|
self.request,
|
|
messages.SUCCESS,
|
|
_('Import complete!'),
|
|
)
|
|
else:
|
|
messages.add_message(
|
|
self.request,
|
|
messages.INFO,
|
|
_('The import has been scheduled.'),
|
|
)
|
|
|
|
return super().form_valid(form)
|
|
|
|
def get_success_url(self) -> str:
|
|
return reverse('ui.associations.index')
|