Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ CHANGELOG
### 2.4.16

* Fix handling of floating-point precision near the aligned case that used to result in error from libphoebe. [#965]
* Updates to phoebe-server to be compatible with modern browser requirements. [#959]


### 2.4.15
Expand Down
49 changes: 28 additions & 21 deletions client-server/phoebe-server
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ import subprocess
from time import sleep
from collections import OrderedDict
from datetime import datetime
from distutils.version import StrictVersion
from packaging.version import parse

from phoebe.parameters.unit_choices import unit_choices as _unit_choices

Expand Down Expand Up @@ -502,21 +502,28 @@ def _get_failed_constraints(b):


############################ HTTP ROUTES ######################################
def _get_request(request):
if request.content_type == 'application/json':
return request.get_json()
else:
return request.form

def _get_response(data, status_code=200, api=False, **metawargs):
d = {}
d['data'] = data
d['meta'] = metawargs
if api:
resp = jsonify(d)
resp.status_code = status_code
resp.headers.set('Content-Type', 'application/json')
return resp
else:
return d

@app.route("/info", methods=['GET', 'POST'])
@crossdomain(origin='*')
def info():
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -538,9 +545,9 @@ def info():

client_warning = None
if client_version is not None:
if StrictVersion(client_version) < StrictVersion('1.0.0'):
if parse(client_version) < parse('1.0.0'):
client_warning = 'client still in development'
elif StrictVersion(client_version) < StrictVersion('1.1.0'):
elif parse(client_version) < parse('1.1.0'):
client_warning = 'client does not support adding or editing servers'


Expand Down Expand Up @@ -576,7 +583,7 @@ def new_bundle(type):

type: 'binary:detached'
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -625,7 +632,7 @@ def new_bundle(type):
def open_bundle(type):
"""
"""
j = request.get_json()
j = _get_request(request)
if j is None:
j = request.form
clientid = j.get('clientid', None)
Expand Down Expand Up @@ -692,7 +699,7 @@ def open_bundle(type):
def json_bundle(bundleid):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -712,7 +719,7 @@ def json_bundle(bundleid):
def save_bundle(bundleid):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -738,7 +745,7 @@ def save_bundle(bundleid):
@app.route('/export_script/<string:bundleid>', methods=['GET', 'POST'])
@crossdomain(origin='*')
def export_script(bundleid):
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -776,7 +783,7 @@ def export_script(bundleid):
def export_compute(bundleid, compute, model=None):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -806,7 +813,7 @@ def export_compute(bundleid, compute, model=None):
def export_solver(bundleid, solver, solution=None):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -835,7 +842,7 @@ def export_solver(bundleid, solver, solution=None):
def export_params(bundleid, params):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -862,7 +869,7 @@ def export_params(bundleid, params):
def bundle(bundleid):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -895,7 +902,7 @@ def bundle(bundleid):
def parameter(bundleid, uniqueid):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -923,7 +930,7 @@ def parameter(bundleid, uniqueid):
def adjustable_parameters(bundleid):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -945,7 +952,7 @@ def adjustable_parameters(bundleid):
def run_checks(bundleid, run_checks_method, label):
"""
"""
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -967,7 +974,7 @@ def run_checks(bundleid, run_checks_method, label):
@app.route('/nparray/<string:input>', methods=['GET', 'POST'])
@crossdomain(origin='*')
def nparray(input):
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -1010,7 +1017,7 @@ def nparray(input):
@app.route('/distl/<string:input>/<float:current_face_value>', methods=['GET', 'POST'])
@crossdomain(origin='*')
def distl_convert(input, current_face_value):
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down Expand Up @@ -1047,7 +1054,7 @@ def distl_convert(input, current_face_value):

@app.route("/<string:bundleid>/figure/<string:figure>", methods=['GET', 'POST'])
def serve_figure(bundleid, figure):
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -1058,7 +1065,7 @@ def serve_figure(bundleid, figure):

@app.route("/<string:bundleid>/figure_afig/<string:figure>", methods=['GET', 'POST'])
def serve_figure_afig(bundleid, figure):
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand All @@ -1069,7 +1076,7 @@ def serve_figure_afig(bundleid, figure):

@app.route('/<string:bundleid>/distribution_plot/<string:parameter_uniqueid>/<string:distribution>', methods=['GET', 'POST'])
def serve_distribution_plot(bundleid, parameter_uniqueid, distribution):
j = request.get_json()
j = _get_request(request)
clientid = j.get('clientid', None) if j is not None else None
client_version = j.get('client_version', None) if j is not None else None

Expand Down
Loading