javedimka: Потому что очень сложно гарантировать, что файл, который вы записываете, уже не существует. А если этого не гарантировать, то это открывает широкую дорогу для различных пакостей. Уязвимости в софте, который делает что-то типа:
if not os.path.exists(filename):
open(filename, 'w')
javedimka: вообще, это довольно сложно. Можно легко получить race condition и много других проблем. См. tempfile, там большинство проблем уже решены. Можно посмотреть на реализацию, чтобы понять, насколько это на самом деле сложная проблема.
Вопрос непонятент. Но в любом случае лучше использовать class based generic views. На крайний случай, ваш код можно сократить на две строки: form = TaskForm(request.POST or None)
и вторая ветвь if будет не нужна. Но generic views все-таки лучше.
sim3x: Да, но суть та же самая. migrate app zero --fake делает тот же delete. Вопрос только записи и удобства. Я своим скриптом сразу все миграции всех приложений очищаю, мне так понятнее и проще.
sim3x: Все то же самое, только немного другими словами. У меня тоже нет устоявшейся процедуры, каждый раз импровизирую. Может надо написать автоматизированный инструмент уже, и передать его в Django. :)
Ну и конечно, это способ не для публичных переиспользуемых приложений. Потому что если приложение раздается через PyPI или GitHub, то конечно, придется хранить историю миграций вечно. Но я пока в больших open source проектах не участвовал, все мои проекты - закрытые, и можно запросто сделать такой финт, облегчив репозиторий от старого хлама.
Irina Travel:
1. Пишу скрипт из одной строки типа clean-migrations.sql:
DELETE FROM django_migrations WHERE app_name IN (перечисляем наши приложения)
2. Удаляю все из миграций
3. Запускаю makemigrations, чтобы создать начальные миграции для всех приложений
4. Во всех окружениях (production, staging, у разработчиков), сначала выполняется скрипт командой psql < clean-migrations.sql, затем migrate --fake-initial
Вроде все. Детали не помню, т.к. каждый раз и в каждом проекте делаю это немного по-разному. Главное все сделать одновременно и согласовнно со всеми, если разработчиков более одного. И забэкапить базу перед началом.
sim3x: Почему? Это делается единовременно, при помощи скриптов и уведомления всех участвующих в проекте. Причем, не я автор методики, я и читал об этом, и приходя в другие проекты сталкивался с таким же подходом.
Пишутся скрипты, чтобы автоматически очистить историю старых миграций, удаляем старые миграции, добавляем в репо новые чистые. Если делать грамотно, то такой ситуации, как у автора поста не возникнет.
А иначе придется за собой тащить воз и тележку старых зависимостей. Использовал 5 лет назад какой-нибудь пакет django-cool-tagging, который давно протух? Извини, не можешь удалить его из requirements.txt, потому что он входит в граф миграций.
Оно просто все миграции в одну большую объединяет. А по сути, спустя какое-то время огромное количество миграций не только не нужно, но и вредно. Например, тесты дольше работают. Старые зависимости не удалить. И т.п. Раз в год где-то проще начинать историю миграций с нуля.
Irina Travel: Не надо вручную создавать. Сделайте makemigrations и мигрируйте по новой. У вас то база пустая. С продакшном, если он есть, будет сложнее. Лучше и не пытаться, без опыта будет тяжело и можно накосячить.
В git добавляется то, что пишется руками и то, без чего не обойтись другим разработчикам. Не добавляются автогенерируемые файлы (например, *.pyc, __pycache__, *.bak, и т.п.). Миграции, естественно, должны быть в Git. Это обычные исходники, многие миграции вообще руками пишутся, и они должны быть у всех разработчиков - так что это совершенно понятно любому вменяемому человеку. Судя по всему, предыдущий автор проекта таковым не был, и его надо бы занести в черный список. Миру будет лучше без таких разработчиков, им только улицы подметать можно доверить, да и то под надзором.
sim3x: Ну, почему. Можно очистить историю миграций в продакшене и начать заново. Я постоянно так делаю, чтобы не копить цепочки миграций, тесты ускорить, и т.д. Но одно дело, конечно, когда это делается штатно и обдуманно. Другое дело, что там этот разработчик навертел.
Irina Travel: Если так, то бегите от этого проекта. Это будет наименьшая из ваших проблем!
Вообще, миграции можно сгенерировать заново: makemigrations. Но скорее всего, дальше возникнут еще большие проблемы, если оригинальный разработчик был настолько оригинален.
Иннокентий Иванов: Тогда кроме KDE Connect ничего не знаю. Впрочем, специально и не искал. Но разговоры работать все равно не будут, только уведомления о звонках.
У клиентов Мегафон есть какой-то мультифон, вроде позволяет разговаривать в роуминге бесплатно через Wifi. Но я клиентом Мегафона никогда не был, и эту информацию не проверял.
Что это за страна с такими дикими тарифами на роуминг? Может какую-нибудь опцию можно подключить, чтобы снизить?
А, вы и есть автор вопроса. Кстати, Payoneer отнюдь не в кипрских оффшорах. Если бы вы пользовались и знали, то он уже не раз переезжал. И кто знает, возможно, в очередной раз ему уже некуда станет переезжать.
Михаил: С подарка тоже надо платить налог. Квартиру тоже на друга оформите? Хорошие у вас друзья, завидую.
А деньги с Payoneer должны облагаться налогом по закону. И со следующего года у Payoneer не будет выбора: они должны будут попасть под действие очередного закона о противодействию отмыванию денег. Вопросы на этот счет они никак не комментируют.
И вообще, налоги платятся во всех странах, не только в РФ. Зато в РФ можно открыть ИП на УСН и платить 6% - такого низкого налога нет нигде больше.
Поэтому и рекомендую автору вопроса не маяться дурью и не слушать советчиков, прямым текстом призывающих нарушить закон непонятно ради чего, а сделать сразу все правильно и спать спокойно.
Dogata: Менталитет PHP-разработчиков. ) Что тут еще сказать.
Последний проект на PHP, с которым я работал - какой-то платный фотохостинг. Продавался за несколько десятков евро. Попросили исправить несколько ошибок и сделать доработки.
На весь огромный код почти ни одной функции. Повторяющийся код был скопирован copy paste во все места. Некоторые куски по 20-30 раз. Без преувеличения. Исправление каждой ошибки превратилось в ад. С тех пор больше никогда не брался ни за какую работу, связанную с PHP.
Но это объясняет отчасти появление таких шифраторов, мне кажется. Как же иначе за говно полсотни евро отдавать будут. Посмотрят, прослезятся, и уйдут покупатели.
Александр Шаповал: Поверьте моему опыту. Ради экономии 7-10 символов, вы усложнили код для понимания и изменения. И это потом выльется в часы отладки у вас или следующего разработчика.
Странно все это. Я не помню нюансы RewriteRule, но тогда бы я написал ^test/(.*) По-моему, так правильнее. Не нужен там плюс. Зведочка - это 0 или более повторений
находят каждый год тоннами.