def CreateWorld(): if 'file' not in request.files: return Response('no file found', status=400) file = request.files['file'] if not allowed_file(file.filename): return Response('invalid file type', status=400) try: campaignName = Campaign.query.get( request.form['campaign_id']).name.replace(' ', '_') newWorld = World( request.form['name'] or None, f'/mediafiles/campaigns/{campaignName}/{secure_filename(file.filename)}', request.form['center_lat'], request.form['center_lng'], request.form['radius'], request.form['campaign_id'] or None) db.session.add(newWorld) db.session.commit() os.makedirs( f'/usr/src/app/mediafiles/campaigns/{campaignName}/{newWorld.name.replace(" ", "_")}', exist_ok=True) file.save(f'/usr/src/app{newWorld.image}') data = jsonify(newWorld.to_dict()) data.status_code = 201 return data except (IntegrityError, AttributeError) as error: return Response(error.args[0], status=400)
def test_create_success(self): world = World('new', '/mediafiles/campaigns/campaign_name/file.jpg', 1, 1, 1, 1) world.id = 2 world = world.to_dict() del world['campaign'] response = self.create_world(self.DEFAULT_TOKEN, 'new', 'file.jpg', 1, 1, 1, 1) self.assertEqual(response.status_code, 201) json = response.get_json() self.assertDictContainsSubset(world, json)