Ришат Султанов: Рад, что помог) Mykola: Не подскажете примеры именно отменяющих shift-хоткеев? Кроме Shift+Space для обратной прокрутки ничего не припомню.
Сделать {% for f in form %} внутри вашего цикла. Если вы все Form запихнули в один список, а выводить в шаблоне надо разными порциями - либо через проверку forloop.counter, либо во view разбейте на разные списки.
С учётом разнообразия ведения бухгалтерии в разных местах (от буха на конкретном участке, работающего с несколькими счетами, до буха на все бумажные дела мелкой конторки, в том числе и не бухгалтерские) точно проверить сложновато - крутой спец по одному направлению может совсем не подходить под ваши задачи. Проблема ещё усугубляется тем, что определённые косяки бухгалтера могут всплыть через месяцы, а то и годы.
Если правильно понял, этот лаг вызван автоматической вставкой паузы в момент простоя при скачивании, добавленный параметр --live как раз не даёт вставляет паузу при простое, а просто заставляет данные писаться друг за другом. На 3 скачанных минутах видео лагов в VLC не заметил. Кстати, в VLC перемотка перестаёт работать, а Daum PotPlayer перематывает нормально.
С kaban.tv файл отдаётся кусочками. Здесь лежит список всех (плейлист) - 213.186.120.146/hls/disney/2015/10/04/09-15(3300).m3u8
Можно через автозамену почистить всё лишнее, имена кусочков довести до ссылок и выкачивать. Главное - не запутаться под каким именем и что, ну и потом соединить это чем-нибудь.
Методом тыка выяснил, что параметр -p лишний. Возможно, параметры -a и -y можно было бы убрать под параметр -r, но там, видимо, ссылка формируется несколько иначе, чем для плееров по http, из-за чего и не получается по такой ссылке открывать в плеерах.
За ваши 5 тысяч он должен: заплатить в ПФР 6000 * 22%, в ФСС от 6000 * 3,1%, в налоговую типа ваш НДФЛ 6000 * 13%. Итого 2286. Ежемесячно.
Плюсом ежеквартально добавляется радость в виде отчётности в ПФР и ФСС. Ежегодно отчётность в налоговую (2-НДФЛ + Среднесписочная). Это ещё расходы от 0 рублей (вдруг сам всё осилит, в принципе, сложностей в формах нет) до дофига рублей по расценкам фирм, занимающихся заполнением.
С ЗП в 6к налоговая может прислать приглашение на трудовую комиссию, что тоже радости не добавляет. С официальным работникам на УСН 6% или ЕНВД (а это многие ИП) друг лишается возможности уменьшить налоги на взносы за себя (могу ошибаться, вроде на УСН были движения в отношении правил уменьшения налога и факта выплаты ЗП).
В итоге друг имеет геморрой по всем пунктам, вы тратите 60к в год. Если отстраниться от разных ипотечных хитростей, как в вашем случае, а есть нужда не быть безработным-бездельным, вариант с открытием ИП, который предложили, даже в год высоких обязательных взносов (>30к, а сейчас это чуть больше 20к) в ПФР был выгоднее, как по деньгам, так и по дружбе - ведь вам можно взять УСН, сдавать отчёт раз в год и платить взносы.
Фиктивные 2-НДФЛ для фиктивных работников можно и без реальных выплат сделать, вряд ли банки смогут проверить реальность ваших доходов, так как запрашивать ПФР и ФНС по поводу поступления взносов, соответствующих уровню ЗП в 2-НДФЛ, ещё не могут.
Поле car модели OrderItem делается как ForeignKey, ссылающийся на модель типа Car. В форме класса ModelForm у поля car автоматически рендерится ModelChoiceField, который и позволит вам выбрать нужный Car внутри OrderItem.
Если OrderItem может быть завязан ещё на другую модель - аналогично и для неё. При том оба поля модели сделать необязательными, но в clean модели прописать, что оба пустыми быть не могут.
Метод clean у модели, если не ошибаюсь, вызывается не при сохранении, а при вызове из ModelForm - стоит помнить на всякий случай, вдруг как-нибудь хитро будете создавать OrderItem, а не только из своей ModelForm.
Почему у вас car_id = PositiveIntegerField? Не проще взять обычную связь? Тогда и ModelChoice будет работать нормально, вы ж всё равно его используете.
Если так охото всё же хранить в int - попробуйте кастомный clean у формы, где будете приводить объект из ModelChoiceField к его id.
Евгений Конкин: а как вы без регистрации поймёте тот это пользователь или нет, если у него будет стоять задача именно в накрутке? Как минимум, обезопаситься можно путём: записи в куки или другое клиентское хранилище какой-нибудь метки (обходится их очисткой); запоминания адреса и какого-нибудь характерного параметра(ов) для клиента (обходится их сменой, прокси, виртуалками и прочим).
tadej: готово. Уточните, какую версию джанго используете? Помню, что года 3 назад приходилось POST править и пришлось как-то извращаться с оборачиванием значений в список.
tadej: проверьте, что у вас в nw_pst['pass'] лежит именно '145353', а не '1' ;) В вашем примере у вас не tuple.
Через .copy() правильный и короткий способ сделать то, что я и предлагал. Я делал через new QueryDict(), так как попутно удалял лишние ключ из запроса.
tadej: создайте свой QueryDict, qd = QueryDict('', 'mutable'), продублируйте в него POST, добавьте ещё и своё поле с паролем. И, если не ошибаюсь, добавлять значение лучше через qd.appendlist(k, value), где k - ключ (имя поля в запросе), а value должен быть списком, даже если это одиночное значение, то есть пароль надо отдать не как 'txt', а как ['txt'].
qd = QueryDict('', 'mutable')
for k, v in request.POST.items():
qd.appendlist(k, v)
Если не ошибаюсь: сейчас можно делать просто request.POST['pass'] = 'yourvalue'; раньше QueryDict (POST его экземпляр) был иммутабельным, поэтому приходилось создавать QueryDict('', 'mutable') и заполнять его необходимым - через копирование POST и последующей правкой.
Можно в __init__ формы динамически делать self.fields['pass'].required = False по необходимости.
Если страница совсем статическая, можно сделать сравнение количества прошедших миллисекунд от точки отсчёта до текущей даты. Всё это дело будет висеть в фоне и постоянно сверяться, бОльшую часть времени работая бесполезно.
Выйдет в духе:
// 1 week = 604800000
var w = 604800000;
vat start = new Date(2015, 1, 1);
setTimeout(function(){
var now = new Date();
// тут можно прикрутить проверку на различие текущего текста и нового
$('#cnt').value = 1 + parseInt((now-start) / w) * 12;
}, 10000)
в clearInterval отдаётся id задания, который генерируется при setInterval. Id нужно сохранить, поэтому setInterval() вызывается как var idInterval = setInterval(). И уже в clearInterval отдаётся idInterval.