вторник, 22 мая 2012 г.

Использование South в PyDev-Django проекте (шпаргалка)

Следующая последовательность действий оказалась удачной:

1. Скопировали папку South в корневую папку проекта

2. В main/settings.py дописали такую строку: sys.path.append(os.path.join(PARENT_PROJECT_ROOT, 'south'))

3. В bash (командной строке) написали команду python manage.py syncdb

4. В bash написали команды

./manage.py schemamigration tasks --initial
./manage.py schemamigration students --initial
(Потому что у меня в проекте два package - students и tasks, в которых есть файлы models.py)

5. Изменила tasks.models.py (добавила два новых поля)

6. В bash написала следующее:

./manage.py schemamigration tasks ei --auto
(после этого в папке migrations проекта создалась миграция с названием 0003_ei, поскольку между шагом 5 и 6 у меня было несколько неудачных попыток миграции, в ходе которых я создала еще один слепок БД, а потом его стерла)

./manage.py migrate tasks 0001 --fake
./manage.py migrate tasks 0003_ei

Информационные источники: Дмитрийеще один Дмитрийблог Анатолия Вострякова

вторник, 1 мая 2012 г.

Локализация области действия скрипта Mathjax

В разрабатываемом приложении, которое позволяет студентам интерактивно решать задачи по линейной алгебре, студент вводит части своего решения (формулы) с помощью специального элемента управления, который для краткости называется шагом студента. Для студентов предусмотрено два вида интерфейса ввода шагов: "легкий" и "трудный". В легком интерфейсе студенту предоставляется шаблон("скелет") формулы, который он может заполнять математическими символами с помощью drag-and-drop.

Дмитрием был разработан тестовый пример, в котором на странице располагалось текстовое представление шаблона формулы (на рис - 1), математические символы, которые можно тащить и бросать в шаблон (2), сам шаблон, сгенерированный на основе текстового представления (3), и динамически генерирующееся скриптом Mathjax представление измененного шаблона (4).



А вот как выглядел этот пример при частично заполненной формуле:


Далее выяснилось, что если на html-странице расположено несколько шаблонов формул (а они в разрабатываемом приложении все заполняются математическими символами из одной и той же таблицы), то при заполнении очередного шаблона "гадится" генерирующееся mathjax'ом представление других шаблонов.

В тестовом примере обращение к элементам на странице шло по классу CSS. Например:


Для решения этой проблемы создала тестовый пример с двумя шаблонами для заполнения. 
Всем значимым элементам html дала id, при этом id назначала так:

То есть, у одинаковых по функциональному назначению элементов id отличались только номерами в конце. Функцию, которая обрабатывает бросание математического символа на шаблон формулы, изменила так: То есть, алгоритм был такой: получаем идентификатор шаблона, куда сброшен математический символ. 
Из него получаем номер шаблона (1 или 2), далее формируем идентификатор визуального представления, которое должно обновиться и просим Mathjax обновить только одинhtml  элемент -- с этим идентификатором.

В процессе решения этой проблемы помогла страница, которую порекомендовал Дмитрий.