diff 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 diff
--- a/frontend/mfrontend/views/api.py	Sun Apr 03 14:07:19 2011 +0200
+++ b/frontend/mfrontend/views/api.py	Mon Apr 04 10:44:09 2011 +0200
@@ -2,20 +2,20 @@
 # -*- 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/<apikey>/')
-def get_jobs():
+@api.route('/getjob/')
+@decorators.login_required
+def get_jobs_json():
     """ Funkcja pobiera informacje o wszystkich zadaniach
         i zwraca je w formacie JSON.
     """
-    if apikey != db.config.get('Basic', 'ApiKey'):
-        abort(403)
     return jsonify(jobs = db.get_jobs(None, None, None))
 
 @api.route('/getnextjob/<apikey>/')
-def get_first_waiting_job(apikey):
+def get_first_waiting_job_template(apikey):
     """ Zwraca w formacie JSON informacje o pierwszym
         czekającym zadaniu.
 
@@ -24,21 +24,35 @@
     """
     if apikey != db.config.get('Basic', 'ApiKey'):
         abort(403)
-    return jsonify(job = db.get_waiting_job())
+    return render_template('joblist.csv',
+                           jobs = [ db.get_waiting_job() ] )
 
-@api.route('/getjob/<apikey>/<int:jobid>/')
-def get_job(apikey, jobid):
+@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.
-        :param apikey: Klucz API
+        :param jobid:   Identyfikator żądanego zadania.
+        :returns:       Informacje o zadaniu w formacie JSON
     """
-    # jeśli klucz API jest niepoprawny, przerywamy
-    if apikey != db.config.get('Basic','ApiKey'):
-        abort(403)
     # 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