Mercurial > kraina_muminkow
annotate frontend/mfrontend/db.py @ 25:3a26da290650
merge
author | Michał Rudowicz <michal.rudowicz@fl9.eu> |
---|---|
date | Mon, 09 May 2011 10:49:01 +0200 |
parents | b75a9ae3a060 9916d46ff096 |
children | 28eb82047167 |
rev | line source |
---|---|
1 | 1 #!/usr/bin/python |
2 # -*- coding: utf-8 -*- | |
3 | |
4 import sqlite3 | |
5 from flask import g | |
6 import ConfigParser | |
6
27d63cac76ac
Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
5
diff
changeset
|
7 from mfrontend import utils, exceptions |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
8 from contextlib import closing |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
9 import os.path |
1 | 10 |
11 config = ConfigParser.SafeConfigParser() | |
12 config.read('config.ini') | |
13 | |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
14 ## Opisy wszystkich stanów zadań |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
15 states = {0 : u'Oczekujące', |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
16 1 : u'Trwa', |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
17 2 : u'Zakończone'} |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
18 |
1 | 19 def connect_db(): |
20 """Funkcja łącząca się z bazą danych.""" | |
21 g.db = sqlite3.connect(config.get('Basic','Database')) | |
22 | |
23 def disconnect_db(): | |
24 """Funkcja zamykająca połączenie z bazą danych""" | |
25 g.db.close() | |
26 | |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
27 def init_db(): |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
28 """Funkcja przeprowadzająca inicjalizację bazy danych zgodnie |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
29 z plikiem schema.sql. Na podstawie kodu ze strony |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
30 http://flask.pocoo.org/docs/patterns/sqlite3/#initial-schemas |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
31 Instalacja powiedzie się tylko wtedy, gdy w obecnym katalogu |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
32 nie istnieje plik '.installed'. Plik taki jest tworzony |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
33 po każdej instalacji, aby zapobiec operacjom na |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
34 istniejących bazach. |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
35 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
36 :returns: True, jeśli instalacja została wykonana, |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
37 False, jeśli plik '.installed' istnieje. |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
38 """ |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
39 if not os.path.isfile('.installed'): |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
40 with open('schema.sql', 'r') as f: |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
41 g.db.cursor().executescript(f.read()) |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
42 g.db.commit() |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
43 open('.installed', 'w').close() |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
44 return True |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
45 else: |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
46 return False |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
47 |
1 | 48 def query_db(query, args=(), one=False): |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
49 """ Funkcja ułatwiająca odpytywanie bazy danych, źródło: |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
50 http://flask.pocoo.org/docs/patterns/sqlite3/ |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
51 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
52 :param query: Zapytanie SQL. Wszelkie niewiadome należy |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
53 zastępować znakiem zapytania ("?"), a |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
54 wartości umieszczać na liście w parametrze |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
55 args. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
56 :param args: Lista zawierająca argumenty do zappytania. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
57 :param one: Jeśli ustawione na True, to funkcja zwróci |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
58 tylko jeden element z bazy, w przeciwnym wypadku |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
59 wszystkie spełniające warunek zapytania. |
1 | 60 """ |
61 cur = g.db.execute(query, args) | |
62 rv = [dict((cur.description[idx][0], value) | |
63 for idx, value in enumerate(row)) for row in cur.fetchall()] | |
64 return (rv[0] if rv else None) if one else rv | |
4 | 65 |
66 def user_can_login(username, password): | |
67 """Funkcja sprawdzająca, czy podany użytkownik może sie zalogować | |
68 po podaniu danego w argumencie hasła. | |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
69 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
70 :param username: Nazwa użytkownika |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
71 :param password: Hasło |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
72 :returns: Prawda, jeśli podane dane są akceptowalne, w przeciwnym |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
73 razie fałsz. |
4 | 74 """ |
75 user = query_db('select * from users where username = ?', | |
76 [username], one=True) | |
77 if user is None: # Brak użytkownika o takiej nazwie | |
78 return False | |
79 if user['password'] == utils.hashPassword(password): | |
6
27d63cac76ac
Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
5
diff
changeset
|
80 if not user['activated']: |
27d63cac76ac
Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
5
diff
changeset
|
81 raise exceptions.UserNotActivated() |
27d63cac76ac
Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
5
diff
changeset
|
82 return True # Jeśli aktywny i hasło dobre, to wpuszczamy |
4 | 83 # Najwyraźniej jest taki użytkownik, ale hasło się nie zgadza |
84 return False | |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
85 |
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
86 def register_user(username, password): |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
87 """ Funkcja rejestrująca nowego użytkownika w systemie. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
88 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
89 :param username: Nazwa nowego użytkownika |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
90 :param password: Hasło w czystym tekście, funkcja sama |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
91 zajmie się hashowaniem |
5
3ba60dfc1d64
Dodałem prosty instalator aplikacji tworzący bazę danych ze schematu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
4
diff
changeset
|
92 """ |
7
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
93 user = query_db('select * from users where username = ?;', |
6
27d63cac76ac
Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
5
diff
changeset
|
94 [username], one=True) |
27d63cac76ac
Konta użytkowników muszą być aktywowane + ładniejsze wyświetlanie błędów przy logowaniu
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
5
diff
changeset
|
95 if user is not None: |
7
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
96 raise exceptions.UserExists |
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
97 hashedPassword = utils.hashPassword(password) |
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
98 # teraz właściwe dodawanie danych do bazy |
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
99 query_db('INSERT INTO users (username, password, activated) VALUES (?,?,0);', |
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
100 [username, hashedPassword]) |
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
101 g.db.commit() |
d86794939fe4
Rejestracja użytkowników
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
6
diff
changeset
|
102 |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
103 def get_jobs(owner_id, hash, state): |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
104 """ Funkcja pobiera informacje o zadaniach. Możliwe jest filtrowanie zadań. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
105 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
106 :param owner_id: Pobiera informacje jedynie o zadaniach stworzonych przez |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
107 użytkownika o podanym id. Jeśli parametr ten jest ustawiony |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
108 na None, to pobiera zadania wszystkich użytkowników. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
109 :param hash: Pobiera informacje o zadaniu o podanym hashu. Jeśli jest ustawione |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
110 na None, to pobiera informacje o wszystkich hashach. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
111 :param state: Pobiera informacje o zadaniach będących w określonym stanie. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
112 Jeśli jest ustawione na None, to pobiera informację o zadaniach |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
113 znajdujących się w każdym stanie. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
114 :returns: Informacje o zadaniach z uwzględnieniem podanych w |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
115 parametrach filtrów. |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
116 """ |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
117 parameters = [] |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
118 sqlLine = "" |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
119 if owner_id is not None: |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
120 sqlLine += "owner_id = ?" |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
121 parameters.append(owner_id) |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
122 if hash is not None: |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
123 if not sqlLine == "": |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
124 sqlLine += " AND " |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
125 sqlLine += "hash = ?" |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
126 parameters.append(hash) |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
127 if state is not None: |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
128 if not sqlLine == "": |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
129 sqlLine += " AND " |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
130 sqlLine += "state = ?" |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
131 parameters.append(state) |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
132 if sqlLine == "": |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
133 sqlLine = "select * from jobs;" |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
134 else: |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
135 sqlLine = "select * from jobs where " + sqlLine + ";" |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
136 result = query_db(sqlLine,parameters) |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
137 # teraz trochę upiększamy wynik, np. pobierając nazwy użytkowników |
22
9916d46ff096
Wrzucony layout - zostały jakieś drobne poprawki + zmiana źródeł (nie można np utworzyć foldery /pic/ i z niego ściągać obrazków)
mild@mild-laptop
parents:
16
diff
changeset
|
138 index = 0 |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
139 for job in result: |
22
9916d46ff096
Wrzucony layout - zostały jakieś drobne poprawki + zmiana źródeł (nie można np utworzyć foldery /pic/ i z niego ściągać obrazków)
mild@mild-laptop
parents:
16
diff
changeset
|
140 job['index'] = index |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
141 job['username'] = get_user_name(job['owner_id']) |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
142 job['state_text'] = states[job['state']] |
22
9916d46ff096
Wrzucony layout - zostały jakieś drobne poprawki + zmiana źródeł (nie można np utworzyć foldery /pic/ i z niego ściągać obrazków)
mild@mild-laptop
parents:
16
diff
changeset
|
143 index = index + 1 |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
144 return result |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
145 |
13
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
146 def get_waiting_job(): |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
147 """ Funkcja zwraca dane o najstarszym oczekującym zadaniu. |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
148 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
149 :returns: Dane o zadaniu. |
13
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
150 """ |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
151 return query_db("SELECT * FROM jobs WHERE state = 0 ORDER BY id ASC",[],one=True) |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
152 |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
153 def get_job_by_id(job_id): |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
154 """ Funkcja zwraca wszystkie informacje o wybranym zadaniu na podstawie |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
155 numeru identyfikacyjnego. |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
156 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
157 :param job_id: Identyfikator żądanego zadania |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
158 :returns: Informacje o żądanym zadaniu.;q |
13
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
159 """ |
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
|
160 return query_db("SELECT * FROM jobs WHERE id = ?;", |
13
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
161 [job_id], one=True) |
79cf8ca2a0e5
Dodałem pobieranie informacji o podanym zadaniu oraz pobieranie zadania oczekującego poprzez API
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
10
diff
changeset
|
162 |
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
|
163 def edit_job(job_id, options): |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
164 """ Funkcja modyfikująca właściwości zadania o podanym identyfikatorze. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
165 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
166 :param job_id: Identyfikator zadania, które chcemy zmodyfikować. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
167 :param options: Słownik z nowymi wartościami kolumn w tabeli. |
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
|
168 """ |
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
|
169 # klucze, których zmianę dopuszczamy |
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
|
170 keys = ["label", "state", "result", "percent", "last_checked"] |
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
|
171 for key in keys: |
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
|
172 if key in options: |
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
|
173 query_db("UPDATE jobs SET " + key + " = :value WHERE id = :id", |
23
b75a9ae3a060
Poprawiony błąd przy edycji zadań przez POST
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
16
diff
changeset
|
174 {"value":options[key],"id":job_id}) |
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
|
175 g.db.commit() |
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
|
176 |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
177 def get_user_name(user_id): |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
178 """ Funkcja pobiera nazwę użytkownika o podanym identyfikatorze. |
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
|
179 |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
180 :param user_id: Identyfikator użytkownika, którego nazwa jest pożądana. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
181 :returns: String zawierający nazwę użytkownika, lub None, |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
182 jeśli użytkownik nie istnieje. |
9
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
183 """ |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
184 return query_db("SELECT username FROM users WHERE id = ?;", |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
185 [user_id], one=True)["username"] |
9a0a9fa7f91d
Dodałem prototyp listy zadań w systemie
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
7
diff
changeset
|
186 |
10
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
187 def get_user_id(user_name): |
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
188 """ Funkcja pobiera identyfikator użytkownika na podstawie nazwy. |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
189 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
190 :param user_name: Nazwa użytkownika, którego indentyfikator ma zostać zwrócony. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
191 :returns: Identyfikator użytkownika. |
10
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
192 """ |
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
193 return query_db("SELECT id FROM users WHERE username = ?;", |
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
194 [user_name], one=True)["id"] |
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
195 |
16
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
196 def new_job(id, label, hash, method): |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
197 """ Funkcja tworzy nowe zadanie i zapisuje je w bazie danych. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
198 |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
199 :param id: Identyfikator użytkownika, który ma zostać oznaczony |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
200 jako właściciel zadania. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
201 :param label: Opis zadania. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
202 :param hash: Hash do zdekodowania. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
203 :param method: Metoda łamania haseł. |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
204 """ |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
205 query_db("INSERT INTO jobs (owner_id, label, hash, method) VALUES (?,?,?,?);", |
c87f82a15606
Dopisałem co nieco do dokumentacji i małę poprawki w zarządzainu zadaniami
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
14
diff
changeset
|
206 [id, label, hash,method]) |
10
58a993029d9f
Dodawanie nowych zadań i dekorator sprawdzający zalogowanie.
Michał Rudowicz <michal.rudowicz@fl9.eu>
parents:
9
diff
changeset
|
207 g.db.commit() |