Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти!

TimeTable

Матеріал з USIC Wiki
Перейти до: навігація, пошук
Тукс

Ця стаття описує програмне забезпечення Інтернет-центру.

Зміст

[ред.] Автори

TODO

[ред.] Архітектура

[ред.] Семантична мережа

Tt semantics.png

[ред.] Об'єктна модель

Tt object model.png

[ред.] Словник

Словник потрібен для уніфікації, він визначає, як називаються об'єкти в базі, в об'єктній моделі і шаблонах — одні і ті ж поняття всюди повинні мати однакові ідентифікатори.

  • пара — lesson
  • тиждень — week
  • користувач — user
  • розклад — timetable
  • аудиторія — room
  • абревіатура — abbr
  • кафедра — department
  • факультет — faculty
  • корпус — building
  • спеціальність — major

[ред.] Використані компоненти

[ред.] Django

Django[1] --- це веб-фреймворк, написаний мовою Python. Ключові можливості, які він надає:

  • ORM (Object-relational mapping) дозволяє будувати схему SQL-бази даних за описом класів-моделей [2], за допомогою додаткових інструментів[3] можна робити зміни у структурі класів, і при цьому схема бази даних буде автоматично мігрована до нової версії
  • MVC (Model–view–controller)-архітектура відокремлює логіку (python-код у views) від HTML-представлення (будується із шаблонів[4])

[ред.] Інсталяція

  • Прогляньте Quick install guide[5]
  • Впевніться, що у системі встановлено python
$ python
Python 2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> print sys.version
2.6.5 (r265:79063, Apr 16 2010, 13:09:56) 
[GCC 4.4.3]

Рекомендовані версії python - 2.6 і 2.7. Версії 2.5 і нижче вже застарі, а для python 3 існують проблеми із сумісністю багатьох додаткових модулів.

  • встановіть virtualenv[6]
  • встановіть pip[7]

[ред.] Розгортання

Для автоматизації розгортання веб-застосування можна рекомендувати засіб Fabric [8].

Один із рекомендованих способів роботи Django-powered сайту передбачає використання зв’язки Apache + mod_wsgi [9].

Фрагмент конфігурації Apache:

<VirtualHost *:80>
    ServerName timetable.usic.org.ua
    Alias /static/admin/ /usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/contrib/admin/media/
    WSGIScriptAlias / /path/to/timetable/trunk/dj_timetable/django.wsgi
</VirtualHost>

Основну роботу виконує скрипт bootstrap.sh, але він потребує деякої підготовки оточення з боку ОС. Нижче наведені команди для Debian/Ubuntu-подібних систем, для інших необхідно замінити apt-get на відповідник дистрибутиву.

######## BASIC REQUIREMENTS #########
# install python (if it is not present in OS distro)
# 2.7 is now preferred, 2.6 is also OK, 2.5 might have some compatibility issues
# DO NOT USE python3, it is not supported
sudo apt-get install python2.7
# git to fetch timetable source
sudo apt-get install git
# pip tool to install locally custom python package requirements
sudo apt-get install python-pip
# virtualenv for easy package isolation
sudo apt-get install python-virtualenv
 
### PACKAGE-SPECIFIC REQUIREMENTS ###
# mercurial (hg) to fetch the latest South version that is Djano-1.4-compatible
sudo apt-get install mercurial
# python dev libs (for python-ldap compilation)
sudo apt-get install python-dev
# LDAP dev libs (for python-ldap compilation)
sudo apt-get install libsasl2-dev libldap2-dev
 
# OPTIONAL, Linux-specific
# to eliminate HDD bottleneck and for faster DB population, use TMPFS
sudo mount -t tmpfs -o size=100m tmpfs /mnt/ && cd /mnt/
 
# download the latest source code
git clone git://github.com/troyand/timetable_jan.git
cd timetable_jan/
# start the script that will prepare the env,
# install python requirements, create default settings_local.py,
# create and populate sqlite DB
# WARNING! This might take 5-10 minutes if HDD is used
# (may vary depending on the dataset size)
./bootstrap.sh
 
# to start dev server that will listen on port 8000
source venv_dir/bin/activate
python manage.py runserver 0.0.0.0:8000
 
# to run tests for university application
python manage.py test university

[ред.] Roadmap

[ред.] milestone-0.1-pre

Підтримка базових можливостей:

  • користувачі (для початку можна LDAP юзери) — тільки базові можливості — залогінитися/вилогінитися (просто generic user — без складної ієрархії, логіки і зв’язків)
  • групи — теж базові — без ACL і хитрого менеджменту прав
  • прикрутити дизайн Вадима[10] (замість bootstrap.css)
  • додатково до запропонованих[11] відображень — відображення розкладу за місяць і семестр
  • підтримка персонального розкладу юзера, окремого розкладу групи, базові можливості редагування і наповнення розкладу

[ред.] Бункер

TODO

[ред.] Ресурси розробника

TODO

[ред.] Див. також

Python:

Django:

[ред.] Посилання

  1. Фреймворк Django
  2. Класи-моделі Django
  3. http://south.aeracode.org/
  4. Шаблони Django
  5. Django quick install guide
  6. Python virtualenv
  7. Python pip
  8. Fabric, Django, Git, Apache, mod_wsgi, virtualenv and pip deployment
  9. How to use Django with Apache and mod_wsgi
  10. http://usic.org.ua/~robert/projects/tt/
  11. http://mail.usic.ukma.kiev.ua/pipermail/web-dev/2012-February/000256.html
Особисті інструменти
Простори назв
Варіанти
Дії
Навігація
Інструменти