post opens new request for each file

This commit is contained in:
iou1name 2019-06-02 20:10:00 -04:00
parent c06ebc29dc
commit 94fa825e67
2 changed files with 28 additions and 13 deletions

View File

@ -251,22 +251,34 @@ def post_pack():
res.raise_for_status() res.raise_for_status()
mods_remote = res.json() mods_remote = res.json()
mods = [mod for mod in mods if mod.filename not in mods_remote] mods = [mod for mod in mods if mod.filename not in mods_remote]
files = {}
for mod in mods: for mod in mods:
files = {}
files[mod.filename] = open(os.path.join('mods', mod.filename), 'rb') files[mod.filename] = open(os.path.join('mods', mod.filename), 'rb')
res = requests.post(
url=config_master.remote_addr + '/post',
data=data,
files=files
)
res.raise_for_status()
files[mod.filename].close()
print(f"{mod.filename} uploaded.")
files = {}
files['modpack.db'] = open('modpack.db', 'rb')
files[config_master.modpack_name + '.html'] = open( files[config_master.modpack_name + '.html'] = open(
config_master.modpack_name +'.html', 'rb') config_master.modpack_name +'.html', 'rb')
res = requests.post( res = requests.post(
url=config_master.remote_addr + '/post', url=config_master.remote_addr + '/post',
data=data, data=data,
files=files files=files
) )
res.raise_for_status() res.raise_for_status()
for file in files.values(): for file in files.values():
file.close() file.close()
print("modpack.db uploaded.")
print(f"{config_master.modpack_name}.html uploaded.")
print('Success!') print('Success!')

View File

@ -64,17 +64,20 @@ def post():
if not argon2.verify(password, config_server.pw_hash): if not argon2.verify(password, config_server.pw_hash):
abort(401) abort(401)
db = request.files.get('database') files = request.files.to_dict()
app.config.get('db_lock').acquire() if 'modpack.db' in files:
db.save('modpack.db') db = request.files.get('database')
app.config.get('db_lock').release() app.config.get('db_lock').acquire()
db.save('modpack.db')
app.config.get('db_lock').release()
files.pop('modpack.db')
summary = request.files.get(config_server.modpack_name + '.html') if config_server.modpack_name + '.html' in files:
summary.save(config_server.modpack_name + '.html') summary = request.files.get(config_server.modpack_name + '.html')
summary.save(config_server.modpack_name + '.html')
files.pop(config_server.modpack_name + '.html')
for fname, file in request.files.items(): for fname, file in files.items():
if not fname.endswith('.jar'):
continue
file.save(os.path.join(config_server.mods_dir, fname)) file.save(os.path.join(config_server.mods_dir, fname))
def generate_hash(password): def generate_hash(password):