Изменить логическое значение на "время блокировки"
- Чтобы заблокировать модель, установите время блокировки на текущее время.
- Чтобы разблокировать модель, установите время блокировки Нет
- Добавить метод is_locked. Этот метод возвращает «не заблокирован», если текущее время превышает 10 минут после времени блокировки.
Это дает вам время без Cron и без регулярных попаданий в DB, чтобы проверить флаги и сбросить их. Вместо этого время проверяется только в том случае, если вы заинтересованы в , эта модель заблокирована. Крону, скорее всего, придется проверить все модели.
from django.db import models
from datetime import datetime, timedelta
# Create your models here.
class yourTextLineGroup(models.Model):
# fields go here
lock_time = models.DateTimeField(null=True)
locked_by = models.ForeignKey()#Point me to your user model
def lock(self):
if self.is_locked(): #and code here to see if current user is not locked_by user
#exception / bad return value here
pass
self.lock_time = datetime.now()
def unlock(self):
self.lock_time = None
def is_locked(self):
return self.lock_time and datetime.now() - self.lock_time < timedelta(minutes=10)
Код выше предполагает, что вызывающая сторона будет вызывать метод save после вызова блокировки или разблокировки.