|
Тепер статті може редагувати кожен. Приєднуйтесь до нашої вікі-спільноти! |
TimeTable
Зміст |
[ред.] Автори
TODO
[ред.] Архітектура
[ред.] Семантична мережа
[ред.] Об'єктна модель
[ред.] Словник
Словник потрібен для уніфікації, він визначає, як називаються об'єкти в базі, в об'єктній моделі і шаблонах — одні і ті ж поняття всюди повинні мати однакові ідентифікатори.
- пара — 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 існують проблеми із сумісністю багатьох додаткових модулів.
[ред.] Розгортання
Для автоматизації розгортання веб-застосування можна рекомендувати засіб 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:
- Python v2.7.2 documentation
- Highest Voted 'python' Questions - Stack Overflow
- Dive Into Python
- The Python Challenge
- Code Like a Pythonista: Idiomatic Python
- Style Guide for Python Code
Django:
- Writing your first Django app
- Django documentation
- Highest Voted 'django' Questions - Stack Overflow
- Форум Django
[ред.] Посилання
- ↑ Фреймворк Django
- ↑ Класи-моделі Django
- ↑ http://south.aeracode.org/
- ↑ Шаблони Django
- ↑ Django quick install guide
- ↑ Python virtualenv
- ↑ Python pip
- ↑ Fabric, Django, Git, Apache, mod_wsgi, virtualenv and pip deployment
- ↑ How to use Django with Apache and mod_wsgi
- ↑ http://usic.org.ua/~robert/projects/tt/
- ↑ http://mail.usic.ukma.kiev.ua/pipermail/web-dev/2012-February/000256.html
| ||||||||||||||