comparison frontend/mfrontend/db.py @ 9:9a0a9fa7f91d

Dodałem prototyp listy zadań w systemie
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Mon, 28 Feb 2011 19:25:51 +0100
parents d86794939fe4
children 58a993029d9f
comparison
equal deleted inserted replaced
8:e00d04093c60 9:9a0a9fa7f91d
8 from contextlib import closing 8 from contextlib import closing
9 import os.path 9 import os.path
10 10
11 config = ConfigParser.SafeConfigParser() 11 config = ConfigParser.SafeConfigParser()
12 config.read('config.ini') 12 config.read('config.ini')
13
14 ## Opisy wszystkich stanów zadań
15 states = {0 : u'Oczekujące',
16 1 : u'Trwa',
17 2 : u'Zakończone'}
13 18
14 def connect_db(): 19 def connect_db():
15 """Funkcja łącząca się z bazą danych.""" 20 """Funkcja łącząca się z bazą danych."""
16 g.db = sqlite3.connect(config.get('Basic','Database')) 21 g.db = sqlite3.connect(config.get('Basic','Database'))
17 22
81 # teraz właściwe dodawanie danych do bazy 86 # teraz właściwe dodawanie danych do bazy
82 query_db('INSERT INTO users (username, password, activated) VALUES (?,?,0);', 87 query_db('INSERT INTO users (username, password, activated) VALUES (?,?,0);',
83 [username, hashedPassword]) 88 [username, hashedPassword])
84 g.db.commit() 89 g.db.commit()
85 90
91 def get_jobs(owner_id, hash, state):
92 """Funkcja pobiera informacje o zadaniach. Możliwe jest filtrowanie zadań.
93 @param owner_id Pobiera informacje jedynie o zadaniach stworzonych przez
94 użytkownika o podanym id. Jeśli parametr ten jest ustawiony
95 na None, to pobiera zadania wszystkich użytkowników.
96 @param hash Pobiera informacje o zadaniu o podanym hashu. Jeśli jest ustawione
97 na None, to pobiera informacje o wszystkich hashach.
98 @param state Pobiera informacje o zadaniach będących w określonym stanie.
99 Jeśli jest ustawione na None, to pobiera informację o zadaniach
100 znajdujących się w każdym stanie.
101 @return Informacje o zadaniach z uwzględnieniem podanych w parametrach filtrów.
102 """
103 parameters = []
104 sqlLine = ""
105 if owner_id is not None:
106 sqlLine += "owner_id = ?"
107 parameters.append(owner_id)
108 if hash is not None:
109 if not sqlLine == "":
110 sqlLine += " AND "
111 sqlLine += "hash = ?"
112 parameters.append(hash)
113 if state is not None:
114 if not sqlLine == "":
115 sqlLine += " AND "
116 sqlLine += "state = ?"
117 parameters.append(state)
118 if sqlLine == "":
119 sqlLine = "select * from jobs;"
120 else:
121 sqlLine = "select * from jobs where " + sqlLine + ";"
122 result = query_db(sqlLine,parameters)
123 # teraz trochę upiększamy wynik, np. pobierając nazwy użytkowników
124 for job in result:
125 job['username'] = get_user_name(job['owner_id'])
126 job['state_text'] = states[job['state']]
127 return result
128
129 def get_user_name(user_id):
130 """ Funkcja pobiera nazwę użytkownika o podanym identyfikatorze.
131 @param user_id Identyfikator użytkownika, którego nazwa jest pożądana.
132 @return String zawierający nazwę użytkownika, lub None, jeśli użytkownik nie istnieje.
133 """
134 return query_db("SELECT username FROM users WHERE id = ?;",
135 [user_id], one=True)["username"]
136