def upload_markup(): token = validate_token() if not token: return "Forbidden", 403 job_id = token['job']['id'] project_id = token['project']['id'] r = execute_one( """ SELECT count(*) FROM job_markup WHERE job_id = %s """, (job_id, )) if r[0] > 0: return "Forbidden", 403 if len(request.files) > 10: return "Too many uploads", 400 for name, f in request.files.iteritems(): try: if not allowed_file(f.filename, ("json", )): return "Filetype not allowed", 400 path = '/tmp/data.json' f.save(path) # Check size if os.path.getsize(path) > 8 * 1024 * 1024: return "File too big", 400 # Parse it with open(path, 'r') as md: content = md.read() data = json.loads(content) validate_markup(data) cursor = conn.cursor() cursor.execute( """INSERT INTO job_markup (job_id, name, data, project_id, type) VALUES (%s, %s, %s, %s, 'markup')""", (job_id, name, content, project_id)) cursor.close() conn.commit() except ValidationError as e: return e.message, 400 except Exception as e: app.logger.error(e) return "Failed to parse json", 400 return ""
def post(self): job_id = g.token['job']['id'] project_id = g.token['project']['id'] r = g.db.execute_one( """ SELECT count(*) FROM job_markup WHERE job_id = %s """, [job_id]) if r[0] > 0: abort(403, "Forbidden") if len(request.files) > 10: abort(400, "Too many uploads") path = '/tmp/%s.json' % uuid.uuid4() @after_this_request def _remove_file(response): delete_file(path) return response for name, f in request.files.iteritems(): try: if not allowed_file(f.filename, ("json", )): abort(400, "Filetype not allowed") f.save(path) # Check size if os.path.getsize(path) > 8 * 1024 * 1024: abort(400, "File too big") # Parse it with open(path, 'r') as md: content = md.read() data = json.loads(content) validate_markup(data) g.db.execute( """INSERT INTO job_markup (job_id, name, data, project_id, type) VALUES (%s, %s, %s, %s, 'markup') """, [job_id, name, content, project_id]) g.db.commit() except ValidationError as e: abort(400, e.message) except Exception as e: app.logger.error(e) abort(400, "Failed to parse json") return jsonify({})