Вам потребуется поле времени locked_at
и поле * 1002. *.
Каждый раз, когда кто-нибудь загружает страницу редактирования, обновляйте базу данных информацией locked_at
и locked_by
.
Чтобы реализовать ограничение на 2 часа, я бы рассчитывал результаты только тогда, когда пользователь запрашивает разрешение (в отличие от опроса / обновления моделей).Когда пользователь пытается отредактировать модель, проверьте locked_by/locked_at
и верните логическое значение, независимо от того, редактируется ли он пользователем или нет.
def can_edit(self, user):
if user == self.locked_by:
return True
elif self.locked_at and (self.locked_at - datetime.datetime.now()).total_seconds > 2*60*60:
return True
return False