added cleareventdata management command
This commit is contained in:
parent
e4c7fd508e
commit
aa180d0946
2 changed files with 75 additions and 1 deletions
70
src/c3nav/mapdata/management/commands/cleareventdata.py
Normal file
70
src/c3nav/mapdata/management/commands/cleareventdata.py
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
import logging
|
||||||
|
|
||||||
|
from django.core import management
|
||||||
|
from django.core.exceptions import ObjectDoesNotExist
|
||||||
|
from django.core.management import BaseCommand
|
||||||
|
|
||||||
|
from c3nav.mapdata.management.commands import clearmapcache
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = 'Wipes users, changesets and mapupdates to reset a instance'
|
||||||
|
|
||||||
|
def add_arguments(self, parser):
|
||||||
|
parser.add_argument('--yes', action='store_const', const=True, default=False,
|
||||||
|
help='really delete it')
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
from c3nav.control.models import UserPermissions
|
||||||
|
from c3nav.mapdata.models import MapUpdate
|
||||||
|
from c3nav.mapdata.models.access import AccessPermissionToken
|
||||||
|
from c3nav.editor.models import ChangeSet, ChangeSetUpdate
|
||||||
|
from c3nav.site.models import Announcement
|
||||||
|
from django.contrib.auth import get_user_model
|
||||||
|
|
||||||
|
logger = logging.getLogger('c3nav')
|
||||||
|
|
||||||
|
if not options['yes']:
|
||||||
|
print("please add --yes to confirm that you really want to delete all users, changesets, and mapupdates")
|
||||||
|
return
|
||||||
|
|
||||||
|
try:
|
||||||
|
ChangeSet.objects.all().delete()
|
||||||
|
logger.info('Deleted all ChangeSets')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
# should not be necessary, but just to make sure
|
||||||
|
ChangeSetUpdate.objects.all().delete()
|
||||||
|
logger.info('Deleted all ChangeSetsUpdates')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
MapUpdate.objects.all().delete()
|
||||||
|
logger.info('Deleted all MapUpdates')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
AccessPermissionToken.objects.all().delete()
|
||||||
|
logger.info('Deleted all AccessPermissionTokens')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
Announcement.objects.filter(author__is_superuser=False).delete()
|
||||||
|
logger.info('Deleted all Announcements nor attached to a super user')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
try:
|
||||||
|
UserPermissions.objects.filter(user__is_superuser=False).delete()
|
||||||
|
logger.info('Deleted all UserPermissions not attached to a super user')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
try:
|
||||||
|
get_user_model().objects.filter(is_superuser=False).delete()
|
||||||
|
logger.info('Deleted all Users who are not a super user')
|
||||||
|
except ObjectDoesNotExist:
|
||||||
|
pass
|
||||||
|
|
||||||
|
management.call_command(clearmapcache.Command(), include_history=True, include_geometries=True)
|
|
@ -130,7 +130,11 @@ class MapUpdate(models.Model):
|
||||||
|
|
||||||
logger.info('%.3f m² of altitude areas affected.' % changed_geometries.area)
|
logger.info('%.3f m² of altitude areas affected.' % changed_geometries.area)
|
||||||
|
|
||||||
last_processed_update = cls.objects.filter(processed=True).latest().to_tuple
|
try:
|
||||||
|
last_processed_update = cls.objects.filter(processed=True).latest().to_tuple
|
||||||
|
except cls.DoesNotExist:
|
||||||
|
last_processed_update = (0, 0)
|
||||||
|
cache.set('mapdata:last_processed_update', last_processed_update, None)
|
||||||
|
|
||||||
for new_update in new_updates:
|
for new_update in new_updates:
|
||||||
logger.info('Applying changed geometries from MapUpdate #%(id)s (%(type)s)...' %
|
logger.info('Applying changed geometries from MapUpdate #%(id)s (%(type)s)...' %
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue