| Total Complexity | 3 |
| Total Lines | 49 |
| Duplicated Lines | 0 % |
| Changes | 0 | ||
| 1 | import os |
||
| 2 | |||
| 3 | from django.conf import settings |
||
| 4 | from django.core.management import BaseCommand, call_command |
||
| 5 | |||
| 6 | from uid.models import Submission |
||
| 7 | |||
| 8 | |||
| 9 | class Command(BaseCommand): |
||
| 10 | help = """ |
||
| 11 | Deletes orphaned backup files: files in filesystem without any |
||
| 12 | correspondence in the backup table are deleted. Their existance is due to |
||
| 13 | a behaviour of django: files are deleted from the database but not |
||
| 14 | fisically from the filesystem. This command calls also mycheck after its |
||
| 15 | function. |
||
| 16 | """ |
||
| 17 | |||
| 18 | def handle(self, *args, **options): |
||
| 19 | # get the file list from the filesystem |
||
| 20 | data_source_dir = os.path.join( |
||
| 21 | settings.PROTECTED_MEDIA_ROOT, |
||
| 22 | Submission.upload_dir) |
||
| 23 | |||
| 24 | data_source_files = os.listdir(data_source_dir) |
||
| 25 | |||
| 26 | # prepend DataSource.upload_dir to file list |
||
| 27 | data_source_files = [ |
||
| 28 | os.path.join( |
||
| 29 | Submission.upload_dir, |
||
| 30 | uploaded_file) |
||
| 31 | for uploaded_file in data_source_files] |
||
| 32 | |||
| 33 | # get the file list from the db |
||
| 34 | queryset = Submission.objects.all() |
||
| 35 | database_files = [ |
||
| 36 | str(datasource.uploaded_file) for datasource in queryset] |
||
| 37 | |||
| 38 | for datasource_file in data_source_files: |
||
| 39 | if datasource_file not in database_files: |
||
| 40 | to_remove = os.path.join( |
||
| 41 | settings.PROTECTED_MEDIA_ROOT, |
||
| 42 | datasource_file) |
||
| 43 | |||
| 44 | # debug |
||
| 45 | print("Removing %s" % (to_remove)) |
||
| 46 | os.remove(to_remove) |
||
| 47 | |||
| 48 | call_command('mycheck') |
||
| 49 |