annotate 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
rev   line source
11
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
1 #!/usr/bin/python
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
2 # -*- coding: utf-8 -*-
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
3
14
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
4 from flask import jsonify, Module, abort, request
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
5 from flask import render_template
11
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
6 from mfrontend import db, utils, exceptions, decorators
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
7 api = Module(__name__)
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
8
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
9 @api.route('/getjob/')
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
10 @decorators.login_required
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
11 def get_jobs_json():
14
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
12 """ Funkcja pobiera informacje o wszystkich zadaniach
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
13 i zwraca je w formacie JSON.
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
14 """
11
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
15 return jsonify(jobs = db.get_jobs(None, None, None))
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
16
13
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
17 @api.route('/getnextjob/<apikey>/')
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
18 def get_first_waiting_job_template(apikey):
13
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
19 """ Zwraca w formacie JSON informacje o pierwszym
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
20 czekającym zadaniu.
14
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
21
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
22 :param apikey: Klucz API.
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
23 :returns: Dane o zadaniu w formacie JSON.
13
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
24 """
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
25 if apikey != db.config.get('Basic', 'ApiKey'):
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
26 abort(403)
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
27 return render_template('joblist.csv',
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
28 jobs = [ db.get_waiting_job() ] )
13
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
29
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
30 @api.route('/getjob/<int:jobid>/')
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
31 @decorators.login_required
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
32 def get_job_json(jobid):
11
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
33 """ Zwraca w formacie JSON informacje o podanym zadaniu.
14
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
34
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
35 :param jobid: Identyfikator żądanego zadania.
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
36 :returns: Informacje o zadaniu w formacie JSON
11
69ecfe51d585 Dodałem prosty prototyp API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
diff changeset
37 """
13
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
38 # w innym przypadku zwracamy informacje o zadaniu
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
39 return jsonify(job = db.get_job_by_id(jobid))
79cf8ca2a0e5 Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 11
diff changeset
40
18
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
41 @api.route('/getjob/<apikey>/<int:jobid>/')
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
42 def get_job_template(apikey, jobid):
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
43 """ Funkcja zwraca informacje o zadaniu o podanym numerze
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
44 jobid.
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
45
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
46 :param apikey: Klucz API taki, jak ustawiony w config.ini
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
47 :param jobid: Numer identyfikacyjny zadania
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
48 :returns: Dane o zadaniu wyrenderowane przy pomocy
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
49 szablonu joblist.csv
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
50 """
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
51 if apikey != db.config.get('Basic', 'ApiKey'):
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
52 abort(403)
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
53 return render_template('joblist.csv',
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
54 jobs = [ db.get_job_by_id(jobid) ] )
8dabb7e7f039 API zdefiniowane przez szablon
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 14
diff changeset
55
14
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
56 @api.route('/modify/<apikey>/<int:jobid>/', methods=['POST'])
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
57 def modify_job(apikey, jobid):
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
58 """ Funkcja pozwalająca na modyfikację wybranego
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
59 zadania.
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
60
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
61 :param apikey: Klucz API
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
62 :param jobid: Identyfikator zadania do zmodyfikowania
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
63 """
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
64 if apikey != db.config.get('Basic','ApiKey'):
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
65 abort(403)
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
66 db.edit_job(jobid, request.form)
df32c1d01b8d Dodałem edycję zadań przez POST, napisałem coś w rodzaju dokumentacji z nudów
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents: 13
diff changeset
67 return "OK"