23 lines
852 B
Python
23 lines
852 B
Python
from django.conf import settings
|
|
from django.core.management.base import BaseCommand, CommandError
|
|
from django.db.models import Min
|
|
from markupwiki.models import Article, PUBLIC, LOCKED, DELETED
|
|
import datetime
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Auto-locks articles based on time and other factors'
|
|
|
|
def handle(self, *args, **options):
|
|
''' Lock any public article that was created earlier than
|
|
MARKUPWIKI_AUTOLOCK_TIMEDELTA ago.
|
|
'''
|
|
|
|
timedelta = getattr(settings, 'MARKUPWIKI_AUTOLOCK_TIMEDELTA', None)
|
|
|
|
if timedelta is not None:
|
|
|
|
ts = datetime.datetime.now() - timedelta
|
|
qs = Article.objects.filter(status=PUBLIC).annotate(
|
|
timestamp=Min('versions__timestamp')).filter(timestamp__lte=ts)
|
|
qs.update(status=LOCKED)
|