Completed
Pull Request — devel (#72)
by Paolo
06:25
created

uid.management.commands.clean_backup   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 3
eloc 28
dl 0
loc 49
rs 10
c 0
b 0
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
A Command.handle() 0 31 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