src/ldtplatform/management/commands/setpublic.py
author ymh <ymh.work@gmail.com>
Wed, 05 Jul 2017 13:01:27 +0200
changeset 350 c4bb8e679d17
parent 347 62d37265fd4a
permissions -rw-r--r--
Update ldt version nb + increment version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
347
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     1
'''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     2
set just created medias and contents public
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     3
'''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     4
import csv
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     5
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     6
from django.conf import settings
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     7
from django.core.management.base import BaseCommand
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     8
from django.contrib.auth.models import Group
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
     9
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    10
from ldt.security.cache import cached_assign
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    11
from ldt.ldt_utils.models import Content, Media
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    12
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    13
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    14
class Command(BaseCommand):
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    15
    '''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    16
    command
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    17
    '''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    18
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    19
    def add_arguments(self, parser):
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    20
        '''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    21
        add arguments
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    22
        '''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    23
        parser.add_argument('-p',
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    24
                            nargs='+',
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    25
                            dest='pathes',
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    26
                            default=None)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    27
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    28
    def handle(self, *args, **options):
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    29
        '''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    30
        handle command
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    31
        '''
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    32
        sources = []
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    33
        for path in options['pathes']:
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    34
            self.stdout.write(path)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    35
            try:
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    36
                csvfile = open(path, 'r')
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    37
            except IOError:
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    38
                self.stdout.write('file can\'t be opened')
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    39
                continue
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    40
            files = csv.reader(csvfile)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    41
            sources += list([content[0] for content in files])
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    42
            csvfile.close()
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    43
        everyone = Group.objects.get(name=settings.PUBLIC_GROUP_NAME)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    44
        for source in sources:
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    45
            media = Media.objects.get(src=source)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    46
            content = Content.objects.get(media_obj_id=media.id)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    47
            content.is_public = True
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    48
            content.save()
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    49
            cached_assign('view_content', everyone, content)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    50
            cached_assign('view_media', everyone, media)
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    51
62d37265fd4a set new medias and contents public
bellierp
parents:
diff changeset
    52