changeset 25:3a26da290650

merge
author Michał Rudowicz <michal.rudowicz@fl9.eu>
date Mon, 09 May 2011 10:49:01 +0200
parents 3a2876457625 (diff) 9916d46ff096 (current diff)
children f73176cba39b
files frontend/mfrontend/db.py
diffstat 46 files changed, 392 insertions(+), 248 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/api.rst	Mon May 09 10:49:01 2011 +0200
@@ -0,0 +1,92 @@
+Porady dla osób korzystających z API
+====================================
+
+Pobieranie informacji w formacie JSON
+-------------------------------------
+
+Pobieranie informacji o zadaniu o danym ID
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Przy domyślnej konfiguracji pobranie danych o zadaniu o podanym ID wymaga
+wykonania polecenia GET na elemencie pod adresem
+``/api/getjob/<ID>/``, gdzie ID jest identyfikatorem zadania
+
+Serwer aplikacji powinien zwrócić dokument w formacie JSON zawierający
+wszystkie dane znajdujące się w bazie, dotyczące tego zadania.
+
+Pobieranie informacji o wszystkich zadaniach
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+``/api/getjob/`` , gdzie *apikey* ma takie samo znaczenie jak
+powyżej.
+
+Pobieranie informacji w formacie zdefiniowanym przez szablon
+------------------------------------------------------------
+
+Klucz API
+^^^^^^^^^
+
+Klucz API, w URLach określany jako ``<apikey>``, jest kluczem pozwalającym na dostęp
+do informacji udostępnianych przez API i nie powinien być udostepniany nikomu poza
+osobami odpowiedzialnymi za aplikację rozproszoną korzystającą z serwera aplikacji.
+Klucz znajduje się w :ref:`config-ini`.
+
+Szablon pliku
+^^^^^^^^^^^^^
+
+Szablon pliku znajduje się w katalogu ``mfrontend/templates/joblist.csv`` i może być
+dowolnie dostosowywany według potrzeb serwera aplikacji.
+
+Domyślny szablon pliku:
+
+.. code-block:: jinja
+
+    {% for job in jobs %}
+    {{job.id}};{{job.hash}};{{job.method}};
+    {% endfor %}
+
+W razie potrzeby należy dodać kolejne pola w analogiczny sposób.
+
+Pobieranie jednego oczekującego zadania
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+``/api/getnextjob/<apikey>/`` pobiera następne oczekujące działanie (wg numeru ID,
+najpierw mniejsze wartości). *Ważne*: samo pobranie informacji **nie** zmienia
+statusu zadania, trzeba to zrobić ręcznie za pomocą edycji zadania.
+
+Pobieranie informacji o zadaniu o danym ID
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Przy domyślnej konfiguracji pobranie danych o zadaniu o podanym ID wymaga
+wykonania polecenia GET na elemencie pod adresem
+``/api/getjob/<apikey>/<jobid>/``, gdzie ID jest identyfikatorem zadania
+
+Serwer aplikacji powinien zwrócić dokument w formacie zdefiniowanym przez szablon
+zawierający wszystkie dane znajdujące się w bazie dotyczące tego zadania.
+
+
+Modyfikowanie danych zadania
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Należy wykonać *POST* na URI ``/api/modify/<apikey/<jobid>/``, gdzie:
+
+apikey
+    Klucz API z pliku config.ini
+ID
+    Identyfikator zadania
+
+Natomiast jako dane POST należy przesłać nowe wartości, które chcemy wpisać do
+bazy, przykładowo następująca linia poleceń programu CURL:
+
+.. code-block:: bash
+
+    $ curl --data "state=10&percent=40" localhost:5000/api/modify/apikey/1/
+
+spowoduje ustawienie wartości ``state`` na 10 i ``percent`` na 40 przy zadaniu
+o identyfikatorze ``1``.
+
+Funkcje wykorzystywane w API
+----------------------------
+
+.. automodule:: mfrontend.views.api
+    :members:
--- a/frontend/doc/api.txt	Mon May 09 01:50:00 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,92 +0,0 @@
-Porady dla osób korzystających z API
-====================================
-
-Pobieranie informacji w formacie JSON
--------------------------------------
-
-Pobieranie informacji o zadaniu o danym ID
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Przy domyślnej konfiguracji pobranie danych o zadaniu o podanym ID wymaga
-wykonania polecenia GET na elemencie pod adresem
-``/api/getjob/<ID>/``, gdzie ID jest identyfikatorem zadania
-
-Serwer aplikacji powinien zwrócić dokument w formacie JSON zawierający
-wszystkie dane znajdujące się w bazie, dotyczące tego zadania.
-
-Pobieranie informacji o wszystkich zadaniach
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-``/api/getjob/`` , gdzie *apikey* ma takie samo znaczenie jak
-powyżej.
-
-Pobieranie informacji w formacie zdefiniowanym przez szablon
-------------------------------------------------------------
-
-Klucz API
-^^^^^^^^^
-
-Klucz API, w URLach określany jako ``<apikey>``, jest kluczem pozwalającym na dostęp
-do informacji udostępnianych przez API i nie powinien być udostepniany nikomu poza
-osobami odpowiedzialnymi za aplikację rozproszoną korzystającą z serwera aplikacji.
-Klucz znajduje się w :ref:`config-ini`.
-
-Szablon pliku
-^^^^^^^^^^^^^
-
-Szablon pliku znajduje się w katalogu ``mfrontend/templates/joblist.csv`` i może być
-dowolnie dostosowywany według potrzeb serwera aplikacji.
-
-Domyślny szablon pliku:
-
-.. code-block:: jinja
-
-    {% for job in jobs %}
-    {{job.id}};{{job.hash}};{{job.method}};
-    {% endfor %}
-
-W razie potrzeby należy dodać kolejne pola w analogiczny sposób.
-
-Pobieranie jednego oczekującego zadania
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-``/api/getnextjob/<apikey>/`` pobiera następne oczekujące działanie (wg numeru ID,
-najpierw mniejsze wartości). *Ważne*: samo pobranie informacji **nie** zmienia
-statusu zadania, trzeba to zrobić ręcznie za pomocą edycji zadania.
-
-Pobieranie informacji o zadaniu o danym ID
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Przy domyślnej konfiguracji pobranie danych o zadaniu o podanym ID wymaga
-wykonania polecenia GET na elemencie pod adresem
-``/api/getjob/<apikey>/<jobid>/``, gdzie ID jest identyfikatorem zadania
-
-Serwer aplikacji powinien zwrócić dokument w formacie zdefiniowanym przez szablon
-zawierający wszystkie dane znajdujące się w bazie dotyczące tego zadania.
-
-
-Modyfikowanie danych zadania
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-
-Należy wykonać *POST* na URI ``/api/modify/<apikey/<jobid>/``, gdzie:
-
-apikey
-    Klucz API z pliku config.ini
-ID
-    Identyfikator zadania
-
-Natomiast jako dane POST należy przesłać nowe wartości, które chcemy wpisać do
-bazy, przykładowo następująca linia poleceń programu CURL:
-
-.. code-block:: bash
-
-    $ curl --data "state=10&percent=40" localhost:5000/api/modify/apikey/1/
-
-spowoduje ustawienie wartości ``state`` na 10 i ``percent`` na 40 przy zadaniu
-o identyfikatorze ``1``.
-
-Funkcje wykorzystywane w API
-----------------------------
-
-.. automodule:: mfrontend.views.api
-    :members:
--- a/frontend/doc/conf.py	Mon May 09 01:50:00 2011 +0200
+++ b/frontend/doc/conf.py	Mon May 09 10:49:01 2011 +0200
@@ -31,7 +31,7 @@
 templates_path = ['_templates']
 
 # The suffix of source filenames.
-source_suffix = '.txt'
+source_suffix = '.rst'
 
 # The encoding of source files.
 #source_encoding = 'utf-8-sig'
--- a/frontend/doc/config.ini	Mon May 09 01:50:00 2011 +0200
+++ b/frontend/doc/config.ini	Mon May 09 10:49:01 2011 +0200
@@ -1,7 +1,7 @@
 [Basic]
 database = baza.sqlite
 debug = 0
-secret_key = xyeURm3nG7
+secret_key = hO9jaJ3thQ
 hashcrypto = sha512
-apikey = bCVqxeFexh
+apikey = K63FRXtxkX
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/config.rst	Mon May 09 10:49:01 2011 +0200
@@ -0,0 +1,38 @@
+.. _config-ini:
+
+Plik konfiguracyjny
+===================
+
+Przykładowy plik konfiguracyjny
+-------------------------------
+.. code-block:: ini
+
+    [Basic]
+    # W przypadku sqlite, ścieżka do pliku bazy
+    Database = baza.sqlite
+    # Wygenerować losowy dla każdej instalacji bazy
+    Secret_Key = TakBardzoTajne
+    # Dla poważnej instalacji ustawić na 0
+    Debug = 1
+    # Algorytm wyliczający hashe dla haseł
+    HashCrypto = sha1
+    # Klucz API
+    ApiKey = apikey
+
+Opis pól w pliku konfiguracyjnym
+--------------------------------
+
+Database
+    Nazwa pliku zawierającego bazę danych.
+Secret_Key
+    Tajny plucz. Podczas automatycznego tworzenia pliku konfiguracyjnego
+    generowany jest losowy 10-znakowy klucz.
+Debug
+    Powoduje wyświetlanie informacji o debugowaniu w przypadku błędu
+    aplikacji. **UWAGA:** W przypadku poważnych instalacji należy ustawić na
+    0, ponieważ na stronie z informacjami o debugowaniu wyświetlana jest
+    również konsola debugowania, co jest bardzo niebezpieczne.
+HashCrypto
+    Algorytm hashowania haseł w bazie.
+ApiKey
+    Klucz API.
--- a/frontend/doc/config.txt	Mon May 09 01:50:00 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,38 +0,0 @@
-.. _config-ini:
-
-Plik konfiguracyjny
-===================
-
-Przykładowy plik konfiguracyjny
--------------------------------
-.. code-block:: ini
-
-    [Basic]
-    # W przypadku sqlite, ścieżka do pliku bazy
-    Database = baza.sqlite
-    # Wygenerować losowy dla każdej instalacji bazy
-    Secret_Key = TakBardzoTajne
-    # Dla poważnej instalacji ustawić na 0
-    Debug = 1
-    # Algorytm wyliczający hashe dla haseł
-    HashCrypto = sha1
-    # Klucz API
-    ApiKey = apikey
-
-Opis pól w pliku konfiguracyjnym
---------------------------------
-
-Database
-    Nazwa pliku zawierającego bazę danych.
-Secret_Key
-    Tajny plucz. Podczas automatycznego tworzenia pliku konfiguracyjnego
-    generowany jest losowy 10-znakowy klucz.
-Debug
-    Powoduje wyświetlanie informacji o debugowaniu w przypadku błędu
-    aplikacji. **UWAGA:** W przypadku poważnych instalacji należy ustawić na
-    0, ponieważ na stronie z informacjami o debugowaniu wyświetlana jest
-    również konsola debugowania, co jest bardzo niebezpieczne.
-HashCrypto
-    Algorytm hashowania haseł w bazie.
-ApiKey
-    Klucz API.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/database.rst	Mon May 09 10:49:01 2011 +0200
@@ -0,0 +1,46 @@
+Baza danych
+===========
+
+Schemat bazy danych
+-------------------
+.. code-block:: sql
+
+    PRAGMA foreign_keys = ON;
+    CREATE TABLE users (
+        "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,    -- ID Użytkownika
+        "username" TEXT NOT NULL,                           -- Nazwa użytkownika
+        "password" TEXT NOT NULL,                           -- Hash hasła użytkownika
+        "activated" BOOLEAN                                 -- Czy konto zostało uaktywnione
+    );
+    CREATE TABLE jobs (
+        "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,    -- ID Zadania
+        "label" TEXT,                                       -- Opis zadania
+        "owner_id" INTEGER NOT NULL,                        -- ID właściciela zadania
+        "hash" TEXT NOT NULL,                               -- Hash do zdekodowania
+        "state" INTEGER NOT NULL DEFAULT (0),               -- Obecny stan operacji
+        "result" TEXT,                                      -- Wynik operacji
+        "percent" INTEGER,                                  -- Procent ukończenia operacji
+        "last_checked" TEXT,                                -- Ostatnio sprawdzany hash
+        "min_pass_len" INTEGER NOT NULL DEFAULT (1),        -- Minimalna długość hasła
+        "max_pass_len" INTEGER NOT NULL DEFAULT (5),        -- Maksymalna długość hasła
+        "method" INTEGER NOT NULL DEFAULT (0),              -- Metoda sprawdzania hashy
+        FOREIGN KEY("owner_id") REFERENCES users("id")
+    );
+
+Opisy pól w bazie danych
+------------------------
+
+jobs.state
+^^^^^^^^^^
+
+Pole to może przyjmować jedną z następujących wartości:
+
+0. Zadanie oczekujące na wykonanie
+1. Zadanie w trakcie wykonywania
+2. Zadanie zakończone
+
+Funkcje wspomagające operacje na bazie danych
+---------------------------------------------
+
+.. automodule:: mfrontend.db
+    :members:
--- a/frontend/doc/database.txt	Mon May 09 01:50:00 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,46 +0,0 @@
-Baza danych
-===========
-
-Schemat bazy danych
--------------------
-.. code-block:: sql
-
-    PRAGMA foreign_keys = ON;
-    CREATE TABLE users (
-        "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,    -- ID Użytkownika
-        "username" TEXT NOT NULL,                           -- Nazwa użytkownika
-        "password" TEXT NOT NULL,                           -- Hash hasła użytkownika
-        "activated" BOOLEAN                                 -- Czy konto zostało uaktywnione
-    );
-    CREATE TABLE jobs (
-        "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,    -- ID Zadania
-        "label" TEXT,                                       -- Opis zadania
-        "owner_id" INTEGER NOT NULL,                        -- ID właściciela zadania
-        "hash" TEXT NOT NULL,                               -- Hash do zdekodowania
-        "state" INTEGER NOT NULL DEFAULT (0),               -- Obecny stan operacji
-        "result" TEXT,                                      -- Wynik operacji
-        "percent" INTEGER,                                  -- Procent ukończenia operacji
-        "last_checked" TEXT,                                -- Ostatnio sprawdzany hash
-        "min_pass_len" INTEGER NOT NULL DEFAULT (1),        -- Minimalna długość hasła
-        "max_pass_len" INTEGER NOT NULL DEFAULT (5),        -- Maksymalna długość hasła
-        "method" INTEGER NOT NULL DEFAULT (0),              -- Metoda sprawdzania hashy
-        FOREIGN KEY("owner_id") REFERENCES users("id")
-    );
-
-Opisy pól w bazie danych
-------------------------
-
-jobs.state
-^^^^^^^^^^
-
-Pole to może przyjmować jedną z następujących wartości:
-
-0. Zadanie oczekujące na wykonanie
-1. Zadanie w trakcie wykonywania
-2. Zadanie zakończone
-
-Funkcje wspomagające operacje na bazie danych
----------------------------------------------
-
-.. automodule:: mfrontend.db
-    :members:
Binary file frontend/doc/images/anaconda-1.png has changed
Binary file frontend/doc/images/anaconda-10.png has changed
Binary file frontend/doc/images/anaconda-11.png has changed
Binary file frontend/doc/images/anaconda-12.png has changed
Binary file frontend/doc/images/anaconda-13.png has changed
Binary file frontend/doc/images/anaconda-14.png has changed
Binary file frontend/doc/images/anaconda-2.png has changed
Binary file frontend/doc/images/anaconda-3.png has changed
Binary file frontend/doc/images/anaconda-4.png has changed
Binary file frontend/doc/images/anaconda-5.png has changed
Binary file frontend/doc/images/anaconda-6.png has changed
Binary file frontend/doc/images/anaconda-7.png has changed
Binary file frontend/doc/images/anaconda-8.png has changed
Binary file frontend/doc/images/anaconda-9.png has changed
Binary file frontend/doc/images/cherokee-admin-add-source.png has changed
Binary file frontend/doc/images/cherokee-admin-handler-2.png has changed
Binary file frontend/doc/images/cherokee-admin-handler.png has changed
Binary file frontend/doc/images/cherokee-admin-home.png has changed
Binary file frontend/doc/images/cherokee-admin-save.png has changed
Binary file frontend/doc/images/cherokee-admin-vservers.png has changed
Binary file frontend/doc/images/fedora-firstboot.png has changed
Binary file frontend/doc/images/fedora-install-1.png has changed
Binary file frontend/doc/images/fedora-install-2.png has changed
Binary file frontend/doc/images/fedora-install-3.png has changed
Binary file frontend/doc/images/fedora-install-boot.png has changed
Binary file frontend/doc/images/fedora-system-1.png has changed
Binary file frontend/doc/images/fedora-system-2.png has changed
Binary file frontend/doc/images/fedora-system-3.png has changed
Binary file frontend/doc/images/fedora-system-4.png has changed
Binary file frontend/doc/images/fedora-system-5.png has changed
Binary file frontend/doc/images/fedora-system-6.png has changed
Binary file frontend/doc/images/frontend-home.png has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/index.rst	Mon May 09 10:49:01 2011 +0200
@@ -0,0 +1,27 @@
+.. Frontend documentation master file, created by
+   sphinx-quickstart on Fri Apr  1 21:55:46 2011.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Witamy w dokumentacji Serwera Aplikacji!
+========================================
+
+Spis treści
+-----------
+
+.. toctree::
+   :maxdepth: 2
+
+   quickstart
+   system
+   config
+   api
+   database
+
+Zobacz też
+----------
+
+* :ref:`genindex`
+* :ref:`modindex`
+* :ref:`search`
+
--- a/frontend/doc/index.txt	Mon May 09 01:50:00 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-.. Frontend documentation master file, created by
-   sphinx-quickstart on Fri Apr  1 21:55:46 2011.
-   You can adapt this file completely to your liking, but it should at least
-   contain the root `toctree` directive.
-
-Witamy w dokumentacji Serwera Aplikacji!
-========================================
-
-Spis treści
------------
-
-.. toctree::
-   :maxdepth: 2
-
-   quickstart
-   config
-   api
-   database
-
-Zobacz też
-----------
-
-* :ref:`genindex`
-* :ref:`modindex`
-* :ref:`search`
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/quickstart.rst	Mon May 09 10:49:01 2011 +0200
@@ -0,0 +1,42 @@
+Szybki Start
+============
+
+Wymagania
+---------
+
+Serwer aplikacji wymaga Pythona, Flaska, Sqlite3 i to chyba wszystko. W każdym
+bądź razie wszystko, prócz wymienionych elementów, instaluje się domyślnie z
+Pythonem na openSUSE i Ubuntu.
+
+Instalacja Flaska sprowadza się do wydania polecenia
+
+.. code-block:: bash
+
+    $ easy_install Flask
+
+Uruchomienie serwera aplikacji
+------------------------------
+
+Serwer aplikacji uruchamiamy za pomocą polecenia
+
+.. code-block:: bash
+
+    $ python runserver.py
+
+Domyślnie serwer będzie nasłuchiwał na porcie 5000.
+
+:ref:`config-ini` ``config.ini`` zostanie stworzony w bieżącym katalogu. 
+
+Tworzenie bazy danych
+---------------------
+
+Stworzenie nowej, pustej bazy danych według schematu wymaga odwiedzenia w
+przeglądarce adresu ``/install/``. Po poprawnej instalacji w katalogu głównym
+zostanie stworzony pusty plik ``.install``, którego istnienie zapobiegnie
+ponownemu uruchomieniu procesu instalacji.
+
+Modyfikowanie szablonów aplikacji
+---------------------------------
+
+Frontend korzysta z systemu szablonów Jinja2, więcej informacji można znaleźć
+na stronie http://jinja.pocoo.org/docs/templates/ .
--- a/frontend/doc/quickstart.txt	Mon May 09 01:50:00 2011 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,42 +0,0 @@
-Szybki Start
-============
-
-Wymagania
----------
-
-Serwer aplikacji wymaga Pythona, Flaska, Sqlite3 i to chyba wszystko. W każdym
-bądź razie wszystko, prócz wymienionych elementów, instaluje się domyślnie z
-Pythonem na openSUSE i Ubuntu.
-
-Instalacja Flaska sprowadza się do wydania polecenia
-
-.. code-block:: bash
-
-    $ easy_install Flask
-
-Uruchomienie serwera aplikacji
-------------------------------
-
-Serwer aplikacji uruchamiamy za pomocą polecenia
-
-.. code-block:: bash
-
-    $ python runserver.py
-
-Domyślnie serwer będzie nasłuchiwał na porcie 5000.
-
-:ref:`config-ini` ``config.ini`` zostanie stworzony w bieżącym katalogu. 
-
-Tworzenie bazy danych
----------------------
-
-Stworzenie nowej, pustej bazy danych według schematu wymaga odwiedzenia w
-przeglądarce adresu ``/install/``. Po poprawnej instalacji w katalogu głównym
-zostanie stworzony pusty plik ``.install``, którego istnienie zapobiegnie
-ponownemu uruchomieniu procesu instalacji.
-
-Modyfikowanie szablonów aplikacji
----------------------------------
-
-Frontend korzysta z systemu szablonów Jinja2, więcej informacji można znaleźć
-na stronie http://jinja.pocoo.org/docs/templates/ .
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/frontend/doc/system.rst	Mon May 09 10:49:01 2011 +0200
@@ -0,0 +1,143 @@
+Instalacja i przygotowywanie systemu operacyjnego
+=================================================
+
+Instalacja systemu Fedora 14
+----------------------------
+
+Po włożeniu płyty DVD z systemem Fedora 14 i uruchomieniu systemu
+powinien pojawić się ekran bootloadera pozwalający wybrać podstawowe
+opcje instalacji.
+
+Jeśli ekran podobny do poniższego się nie pokazuje, możliwe, że
+konfiguracja komputera nie przewiduje uruchamiania z płyty DVD.
+Należy w takim wypadku sprawdzić ustawienia BIOSu.
+
+Należy wybrać pierwszą opcję (domyślnie uruchamianą po upływie
+15 sekund). W przypadku problemów z wyświetlaniem należy wypróbować
+drugą opcję "Install system with basic video driver".
+
+.. image:: images/fedora-install-boot.png
+
+Następnie instalator proponuje sprawdzenie nośnika instalacyjnego
+w poszukiwaniu błędów. Wybieramy OK.
+
+.. image:: images/fedora-install-1.png
+
+Rozpoczyna się sprawdzanie nośnika.
+
+.. image:: images/fedora-install-2.png
+
+Po zakończeniu procesu sprawdzania nośnika instalator proponuje
+sprawdzenie kolejnej płyty. Ponieważ instalator Fedory znajduje
+się na jednym nośniku DVD, możemy wybrać **Continue**. Jeśli instalacja
+przebiega przy użyciu kilku nośników CD możemy je w tym momencie
+sprawdzić.
+
+.. image:: images/fedora-install-3.png
+
+Po chwili uruchomiona zostanie Anaconda, program instalacyjny systemu
+Fedora.
+
+.. image:: images/anaconda-1.png
+
+Pierwszym krokiem instalacji jest wybranie domyślnego jezyka systemu i
+domyślnego układy klawiatury.
+
+.. image:: images/anaconda-2.png
+.. image:: images/anaconda-3.png
+
+Następnie należy wybrać typ urządzeń, z których ma korzystać instalator.
+W większości wypadków należy pozostawić zaznaczoną domyślną opcję.
+
+.. image:: images/anaconda-4.png
+
+Kolejnym krokiem jest podanie nazwy, która będzie identyfikować ten komputer
+w sieci. Na zrzucie ekranu podana jest nazwa przykładowa, nie ma ona wpływu
+na działanie serwera aplikacji i powinna zostać wybrana według uznania.
+
+.. image:: images/anaconda-5.png
+
+Należy zauważyć, że na tym ekranie mamy możliwość konfiguracji sieci. Po
+kliknięciu przycisku **Skonfiguruj sieć** pojawi się okno **Połączenia
+sieciowe**. Można tam zmodyfikować domyślne połączenie o nazwie
+*System eth0*.
+
+.. image:: images/anaconda-6.png
+
+Następnie instalator pyta os trefę czasową, w której znajduje się komputer.
+Instalator stara się wykryć strefę czasową na podstawie języka wybranego
+na wcześniejszym etapie instalacji.
+
+.. w tym momencie odkryłem adnotacje i bardzo mi się spodobały lol
+
+.. note::
+    Jeśli na komputerze jest również zainstalowany system DOS/Windows, to
+    należy odznaczyć opcję "Zegar systemowy używa UTC". Oznacza ona, że
+    zegar systemowy jest ustawiony na czas Greenwich, dzięki czemu zmiana
+    strefy czasowej nie wymaga zmiany czasu w zegarze systemowym. Systemy
+    pochodzące od DOSa nie wspierają tej możliwości domyślnie, oczekując
+    czasu lokalnego.
+
+.. image:: images/anaconda-7.png
+
+Kolejnym krokiem jest podanie hasła dla tworzonego domyślnie konta administratora.
+
+.. attention::
+    Powinno się wybrać trudne hasło i zapisanie go w zaszyfrowanym pliku lub
+    trudno dostępnym miejscu.
+
+.. important::
+    Konto administratora nie powinno być pod żadnym pozorem używane do codziennej
+    pracy ani do uruchomienia serwera aplikacji, ponieważ stanowi to bardzo
+    poważne zagrożenie bezpieczeństwa systemu. Konto zwykłęgo użytkownika zostanie
+    utworzone po zakończeniu instalacji systemu.
+
+.. image:: images/anaconda-8.png
+
+Po kliknięciu *Dalej* instalator pyta o sposób partycjonowania dysku. Możliwe jest
+ręczne utworzenie układu partycji, jednak w naszym przypadku wybieramy automatyczne
+partycjonowanie wraz z wyczyszczeniem całego dysku twardego.
+
+.. danger::
+    Partycjonowanie dysku należy robić ostrożnie, ponieważ wiąże się z ryzykiem
+    **nieodwracalnej utraty danych**.
+
+.. image:: images/anaconda-9.png
+
+Następny ekran pozwala na zmianę zestawu instalacyjnego. Należy wybrać instalację
+**Minimalną** i zaznaczyć **Dostosowanie teraz**.
+
+.. image:: images/anaconda-10.png
+
+Następnie możliwe jest dostosowanie opcji instalacji. W dziale *Aplikacje* należy
+zaznaczyć dział *Edytory*, a w dziale *Podstawowy System* - *Część podstawowa* i
+*Narzędzia systemowe*.
+
+.. image:: images/anaconda-11.png
+.. image:: images/anaconda-12.png
+
+Następnie rozpoczyna się proces instalacji systemu.
+
+.. image:: images/anaconda-13.png
+
+Po zakończeniu tego procesu należy wyjąć nośnik z napędu i uruchomić komputer
+ponownie.
+
+.. image:: images/anaconda-14.png
+
+Konfiguracja systemu
+--------------------
+
+W trakcie pierwszego uruchomienia pojawi się kreator konfiguracji systemu.
+Można go pominąć.
+
+.. image:: images/fedora-firstboot.png
+
+Po instalacji systemu użytkownik zostaje przywitany ekranem logowania. Należy
+zalogować się używając nazwy użytkownika *root* oraz hasła podanego w trakcie
+instalacji.
+
+.. image:: images/fedora-system-1.png
+
+Pierwszą czynnością wykonaną na nowym systemie powinno być utworzenie konta
+użytkownika normalnego.
--- a/frontend/mfrontend/db.py	Mon May 09 01:50:00 2011 +0200
+++ b/frontend/mfrontend/db.py	Mon May 09 10:49:01 2011 +0200
@@ -171,7 +171,7 @@
     for key in keys:
        if key in options:
            query_db("UPDATE jobs SET " + key + " = :value WHERE id = :id",
-                    {"value":options["state"],"id":job_id})
+                    {"value":options[key],"id":job_id})
     g.db.commit()
 
 def get_user_name(user_id):