Commit 8a64f00
Changed files (4)
static/ffu.js
@@ -4,6 +4,8 @@ if (window.File && window.FileList) {
form.input_file = $("#fileselect");
form.file_list = $("#filelist");
form.upload_zone.files = new Array();
+ form.upload_btn = $("#upload-btn");
+ form.clear_btn = $("#clear-btn");
form.submit (function (e) {
e.preventDefault();
@@ -23,17 +25,26 @@ if (window.File && window.FileList) {
form.upload_zone.innerHTML = "Error " + request.status + " occurred uploading your file.<br \/>";
}
};
- form.file_list.empty();
- console.log("emptied");
request.send(file_data);
+ cleanSlate();
});
+ // fresh upload page
+ var cleanSlate = function () {
+ form.file_list.empty();
+ form.input_file.replaceWith ( form.input_file = form.input_file.clone(true) );
+ form.upload_zone.files.length = 0;
+ form.upload_btn.prop('disabled', true);
+ form.clear_btn.prop('disabled', true);
+ }
// manage meta-file array
var handleFiles = function (files) {
for (var i=0, file; file=files[i]; i++){
form.upload_zone.files.push (file);
form.file_list.append ("<li class='list-group-item'>"+file.name+"\t"+file.size+"B "+"</li>");
}
+ form.upload_btn.prop('disabled', false);
+ form.clear_btn.prop('disabled', false);
} // end handleFiles
// watch for changes in form-input-file element
@@ -47,6 +58,10 @@ if (window.File && window.FileList) {
form.input_file.click();
});
+ form.clear_btn.click (function(e) {
+ cleanSlate();
+ });
+
} // end upload jquery functions
$(document).on ('dragstart dragenter dragover', function (e) {
templates/admin.html
@@ -6,6 +6,14 @@
{% block content %}
<div class="container">
- Admin'y things here
+ <div class="row">
+ <div class="col-xs-12">
+ <ul id="filelist" class="list-group">
+ {% for item in items %}
+ <li><a href="#">{{item}}</a></li>
+ {% end %}
+ </ul>
+ </div>
+ </div>
</div><!-- /.container -->
{% end %}
templates/index.html
@@ -15,8 +15,8 @@
</div>
</div>
<div class="col-md-4 col-sm-4 bot-padding">
- <button class="btn btn-lg btn-default btn-block" type="submit">Upload</button>
- <button class="btn btn-lg btn-default btn-block" type="reset">Clear</button>
+ <button id="upload-btn" class="btn btn-lg btn-default btn-block" type="submit" disabled>Upload</button>
+ <button id="clear-btn" class="btn btn-lg btn-default btn-block" type="reset" disabled>Clear</button>
</div>
</div>
<div class="row">
ffu.py
@@ -1,13 +1,16 @@
import tornado.ioloop
import tornado.web
-import logging
-import tarfile
-import uuid
-import base64
-from StringIO import StringIO
-import os
-
-from login import login
+#from config import COOKIE_SECRET, STATIC_DIR, TEMPLATE_DIR, AUDIT_DIR
+#from login import login
+#from soccermove import process_file_import
+# Tornado
+WORKING_DIR = os.path.dirname(os.path.abspath(__file__))
+COOKIE_SECRET = "F+ek4AWESWewGryPRbzq5aSHR1uRD0/ItZenLimCkGI="
+STATIC_DIR = os.path.join(WORKING_DIR,"static")
+TEMPLATE_DIR = os.path.join(WORKING_DIR,"templates")
+AUDIT_DIR = os.path.join(WORKING_DIR,"audit")
+
+import time, random, json, os
class BaseHandler(tornado.web.RequestHandler):
def get_login_url(self):
@@ -32,6 +35,10 @@ class BaseHandler(tornado.web.RequestHandler):
kwargs['errormsg'] = self.errormsg
else:
kwargs['errormsg'] = None
+ if hasattr(self, 'items'):
+ kwargs['items'] = self.items
+ else:
+ kwargs['items'] = []
kwargs['admin'] = self.get_admin_status()
super(BaseHandler, self).render(template, **kwargs)
@@ -42,16 +49,17 @@ class LoginHandler(BaseHandler):
def post(self):
username = self.get_argument("username", "")
password = self.get_argument("password", "")
- status, error = login(username, password)
+ #status, error = login(username, password)
status = ((username=="user" or username=="userb") and password=="pass")
if status:
- adminstatus = error #Yes, ghetto
+ #adminstatus = error #Yes, ghetto
adminstatus = (username=="userb")
self.set_current_user(username)
self.set_admin_status(adminstatus)
self.redirect(self.get_argument("next",u"/"))
else:
- self.errormsg = error
+ #self.errormsg = error
+ self.errormsg = "error"
self.render("login.html", errormsg=self.errormsg)
def set_current_user(self, user):
@@ -76,29 +84,43 @@ class UploadHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
self.render("index.html")
- #username = self.current_user, admin = self.get_admin_status())
@tornado.web.authenticated
def post(self):
- form_name = 'fileselect'
- upload_dir = 'uploads/'
if self.request.files:
-
- # replace with call to actual validation and tar'ing
- tar = tarfile.open(upload_dir + str(uuid.uuid4()) + ".tar.gz", "w:gz")
- fileinfo = self.request.files.itervalues()
- for f in fileinfo:
- f_info = tarfile.TarInfo(name=f[0]['filename'])
- f_info.size = len(f[0]['body'])
- tar.addfile(f_info, StringIO(f[0]['body']))
- tar.close()
+ files = []
+ for f in self.request.files.itervalues():
+ files.append((f[0]['filename'], f[0]['body']))
+ #process_file_import(self.current_user, files)
+ self.create_fake_manifest(files)
+
+ def create_fake_manifest(self,files):
+ transferid = "%f.%05d" % (time.time(), random.randint(0,99999))
+ manifest = {'transferid': transferid,
+ 'username' : self.current_user,
+ 'filenames' : [],
+ 'warnings' : [],
+ 'error' : False}
+ for name,body in files:
+ manifest['filenames'].append(name)
+ manifest['warnings'].append("xxxx")
+
+ print json.dumps(manifest)
+
+ f = open(os.path.join(AUDIT_DIR,transferid), 'w')
+ f.write(json.dumps(manifest))
+ f.close()
class AdminHandler(BaseHandler):
@tornado.web.authenticated
def get(self):
if self.get_admin_status():
- self.render("admin.html")
- #username = self.current_user, admin = self.get_admin_status())
+ self.items = []
+ for filename in os.listdir(AUDIT_DIR):
+ fout = open(os.path.join(AUDIT_DIR,filename), 'rb')
+ self.items.append(json.loads(fout.read()))
+ fout.close()
+ self.render("admin.html", items=self.items)
else:
self.redirect(u"/")
@@ -110,10 +132,9 @@ handlers = [
]
settings = {
- # set cookie_secret to hard coded string for production, currently breaks existing cookies on restart
- "cookie_secret": base64.b64encode(uuid.uuid4().bytes + uuid.uuid4().bytes),
- "static_path": os.path.join(os.path.dirname(__file__),"static"),
- "template_path": os.path.join(os.path.dirname(__file__),"templates"),
+ "cookie_secret": COOKIE_SECRET,
+ "static_path": STATIC_DIR,
+ "template_path": TEMPLATE_DIR,
}
application = tornado.web.Application(handlers, **settings )