--- /dev/null
+# coding=utf-8
+from django import forms
+
+
+class NewDirForm(forms.Form):
+ host = forms.CharField(label=u'Host', max_length=256, widget=forms.HiddenInput())
+ path = forms.CharField(label=u'Ścieżka', max_length=1024, widget=forms.HiddenInput())
+ name = forms.CharField(label=u'Nazwa', max_length=256)
self.cli.rmdir(url, self._done, None, self.op_attr)
self.wait()
+
+ def mkdir(self, url):
+ self.cli.mkdir(url, self._done, None, self.op_attr)
+
+ self.wait()
url(r'^upload/$', views.upload, name='upload'),
url(r'^info/$', views.info, name='info'),
url(r'^delete/$', views.delete, name='delete'),
+ url(r'^mkdir/$', views.mkdir, name='mkdir'),
)
from django.template.defaultfilters import filesizeformat
from django.utils.formats import date_format
from django.views.decorators.http import require_POST
+from filex.forms import NewDirForm
from filex.ftp import FTPOperation, FTPException
from filex.uploadhandler import with_ftp_upload_handler
done.append(name)
return JsonResponse({'done': done, 'fail': fail})
+
+
+@require_POST
+def mkdir(request):
+ check_auth(request)
+
+ # TODO actual data validation
+ form = NewDirForm(request.POST)
+
+ if form.is_valid():
+ host = form.cleaned_data['host']
+ path = form.cleaned_data['path']
+ name = form.cleaned_data['name']
+
+ url = 'gsiftp://' + host + path + '/' + name
+
+ print url
+
+ try:
+ FTPOperation(request.session['proxy']).mkdir(url)
+ except FTPException as e:
+ msg = e.message
+ else:
+ return JsonResponse({'success': True})
+ else:
+ msg = form.errors
+
+ return JsonResponse({'msg': msg}, status=400)
{% extends 'qcg/base.html' %}
-{% load staticfiles %}
+{% load staticfiles bootstrap3 %}
{% block extra_css %}
<link href="{% static 'qcg/selectize/selectize.bootstrap3.css' %}" rel="stylesheet">
$(function () {
var statusTimeout;
+ function status(msg) {
+ clearTimeout(statusTimeout);
+ statusTimeout = setTimeout(function() {
+ $('#status').text('');
+ }, 3000);
+
+ $('#status').text(msg);
+ }
+
filex.files.on('change:checked', function() {
var selected = filex.selectedFiles().length;
filex.idle();
}
else {
- clearTimeout(statusTimeout);
- statusTimeout = setTimeout(function() {
- $('#status').text('');
- }, 3000);
-
- $('#status').text('Usuwanie zakończone pomyślnie');
+ status('Usuwanie zakończone pomyślnie');
}
if (response.done.length)
$confirmModal.modal();
});
+
+ $('#mkdir-form').submit(function(e) {
+ var $this = $(this);
+
+ e.preventDefault();
+ filex.busy();
+ $this.modal('hide');
+
+ $this.find('#id_host').val(filex.host);
+ $this.find('#id_path').val(filex.path.full());
+
+ $.post($this.attr('action'), $this.serialize(), function(response) {
+ status('Katalog utworzono pomyślnie');
+ filex.reloadFiles();
+ }, 'json')
+ });
})
</script>
{% endblock extra_js %}
</div>
</div>
</div>
+
+ <form id="mkdir-form" action="{% url 'filex:mkdir' %}" class="modal fade form-horizontal" tabindex="-1" role="dialog" aria-labelledby="mkdir-modal-label" aria-hidden="true">
+ <div class="modal-dialog">
+ <div class="modal-content">
+ <div class="modal-header">
+ <button type="button" class="close" data-dismiss="modal" aria-label="Close">
+ <span aria-hidden="true">×</span>
+ </button>
+ <h4 class="modal-title" id="mkdir-modal-label">Nowy katalog</h4>
+ </div>
+ <div class="modal-body">
+ {% csrf_token %}
+ {% bootstrap_form new_dir_form layout='horizontal' %}
+ </div>
+ <div class="modal-footer">
+ <button type="button" class="btn btn-default" data-dismiss="modal">Anuluj</button>
+ <button type="submit" class="btn btn-primary">OK</button>
+ </div>
+ </div>
+ </div>
+ </form>
{% endblock container %}
{% block footer %}
<div class="btn-toolbar" role="toolbar" style="float: left">
<div class="btn-group" role="group">
<button id="btn-upload" class="btn btn-default navbar-btn">Wgraj plik</button>
- <button class="btn btn-default navbar-btn">Utwórz katalog</button>
+ <button class="btn btn-default navbar-btn" data-toggle="modal" data-target="#mkdir-form">Utwórz katalog</button>
</div>
<div class="btn-group" role="group">
<button id="btn-rename" class="btn btn-default navbar-btn disabled">Zmień nazwę</button>
from django.utils.timezone import UTC
from django_openid_auth.views import make_consumer
from openid.extensions import ax
+from filex.forms import NewDirForm
from qcg.forms import FiltersForm, ColumnsForm, JobDescriptionForm, EnvFormSet
from qcg.utils import paginator_context
@login_required
def gridftp(request):
- return render(request, 'qcg/gridftp.html')
+ return render(request, 'qcg/gridftp.html', {'new_dir_form': NewDirForm()})
def gridftp_upload(request):