Beispiel #1
0
def main():
  uid = get_uid_from_cookie()
  uid_dir = os.path.join(app_dir, 'storage', 'users', uid['uid'])

  form = cgi.FieldStorage()
  if form.has_key('task'):
    taskstring = form.getvalue('task')
    task = parse_json_task(form.getvalue('task'))

  else:
    reply_failure("No task.")
    sys.exit()

  userconfig = read_user_config(uid)

  if not os.path.exists(uid_dir):
    write_user_config(uid, userconfig)
 
  d = datetime.now()
  taskname = d.strftime('%w') + str(d.hour*3600+d.minute*60+d.second)
  filename = 'tasktemp_'+ taskname +'.tsk'

  with open(os.path.join(uid_dir, filename), 'w') as f:
    f.write(create_xcsoar_task(task))
    reply_success(uid, taskname)
    sys.exit()

  reply_failure("Unknown failure.")
Beispiel #2
0
def save_temp():
    uid = get_uid_from_cookie()
    uid_dir = os.path.join(current_app.config["USERS_FOLDER"], uid["uid"])

    if "task" in request.values:
        taskstring = request.values["task"]
        task = parse_json_task(taskstring)

    else:
        return jsonify({"success": False, "reason": "No task."})

    userconfig = read_user_config(uid)

    if not os.path.exists(uid_dir):
        write_user_config(uid, userconfig)

    d = datetime.now()
    taskname = d.strftime("%w") + str(d.hour * 3600 + d.minute * 60 + d.second)
    filename = "tasktemp_" + taskname + ".tsk"

    with open(os.path.join(uid_dir, filename), "w") as f:
        f.write(create_xcsoar_task(task))

        base_url = "tasks/" + uid["uid"] + "/temp/" + taskname
        return jsonify(
            {
                "success": True,
                "settings": get_user_config_as_json(uid, encoded=False),
                "download": {
                    "xcsoar": {
                        "name": "XCSoar (*.tsk)",
                        "url": base_url + "/xcsoar",
                        "qrcode": base_url + "/xcsoar/qr",
                    },
                    "seeyou": {
                        "name": "SeeYou (*.cup)",
                        "url": base_url + "/seeyou",
                        "qrcode": base_url + "/seeyou/qr",
                    },
                },
            }
        )

    return jsonify({"success": False, "reason": "Unknown failure."})
Beispiel #3
0
def save_temp():
    uid = get_uid_from_cookie()
    uid_dir = os.path.join(current_app.config['USERS_FOLDER'], uid['uid'])

    if 'task' in request.values:
        taskstring = request.values['task']
        task = parse_json_task(taskstring)

    else:
        return jsonify({'success': False, 'reason': 'No task.'})

    userconfig = read_user_config(uid)

    if not os.path.exists(uid_dir):
        write_user_config(uid, userconfig)

    d = datetime.now()
    taskname = d.strftime('%w') + str(d.hour * 3600 + d.minute * 60 + d.second)
    filename = 'tasktemp_' + taskname + '.tsk'

    with open(os.path.join(uid_dir, filename), 'w') as f:
        f.write(create_xcsoar_task(task))

        base_url = 'tasks/' + uid['uid'] + '/temp/' + taskname
        return jsonify({
            'success': True,
            'settings': get_user_config_as_json(uid, encoded=False),
            'download': {
                'xcsoar': {
                    'name': 'XCSoar (*.tsk)',
                    'url': base_url + '/xcsoar',
                    'qrcode': base_url + '/xcsoar/qr',
                },
                'seeyou': {
                    'name': 'SeeYou (*.cup)',
                    'url': base_url + '/seeyou',
                    'qrcode': base_url + '/seeyou/qr',
                },
            }
        })

    return jsonify({'success': False, 'reason': 'Unknown failure.'})
Beispiel #4
0
def save_temp():
    uid = get_uid_from_cookie()
    uid_dir = os.path.join(current_app.config['USERS_FOLDER'], uid['uid'])

    if 'task' not in request.values:
        return jsonify({'success': False, 'reason': 'No task.'})

    taskstring = request.values['task']
    task = parse_json_task(taskstring)

    userconfig = read_user_config(uid)

    if not os.path.exists(uid_dir):
        write_user_config(uid, userconfig)

    d = datetime.now()
    taskname = d.strftime('%w') + str(d.hour * 3600 + d.minute * 60 + d.second)
    filename = 'tasktemp_' + taskname + '.tsk'

    with open(os.path.join(uid_dir, filename), 'w') as f:
        write_xcsoar_task(f, task)

    base_url = 'tasks/' + uid['uid'] + '/temp/' + taskname
    return jsonify({
        'success': True,
        'settings': get_user_config_as_json(uid, encoded=False),
        'download': {
            'xcsoar': {
                'name': 'XCSoar (*.tsk)',
                'url': base_url + '/xcsoar',
                'qrcode': base_url + '/xcsoar/qr',
            },
            'seeyou': {
                'name': 'SeeYou (*.cup)',
                'url': base_url + '/seeyou',
                'qrcode': base_url + '/seeyou/qr',
            },
        }
    })
Beispiel #5
0
def main():
  uid = get_uid_from_cookie()
  uid_dir = os.path.join(app_dir, 'storage', 'users', uid['uid'])

  form = cgi.FieldStorage()
  if form.has_key('task'):
    taskstring = form.getvalue('task')
    task = parse_json_task(form.getvalue('task'))

  else:
    reply_failure("No task.")
    sys.exit()

  m = re.compile('([^&+/;]*)').match(form.getvalue('task_name'))
  task_name = m.group(1)

  if task_name == '':
    reply_failure("Invalid task name.")
    sys.exit()

  userconfig = read_user_config(uid)

  if not os.path.exists(uid_dir):
    write_user_config(uid, userconfig)

  replace = False

  taskid = len(userconfig['task_files']) 

  for key, value in enumerate(userconfig['task_files']):

    if value['name'] == task_name:
      replace = True
      taskid = key
      break

  if taskid >= 20:
    reply_failure("Too much tasks saved already (maximum of 20 reached).")
    sys.exit()
#    raise RuntimeError('Too much tasks saved')
 
  filename = 'task_'+str(taskid+1)+'.tsk'
  d = datetime.today()

  with open(os.path.join(uid_dir, filename), 'w') as f:
    f.write(create_xcsoar_task(task))
    
    if not replace:
      userconfig['task_files'].append({'id': taskid+1,
                                       'name': task_name,
                                       'distance': task.distance,
                                       'type': task.type,
                                       'turnpoints': len(task),
                                       'date': d.isoformat() })
    else:
      userconfig['task_files'][taskid] = {'id': taskid+1,
                                       'name': task_name,
                                       'distance': task.distance,
                                       'type': task.type,
                                       'turnpoints': len(task),
                                       'date': d.isoformat() }

    write_user_config(uid, userconfig)
    reply_success(uid)
    exit()

  reply_failure("Unknown failure.")
Beispiel #6
0
def save(task_name):
    uid = get_uid_from_cookie()
    uid_dir = os.path.join(current_app.config['USERS_FOLDER'], uid['uid'])

    if 'task' not in request.values:
        return jsonify({'success': False, 'reason': 'No task.'})

    taskstring = request.values['task']
    task = parse_json_task(taskstring)

    m = re.compile('([^&+/;]*)').match(task_name)
    task_name = m.group(1)

    if task_name == '':
        return jsonify({'success': False, 'reason': 'Invalid task name.'})

    userconfig = read_user_config(uid)

    if not os.path.exists(uid_dir):
        write_user_config(uid, userconfig)

    replace = False

    taskid = len(userconfig['task_files'])

    for key, value in enumerate(userconfig['task_files']):

        if value['name'] == task_name:
            replace = True
            taskid = key
            break

    if taskid >= 20:
        return jsonify({
            'success': False,
            'reason': 'Too much tasks saved already (maximum of 20 reached).'
        })

    filename = 'task_' + str(taskid + 1) + '.tsk'
    d = datetime.today()

    with open(os.path.join(uid_dir, filename), 'w') as f:
        write_xcsoar_task(f, task)

    taskinfo = {
        'id': taskid + 1,
        'name': task_name,
        'distance': task.distance,
        'type': task.type,
        'turnpoints': len(task),
        'date': d.isoformat()
    }

    if not replace:
        userconfig['task_files'].append(taskinfo)
    else:
        userconfig['task_files'][taskid] = taskinfo

    write_user_config(uid, userconfig)
    return jsonify({
        'success': True,
        'settings': get_user_config_as_json(uid, encoded=False)
    })
Beispiel #7
0
def save(task_name):
    uid = get_uid_from_cookie()
    uid_dir = os.path.join(current_app.config['USERS_FOLDER'], uid['uid'])

    if 'task' not in request.values:
        return jsonify({'success': False, 'reason': 'No task.'})

    taskstring = request.values['task']
    task = parse_json_task(taskstring)

    m = re.compile('([^&+/;]*)').match(task_name)
    task_name = m.group(1)

    if task_name == '':
        return jsonify({'success': False, 'reason': 'Invalid task name.'})

    userconfig = read_user_config(uid)

    if not os.path.exists(uid_dir):
        write_user_config(uid, userconfig)

    replace = False

    taskid = len(userconfig['task_files'])

    for key, value in enumerate(userconfig['task_files']):

        if value['name'] == task_name:
            replace = True
            taskid = key
            break

    if taskid >= 20:
        return jsonify({
            'success':
            False,
            'reason':
            'Too much tasks saved already (maximum of 20 reached).'
        })

    filename = 'task_' + str(taskid + 1) + '.tsk'
    d = datetime.today()

    with open(os.path.join(uid_dir, filename), 'w') as f:
        write_xcsoar_task(f, task)

    taskinfo = {
        'id': taskid + 1,
        'name': task_name,
        'distance': task.distance,
        'type': task.type,
        'turnpoints': len(task),
        'date': d.isoformat()
    }

    if not replace:
        userconfig['task_files'].append(taskinfo)
    else:
        userconfig['task_files'][taskid] = taskinfo

    write_user_config(uid, userconfig)
    return jsonify({
        'success': True,
        'settings': get_user_config_as_json(uid, encoded=False)
    })
Beispiel #8
0
def save(task_name):
    uid = get_uid_from_cookie()
    uid_dir = os.path.join(current_app.config["USERS_FOLDER"], uid["uid"])

    if "task" in request.values:
        taskstring = request.values["task"]
        task = parse_json_task(taskstring)

    else:
        return jsonify({"success": False, "reason": "No task."})

    m = re.compile("([^&+/;]*)").match(task_name)
    task_name = m.group(1)

    if task_name == "":
        return jsonify({"success": False, "reason": "Invalid task name."})

    userconfig = read_user_config(uid)

    if not os.path.exists(uid_dir):
        write_user_config(uid, userconfig)

    replace = False

    taskid = len(userconfig["task_files"])

    for key, value in enumerate(userconfig["task_files"]):

        if value["name"] == task_name:
            replace = True
            taskid = key
            break

    if taskid >= 20:
        return jsonify({"success": False, "reason": "Too much tasks saved already (maximum of 20 reached)."})

    filename = "task_" + str(taskid + 1) + ".tsk"
    d = datetime.today()

    with open(os.path.join(uid_dir, filename), "w") as f:
        f.write(create_xcsoar_task(task))

        if not replace:
            userconfig["task_files"].append(
                {
                    "id": taskid + 1,
                    "name": task_name,
                    "distance": task.distance,
                    "type": task.type,
                    "turnpoints": len(task),
                    "date": d.isoformat(),
                }
            )
        else:
            userconfig["task_files"][taskid] = {
                "id": taskid + 1,
                "name": task_name,
                "distance": task.distance,
                "type": task.type,
                "turnpoints": len(task),
                "date": d.isoformat(),
            }

        write_user_config(uid, userconfig)
        return jsonify({"success": True, "settings": get_user_config_as_json(uid, encoded=False)})

    return jsonify({"success": False, "reason": "Unknown failure."})