+ {% elif has_subject_permissions %}
+
+
+
+
{% trans "Please select below the file you want to use for restore:" %}
+
+
+
+
+
+
+{% endblock %}
\ No newline at end of file
diff --git a/subjects/templates/subjects/subject_card.html b/subjects/templates/subjects/subject_card.html
index 9c8b4a8..dc7a8f0 100644
--- a/subjects/templates/subjects/subject_card.html
+++ b/subjects/templates/subjects/subject_card.html
@@ -31,6 +31,7 @@
{% trans 'Edit' %}
{% trans 'Groups' %}
{% trans 'Backup' %}
+
{% trans 'Restore' %}
{% trans 'Remove' %}
{% endif %}
diff --git a/subjects/urls.py b/subjects/urls.py
index 86a969c..219eca8 100644
--- a/subjects/urls.py
+++ b/subjects/urls.py
@@ -10,7 +10,9 @@ urlpatterns = [
url(r'^update/(?P
[\w_-]+)/$', views.SubjectUpdateView.as_view(), name='update'),
url(r'^delete/(?P[\w_-]+)/$', views.SubjectDeleteView.as_view(), name='delete'),
url(r'^backup/(?P[\w_-]+)/$', views.Backup.as_view(), name='backup'),
+ url(r'^restore/(?P[\w_-]+)/$', views.Restore.as_view(), name='restore'),
url(r'^do_backup/(?P[\w_-]+)/$', views.realize_backup, name='do_backup'),
+ url(r'^do_restore/(?P[\w_-]+)/$', views.realize_restore, name='do_restore'),
url(r'^view/(?P[\w_-]+)/$', views.SubjectDetailView.as_view(), name='view'),
url(r'^view/(?P[\w_-]+)/(?P[\w_-]+)/$', views.SubjectDetailView.as_view(), name='topic_view'),
url(r'^subscribe/(?P[\w_-]+)/$', views.SubjectSubscribeView.as_view(), name='subscribe'),
diff --git a/subjects/views.py b/subjects/views.py
index 21d87c7..23fcbf2 100644
--- a/subjects/views.py
+++ b/subjects/views.py
@@ -837,4 +837,40 @@ def realize_backup(request, subject):
resp['Content-Disposition'] = 'attachment; filename=%s' % zip_filename
resp['Content-Length'] = s.tell()
- return resp
\ No newline at end of file
+ return resp
+
+class Restore(LoginRequiredMixin, TemplateView):
+ login_url = reverse_lazy("users:login")
+ redirect_field_name = 'next'
+
+ template_name = 'subjects/restore.html'
+ model = Subject
+
+ def dispatch(self, request, *args, **kwargs):
+ subject = get_object_or_404(Subject, slug = kwargs.get('slug', ''))
+
+ if not has_subject_permissions(request.user, subject):
+ return redirect(reverse_lazy('subjects:home'))
+
+ return super(Restore, self).dispatch(request, *args, **kwargs)
+
+ def get_context_data(self, **kwargs):
+ context = super(Restore, self).get_context_data(**kwargs)
+
+ subject = get_object_or_404(Subject, slug = self.kwargs.get('slug', ''))
+
+ context['title'] = _('%s - Restore')%(str(subject))
+ context['subject'] = subject
+
+ return context
+
+@login_required
+def realize_restore(request, subject):
+ zip_file = request.FILES.get('zip_file', None)
+
+ if zip_file:
+ if zipfile.is_zipfile(zip_file):
+ file = zipfile.ZipFile(zip_file)
+ print(file.namelist())
+
+ return JsonResponse({'message': 'ok'})
\ No newline at end of file
--
libgit2 0.21.2