# HG changeset patch # User Michał Rudowicz # Date 1301677328 -7200 # Node ID 79cf8ca2a0e5bcbd7afd181f36eb38e7a6795c63 # Parent 5b4688e1964c2f5eb48ff912469dd3a80517a77e Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API diff -r 5b4688e1964c -r 79cf8ca2a0e5 frontend/config.ini --- a/frontend/config.ini Sun Mar 27 17:13:44 2011 +0200 +++ b/frontend/config.ini Fri Apr 01 19:02:08 2011 +0200 @@ -7,3 +7,5 @@ Debug = 1 # Algorytm wyliczający hashe dla haseł HashCrypto = sha1 +# Klucz API +ApiKey = TajnyKluczApi diff -r 5b4688e1964c -r 79cf8ca2a0e5 frontend/mfrontend/db.py --- a/frontend/mfrontend/db.py Sun Mar 27 17:13:44 2011 +0200 +++ b/frontend/mfrontend/db.py Fri Apr 01 19:02:08 2011 +0200 @@ -126,6 +126,21 @@ job['state_text'] = states[job['state']] return result +def get_waiting_job(): + """ Funkcja zwraca dane o najstarszym oczekującym zadaniu. + @return Dane o zadaniu. + """ + return query_db("SELECT * FROM jobs WHERE state = 0 ORDER BY id ASC",[],one=True) + +def get_job_by_id(job_id): + """ Funkcja zwraca wszystkie informacje o wybranym zadaniu na podstawie + numeru identyfikacyjnego. + @param job_id Identyfikator żądanego zadania + @return Informacje o żądanym zadaniu. + """ + return query_db("SELECT * FROM jobs WHERE id = ?", + [job_id], one=True) + def get_user_name(user_id): """ Funkcja pobiera nazwę użytkownika o podanym identyfikatorze. @param user_id Identyfikator użytkownika, którego nazwa jest pożądana. diff -r 5b4688e1964c -r 79cf8ca2a0e5 frontend/mfrontend/utils.py --- a/frontend/mfrontend/utils.py Sun Mar 27 17:13:44 2011 +0200 +++ b/frontend/mfrontend/utils.py Fri Apr 01 19:02:08 2011 +0200 @@ -20,6 +20,7 @@ config.set('Basic', 'Debug', '0') config.set('Basic', 'Secret_Key', randomString(10)) config.set('Basic', 'HashCrypto', 'sha512') + config.set('Basic', 'ApiKey', randomString(10)) with open('config.ini', 'wb') as configfile: config.write(configfile) diff -r 5b4688e1964c -r 79cf8ca2a0e5 frontend/mfrontend/views/api.py --- a/frontend/mfrontend/views/api.py Sun Mar 27 17:13:44 2011 +0200 +++ b/frontend/mfrontend/views/api.py Fri Apr 01 19:02:08 2011 +0200 @@ -1,22 +1,38 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -from flask import jsonify, Module +from flask import jsonify, Module, abort from mfrontend import db, utils, exceptions, decorators api = Module(__name__) -@api.route('/getjob/') -@decorators.login_required +@api.route('/getjob//') def get_jobs(): + if apikey != db.config.get('Basic', 'ApiKey'): + abort(403) return jsonify(jobs = db.get_jobs(None, None, None)) -@api.route('/getjob//') -@decorators.login_required -def get_job(jobid): +@api.route('/getnextjob//') +def get_first_waiting_job(apikey): + """ Zwraca w formacie JSON informacje o pierwszym + czekającym zadaniu. + @param apikey Klucz API. + @return Dane o zadaniu w formacie JSON. + """ + if apikey != db.config.get('Basic', 'ApiKey'): + abort(403) + return jsonify(job = db.get_waiting_job()) + +@api.route('/getjob///') +def get_job(apikey, jobid): """ Zwraca w formacie JSON informacje o podanym zadaniu. Uwaga: użytkownik musi być zalogowany, aby móc pobrać informację o zadaniu. @param jobid Identyfikator żądanego zadania. @return Informacje o zadaniu w formacie JSON. """ - pass #TODO! + # 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)) + diff -r 5b4688e1964c -r 79cf8ca2a0e5 frontend/mfrontend/views/jobcontrol.py --- a/frontend/mfrontend/views/jobcontrol.py Sun Mar 27 17:13:44 2011 +0200 +++ b/frontend/mfrontend/views/jobcontrol.py Fri Apr 01 19:02:08 2011 +0200 @@ -24,3 +24,4 @@ except Exception as e: flash(e) return render_template('newjob.html') +