# HG changeset patch # User Michał Rudowicz # Date 1298917551 -3600 # Node ID 9a0a9fa7f91d6d00eb34018b64448098798aaaf9 # Parent e00d04093c605c64e518f8937183b535744b327c Dodałem prototyp listy zadań w systemie diff -r e00d04093c60 -r 9a0a9fa7f91d frontend/mfrontend/__init__.py --- a/frontend/mfrontend/__init__.py Mon Feb 28 12:08:57 2011 +0100 +++ b/frontend/mfrontend/__init__.py Mon Feb 28 19:25:51 2011 +0100 @@ -4,6 +4,7 @@ import flask from ConfigParser import SafeConfigParser, NoSectionError from mfrontend.views.frontend import frontend +from mfrontend.views.jobcontrol import jobcontrol from mfrontend import db, utils @@ -22,6 +23,7 @@ app = flask.Flask(__name__) app.register_module(frontend) +app.register_module(jobcontrol, url_prefix="/jobs") app.config.from_object(__name__) app.config.from_envvar('MFRONTEND_SETTINGS', silent=True) diff -r e00d04093c60 -r 9a0a9fa7f91d frontend/mfrontend/db.py --- 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"] + diff -r e00d04093c60 -r 9a0a9fa7f91d frontend/mfrontend/templates/joblist.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/templates/joblist.html Mon Feb 28 19:25:51 2011 +0100 @@ -0,0 +1,24 @@ +{% extends "layout.html" %} +{% block body %} +

Lista zadań

+ + + + + + + + + + {% for job in jobs %} + + + + + + + + + {% endfor %} +
idWłaścicielHashOpisStanWynik
{{ job.id }}{{ job.username }}{{ job.hash }}{{ job.label }}{{ job.state_text }}{{ job.result }}
+{% endblock %} diff -r e00d04093c60 -r 9a0a9fa7f91d frontend/mfrontend/templates/layout.html --- a/frontend/mfrontend/templates/layout.html Mon Feb 28 12:08:57 2011 +0100 +++ b/frontend/mfrontend/templates/layout.html Mon Feb 28 19:25:51 2011 +0100 @@ -4,10 +4,11 @@

NO HEJ

{% if not session.logged_in %} - Zaloguj się | - Załóż konto + Zaloguj się | + Załóż konto {% else %} - Wyloguj się + Wyloguj się | + Lista zadań {% endif %}
{% for message in get_flashed_messages() %} diff -r e00d04093c60 -r 9a0a9fa7f91d frontend/mfrontend/views/jobcontrol.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/frontend/mfrontend/views/jobcontrol.py Mon Feb 28 19:25:51 2011 +0100 @@ -0,0 +1,12 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- + +from flask import Module, render_template, request, url_for +from flask import escape, session, redirect, flash, abort +from mfrontend import db, utils, exceptions +jobcontrol = Module(__name__) + +@jobcontrol.route('/') +def index(): + jobs = db.get_jobs(None, None, None) + return render_template('joblist.html', jobs=jobs)