Mercurial > kraina_muminkow
changeset 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 | e00d04093c60 |
children | 58a993029d9f |
files | frontend/mfrontend/__init__.py frontend/mfrontend/db.py frontend/mfrontend/templates/joblist.html frontend/mfrontend/templates/layout.html frontend/mfrontend/views/jobcontrol.py |
diffstat | 5 files changed, 93 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- 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)
--- 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"] +
--- /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 %} +<h2>Lista zadań</h2> +<table border="1"> + <tr> + <th>id</th> + <th>Właściciel</th> + <th>Hash</th> + <th>Opis</th> + <th>Stan</th> + <th>Wynik</th> + </tr> + {% for job in jobs %} + <tr> + <td>{{ job.id }}</td> + <td>{{ job.username }}</td> + <td>{{ job.hash }}</td> + <td>{{ job.label }}</td> + <td>{{ job.state_text }}</td> + <td>{{ job.result }}</td> + </tr> + {% endfor %} +</table> +{% endblock %}
--- 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 @@ <h1>NO HEJ</h1> <div class=metanav> {% if not session.logged_in %} - <a href="{{ url_for('login') }}">Zaloguj się</a> | - <a href="{{ url_for('register') }}">Załóż konto</a> + <a href="{{ url_for('frontend.login') }}">Zaloguj się</a> | + <a href="{{ url_for('frontend.register') }}">Załóż konto</a> {% else %} - <a href="{{ url_for('logout') }}">Wyloguj się</a> + <a href="{{ url_for('frontend.logout') }}">Wyloguj się</a> | + <a href="{{ url_for('jobcontrol.index') }}">Lista zadań</a> {% endif %} </div> {% for message in get_flashed_messages() %}
--- /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)