view frontend/mfrontend/views/api.py @ 18:8dabb7e7f039

API zdefiniowane przez szablon
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Mon, 04 Apr 2011 10:44:09 +0200
parents df32c1d01b8d
children
line wrap: on
line source

#!/usr/bin/python
# -*- coding: utf-8 -*-

from flask import jsonify, Module, abort, request
from flask import render_template
from mfrontend import db, utils, exceptions, decorators
api = Module(__name__)

@api.route('/getjob/')
@decorators.login_required
def get_jobs_json():
    """ Funkcja pobiera informacje o wszystkich zadaniach
        i zwraca je w formacie JSON.
    """
    return jsonify(jobs = db.get_jobs(None, None, None))

@api.route('/getnextjob/<apikey>/')
def get_first_waiting_job_template(apikey):
    """ Zwraca w formacie JSON informacje o pierwszym
        czekającym zadaniu.

        :param apikey: Klucz API.
        :returns: Dane o zadaniu w formacie JSON.
    """
    if apikey != db.config.get('Basic', 'ApiKey'):
        abort(403)
    return render_template('joblist.csv',
                           jobs = [ db.get_waiting_job() ] )

@api.route('/getjob/<int:jobid>/')
@decorators.login_required
def get_job_json(jobid):
    """ Zwraca w formacie JSON informacje o podanym zadaniu.
        
        :param jobid:   Identyfikator żądanego zadania.
        :returns:       Informacje o zadaniu w formacie JSON
    """
    # w innym przypadku zwracamy informacje o zadaniu
    return jsonify(job = db.get_job_by_id(jobid))

@api.route('/getjob/<apikey>/<int:jobid>/')
def get_job_template(apikey, jobid):
    """ Funkcja zwraca informacje o zadaniu o podanym numerze
        jobid.

        :param apikey:  Klucz API taki, jak ustawiony w config.ini
        :param jobid:   Numer identyfikacyjny zadania
        :returns:       Dane o zadaniu wyrenderowane przy pomocy
                        szablonu joblist.csv
    """
    if apikey != db.config.get('Basic', 'ApiKey'):
        abort(403)
    return render_template('joblist.csv',
                           jobs = [ db.get_job_by_id(jobid) ] )

@api.route('/modify/<apikey>/<int:jobid>/', methods=['POST'])
def modify_job(apikey, jobid):
    """ Funkcja pozwalająca na modyfikację wybranego
        zadania.
        
        :param apikey: Klucz API
        :param jobid:   Identyfikator zadania do zmodyfikowania
    """
    if apikey != db.config.get('Basic','ApiKey'):
        abort(403)
    db.edit_job(jobid, request.form)
    return "OK"