Mercurial > kraina_muminkow
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:
--- /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):