Add django command to delete unused static files
This commit is contained in:
parent
928a07d29c
commit
ed8df13946
|
@ -0,0 +1,50 @@
|
|||
from django.core.management.base import BaseCommand, CommandError
|
||||
from django.utils.timezone import now
|
||||
|
||||
from apiserver import settings
|
||||
from apiserver.api import models, utils, utils_stats
|
||||
|
||||
import time
|
||||
import os
|
||||
|
||||
if settings.DEBUG:
|
||||
STATIC_FOLDER = './data/static/'
|
||||
else:
|
||||
STATIC_FOLDER = '/opt/spaceport/apiserver/data/static/'
|
||||
|
||||
class Command(BaseCommand):
|
||||
help = 'Delete unused static assets'
|
||||
|
||||
def delete_old_static(self):
|
||||
members = models.Member.objects
|
||||
|
||||
good_files = []
|
||||
for static_field in ['photo_large', 'photo_medium', 'photo_small', 'member_forms', 'card_photo']:
|
||||
good_files.extend(members.values_list(static_field, flat=True))
|
||||
|
||||
count = 0
|
||||
for f in os.listdir(STATIC_FOLDER):
|
||||
if len(f) != 40:
|
||||
self.stdout.write('Skipping: ' + f)
|
||||
continue
|
||||
|
||||
if f[-3:] not in ['jpg', 'pdf', 'png']:
|
||||
self.stdout.write('Skipping: ' + f)
|
||||
continue
|
||||
|
||||
if f not in good_files:
|
||||
os.remove(STATIC_FOLDER + f)
|
||||
count += 1
|
||||
|
||||
return count
|
||||
|
||||
def handle(self, *args, **options):
|
||||
self.stdout.write('{} - Deleting unused static files'.format(str(now())))
|
||||
start = time.time()
|
||||
|
||||
count = self.delete_old_static()
|
||||
self.stdout.write('Deleted {} files'.format(count))
|
||||
|
||||
self.stdout.write('Completed deletion in {} s'.format(
|
||||
str(time.time() - start)[:4]
|
||||
))
|
Loading…
Reference in New Issue
Block a user