Mercurial > kraina_muminkow
changeset 13:79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
author | Michał Rudowicz <michal.rudowicz@fl9.eu> |
---|---|
date | Fri, 01 Apr 2011 19:02:08 +0200 |
parents | 5b4688e1964c |
children | df32c1d01b8d |
files | frontend/config.ini frontend/mfrontend/db.py frontend/mfrontend/utils.py frontend/mfrontend/views/api.py frontend/mfrontend/views/jobcontrol.py |
diffstat | 5 files changed, 42 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- 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
--- 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.
--- 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)
--- 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/<apikey>/') def get_jobs(): + if apikey != db.config.get('Basic', 'ApiKey'): + abort(403) return jsonify(jobs = db.get_jobs(None, None, None)) -@api.route('/getjob/<int:jobid>/') -@decorators.login_required -def get_job(jobid): +@api.route('/getnextjob/<apikey>/') +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/<apikey>/<int:jobid>/') +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)) +