Passed
Pull Request — master (#72)
by Paolo
16:34
created

Command.handle()   A

Complexity

Conditions 3

Size

Total Lines 31
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 21
dl 0
loc 31
rs 9.376
c 0
b 0
f 0
cc 3
nop 3
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