diff 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
line wrap: on
line diff
--- a/frontend/mfrontend/db.py	Mon Feb 28 12:08:57 2011 +0100
+++ b/frontend/mfrontend/db.py	Mon Feb 28 19:25:51 2011 +0100
@@ -11,6 +11,11 @@
 config = ConfigParser.SafeConfigParser()
 config.read('config.ini')
 
+## Opisy wszystkich stanów zadań
+states = {0 : u'Oczekujące',
+          1 : u'Trwa',
+          2 : u'Zakończone'}
+
 def connect_db():
     """Funkcja łącząca się z bazą danych."""
     g.db = sqlite3.connect(config.get('Basic','Database'))
@@ -83,3 +88,49 @@
             [username, hashedPassword])
     g.db.commit()
 
+def get_jobs(owner_id, hash, state):
+    """Funkcja pobiera informacje o zadaniach. Możliwe jest filtrowanie zadań.
+       @param owner_id  Pobiera informacje jedynie o zadaniach stworzonych przez
+                        użytkownika o podanym id. Jeśli parametr ten jest ustawiony
+                        na None, to pobiera zadania wszystkich użytkowników.
+       @param hash      Pobiera informacje o zadaniu o podanym hashu. Jeśli jest ustawione
+                        na None, to pobiera informacje o wszystkich hashach.
+       @param state     Pobiera informacje o zadaniach będących w określonym stanie.
+                        Jeśli jest ustawione na None, to pobiera informację o zadaniach
+                        znajdujących się w każdym stanie.
+       @return Informacje o zadaniach z uwzględnieniem podanych w parametrach filtrów.
+    """
+    parameters = []
+    sqlLine = ""
+    if owner_id is not None:
+        sqlLine += "owner_id = ?"
+        parameters.append(owner_id)
+    if hash is not None:
+        if not sqlLine == "":
+            sqlLine += " AND "
+        sqlLine += "hash = ?"
+        parameters.append(hash)
+    if state is not None:
+        if not sqlLine == "":
+            sqlLine += " AND "
+        sqlLine += "state = ?"
+        parameters.append(state)
+    if sqlLine == "":
+        sqlLine = "select * from jobs;"
+    else:
+        sqlLine = "select * from jobs where " + sqlLine + ";"
+    result = query_db(sqlLine,parameters)
+    # teraz trochę upiększamy wynik, np. pobierając nazwy użytkowników
+    for job in result:
+        job['username'] = get_user_name(job['owner_id'])
+        job['state_text'] = states[job['state']]
+    return result
+
+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.
+        @return String zawierający nazwę użytkownika, lub None, jeśli użytkownik nie istnieje.
+    """
+    return query_db("SELECT username FROM users WHERE id = ?;",
+                    [user_id], one=True)["username"]
+