26-04-2018, 23:03
(Последний раз сообщение было отредактировано 26-04-2018, 23:15 пользователем tarasalex.)
Руслан.
Разбираясь в ошибка у меня возникли 2 вопроса.
1. В ошибке пишется "time data '2018-04-26' does not match format '%d.%m.%Y". Т.е. это неверный формат даты.Правильно, я задаю дату в виде - '2018-04-26' . Согласно руководству по питону https://docs.python.org/2/library/datetime.html разделу 8.1.7 под эту дату должен быть формат '%Y-%m-%d'. Но у нас запрограммирован такой формат '%d.%m.%Y'. Следовательно для этого формата должна быть дата вида 26.04.2018. Но при этой дате мы получаем другую ошибку - скрин 758-err0r-19.png
Далее полез уже в код программы - vim /home/asiou/www/asiou/event/views.py
# Создать массив дополнительных форм
add_forms = create_add_forms(type, init_object=object, data=post)
# Обработка входных данных
if request.method == 'POST':
this_meropr_date = datetime.strptime(post['date_start'], '%d.%m.%Y')
meropr_start_edge = datetime.strptime('01.09.'+str(edu_year), '%d.%m.%Y')
meropr_finish_edge = datetime.strptime('31.08.'+str(int(edu_year)+1), "%d.%m.%Y")
Пробую работать в питоне
root@globeplus2:/home/user# python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> print(datetime.strptime('26.04.2018', '%d.%m.%Y'))
2018-04-26 00:00:00
В питоне ошибок не возникает.
Вопрос - тогда в чем ошибка этой даты? Где еще стоит проверка, которая не дает записать данные в базу?
2. Полазил по всему меню АСИОУ и обнаружил, что такая ошибка возникает не только в этом месте. (Будет время - составлю список или сделаю скринами. Но сейчас актуальна проблема стоит в кадрах, при обновлении/добавлении записей и в мероприятиях).
Но в других местах, например, где так же не работает календарь, можно вводить даты в виде '2018-04-26' и они нормально воспринимаются системой (например, при выставлении заполнении тем урока). Происходит сохранения.
Я понимаю, что могут быть разные форматы для полей записей в таблицах базы данных. Но, можно как-то уже "причесать" весь код за то время что он уже пишется.
3. Что еще больше меня поразило, так это то, что после ошибки полученной на скрине 758-err0r-19.png я впервые увидел заработавший на этом поле календарь - скрин 758-err0r-20.png. И он меняет дату, но сохранять не получается. А еще интересное, что на соседнем поле календарь не работает.
Пока на сегодня все.
У меня на обслуживании есть еще одна школа, в 2016 году я поставил им сервер Ubuntu 14.04 LTS и версия АСИОУ 7.5.8 стала не без труда. (Наверное помогло, что я удалил все старые файлы и поставил всю папку www скачанную из архива. Но с некоторыми пакетами python пришлось побороться - т.е. поставить либо версии выше, либо те которые устанавливались ). Но там все работает, и пока школа не предъявляла каких либо дополнительных доработок.
Поэтому сказать что-то плохое про Ubuntu 14.04 не могу. Единственное, что ее срок подходит к концу официальных обновлений.
Разбираясь в ошибка у меня возникли 2 вопроса.
1. В ошибке пишется "time data '2018-04-26' does not match format '%d.%m.%Y". Т.е. это неверный формат даты.Правильно, я задаю дату в виде - '2018-04-26' . Согласно руководству по питону https://docs.python.org/2/library/datetime.html разделу 8.1.7 под эту дату должен быть формат '%Y-%m-%d'. Но у нас запрограммирован такой формат '%d.%m.%Y'. Следовательно для этого формата должна быть дата вида 26.04.2018. Но при этой дате мы получаем другую ошибку - скрин 758-err0r-19.png
Далее полез уже в код программы - vim /home/asiou/www/asiou/event/views.py
# Создать массив дополнительных форм
add_forms = create_add_forms(type, init_object=object, data=post)
# Обработка входных данных
if request.method == 'POST':
this_meropr_date = datetime.strptime(post['date_start'], '%d.%m.%Y')
meropr_start_edge = datetime.strptime('01.09.'+str(edu_year), '%d.%m.%Y')
meropr_finish_edge = datetime.strptime('31.08.'+str(int(edu_year)+1), "%d.%m.%Y")
Пробую работать в питоне
root@globeplus2:/home/user# python
Python 2.7.15rc1 (default, Apr 15 2018, 21:51:34)
[GCC 7.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import datetime
>>> print(datetime.strptime('26.04.2018', '%d.%m.%Y'))
2018-04-26 00:00:00
В питоне ошибок не возникает.
Вопрос - тогда в чем ошибка этой даты? Где еще стоит проверка, которая не дает записать данные в базу?
2. Полазил по всему меню АСИОУ и обнаружил, что такая ошибка возникает не только в этом месте. (Будет время - составлю список или сделаю скринами. Но сейчас актуальна проблема стоит в кадрах, при обновлении/добавлении записей и в мероприятиях).
Но в других местах, например, где так же не работает календарь, можно вводить даты в виде '2018-04-26' и они нормально воспринимаются системой (например, при выставлении заполнении тем урока). Происходит сохранения.
Я понимаю, что могут быть разные форматы для полей записей в таблицах базы данных. Но, можно как-то уже "причесать" весь код за то время что он уже пишется.
3. Что еще больше меня поразило, так это то, что после ошибки полученной на скрине 758-err0r-19.png я впервые увидел заработавший на этом поле календарь - скрин 758-err0r-20.png. И он меняет дату, но сохранять не получается. А еще интересное, что на соседнем поле календарь не работает.
Пока на сегодня все.
(26-04-2018, 09:22)fstab Писал(а):Про то, что python можно запускать в разных версиях под virtualenv и pyevn, читал. Но сам не работал. Поэтому ломать сервер не стал.(26-04-2018, 09:04)tarasalex Писал(а): Python 2.7.5 - дефолтная установка python-а для Ubuntu 14.04.5 LTS. Таким образом меня заставляют вернуться на версию Ubuntu, которая через 1 год потеряет обновления безопасности - см. сайты описания Ubuntu.Я уже сталкивался с такой ситуацией, когда очередное обновление АСИОУ приводит к неработоспособности сервера, так как он не может принять те пакеты, которые предписаны разработчиками.
А понижение версии python-а в следующих версиях Ubuntu приведет потере работоспособности таких блоков программ как систем обновления и центра установки программ в системе (возможно еще чего-то, но я прогуглил только по этому вопросу.), так как на дефолтной версии они делаются для определенной версии Ubuntu (например, для Ubuntu 16,04 LTS дефолтная версия python-а 2,7,13, а для Ubuntu 18,04 LTS дефолтная версия python-а 2,7,15).
Кроме того, перед установкой версии python-а необходимо удалить все ранее установленные при помощи pip пакеты. Иначе их работа будет не способна обеспечить совместимость с более раней версией.
Я посмотрел как устроен, что python для Windows является отдельным программным обеспечением и не как не завязан на системные процессы в Windows. Можно брать любую версию в виде msi- пакета и ставить в любую систему Windows. Поэтому и предлагается не разработка программного обеспечения, а пользователю самому решать вопрос как и что сломалось, если это не дефолтная для разработчиков установка.
Разработчики АСИОУ живут в своей "песочнице", и не видят уходящий от них поезд.
Как говорил Руслан проблему на Ubuntu 14.04 победить не удалось, где то глубоко в настройках некорректно подхватывается локаль и мы получаем не тот формат даты.
Развертка свежей системы решила ситуацию.
Второй вариант развернуть АСИОУ в докере, в таком случае всегда можно будет обновить ОС и не зависеть от версии библиотек хост машины.
Вы пробовали развернуть АСИОУ с использованием virtualenv, чтобы не использовать текущие версии пакетов питона?
У меня на обслуживании есть еще одна школа, в 2016 году я поставил им сервер Ubuntu 14.04 LTS и версия АСИОУ 7.5.8 стала не без труда. (Наверное помогло, что я удалил все старые файлы и поставил всю папку www скачанную из архива. Но с некоторыми пакетами python пришлось побороться - т.е. поставить либо версии выше, либо те которые устанавливались ). Но там все работает, и пока школа не предъявляла каких либо дополнительных доработок.
Поэтому сказать что-то плохое про Ubuntu 14.04 не могу. Единственное, что ее срок подходит к концу официальных обновлений.