Exemplo n.º 1
0
 def __init__(self, *args: Any, **kwargs: Any) -> None:
     super().__init__(*args, **kwargs)
     self.num_copied_files = 0
     self.tasks: List[Task] = []
     self.collectfast_enabled = settings.enabled
     self.strategy: Strategy = DisabledStrategy(Storage())
     self.found_files: Dict[str, Tuple[Storage, str]] = {}
Exemplo n.º 2
0
 def __init__(self, *args, **kwargs):
     # type: (Any, Any) -> None
     super().__init__(*args, **kwargs)
     self.num_copied_files = 0
     self.tasks = []  # type: List[Task]
     self.collectfast_enabled = settings.enabled
     self.strategy = DisabledStrategy(Storage())  # type: Strategy
Exemplo n.º 3
0
def directory_path(instance, filename):
    """."""

    # In COR_PARAMETER, add a new parameter by company, in this repo is a dict
    base_folder_by_company = {1: 'ftpettc', 5: 'ftpnrcc'}

    #  Concat filename with time for generate new_name
    filename_new = '{}{}'.format(filename, instance.date.strftime('%H:%M:%S'))
    filename_new = hashlib.md5(filename_new.encode()).hexdigest()

    company = base_folder_by_company[instance.company.id]
    file_path = '{}/{}/'.format(company, instance.document_type.folder_path)

    sub_folder_list_conf = instance.document_type.sub_folder_path.split(',') \
        if instance.document_type.sub_folder_path else []
    sub_folder_list = instance.folder_params.split(',') \
        if instance.folder_params else []
    sub_folder = ''

    # validate sub_folder structure
    if sub_folder_list_conf and len(sub_folder_list) == len(
            sub_folder_list_conf):
        storage = Storage()
        for sub_folder_item in sub_folder_list:
            valid_sub_folder = storage.get_valid_name(sub_folder_item)
            if valid_sub_folder != '':
                sub_folder += '{}/'.format(valid_sub_folder)
            else:
                # if not is a valid subfolder, dicard subfolder
                sub_folder = ''
                break

    file_path += sub_folder
    file_path += filename_new
    return file_path
Exemplo n.º 4
0
    def test_storage_methods(self):
        """
        Make sure that QueuedStorage implements all the methods
        """
        storage = QueuedStorage('django.core.files.storage.FileSystemStorage',
                                'django.core.files.storage.FileSystemStorage')

        file_storage = Storage()

        for attr in dir(file_storage):
            method = getattr(file_storage, attr)

            if not callable(method):
                continue

            method = getattr(storage, attr, False)
            self.assertTrue(callable(method),
                            "QueuedStorage has no method '%s'" % attr)
Exemplo n.º 5
0
    def get(self, request, event, *args, **kwargs):
        netloc = urlparse(settings.SITE_URL).netloc
        speaker = self.get_object()
        slots = self.request.event.current_schedule.talks.filter(
            submission__speakers=speaker.user, is_visible=True)

        cal = vobject.iCalendar()
        cal.add(
            'prodid'
        ).value = f'-//pretalx//{netloc}//{request.event.slug}//{speaker.code}'

        for slot in slots:
            slot.build_ical(cal)

        resp = HttpResponse(cal.serialize(), content_type='text/calendar')
        speaker_name = Storage().get_valid_name(name=speaker.user.name)
        resp[
            'Content-Disposition'] = f'attachment; filename="{request.event.slug}-{speaker_name}.ics"'
        return resp
Exemplo n.º 6
0
    def get(self, request, event, *args, **kwargs):
        netloc = urlparse(settings.SITE_URL).netloc
        speaker = self.get_object()
        slots = self.request.event.current_schedule.talks.filter(
            submission__speakers=speaker.user, is_visible=True
        ).select_related("room", "submission")

        cal = vobject.iCalendar()
        cal.add(
            "prodid"
        ).value = f"-//pretalx//{netloc}//{request.event.slug}//{speaker.code}"

        for slot in slots:
            slot.build_ical(cal)

        speaker_name = Storage().get_valid_name(name=speaker.user.name)
        return HttpResponse(
            cal.serialize(),
            content_type="text/calendar",
            headers={
                "Content-Disposition": f'attachment; filename="{request.event.slug}-{safe_filename(speaker_name)}.ics"'
            },
        )
Exemplo n.º 7
0

# Storage location for uploaded images depends on environment.

if not settings.IN_PRODUCTION:
    # Local development environment upload
    upload_storage = FileSystemStorage(
            location=os.path.join(settings.MEDIA_ROOT, 'upload_images'),
            base_url=urlparse.urljoin(settings.MEDIA_URL, 'upload_images/'))
elif settings.IS_AWS_AUTHENTICATED:
    # Direct upload to S3
    upload_storage = S3BotoStorage(location='/upload_images',
            bucket=getattr(settings, 'AWS_STORAGE_BUCKET_NAME', 'newfs'))
else:
    # Direct upload to S3
    upload_storage = Storage()


def rename_image_by_type(instance, filename):
    user_name = instance.uploaded_by.username.lower()
    image_type = instance.image_type.lower()

    # Create and update a hash object for getting a unique name.
    md5 = hashlib.md5()
    md5.update(filename)
    md5.update(user_name)
    md5.update(image_type)
    md5.update(str(datetime.datetime.now()))

    new_name = '{0}_{1}.jpg'.format(user_name, md5.hexdigest())
    return os.path.join(image_type, new_name)
Exemplo n.º 8
0
import os, sys
from django.conf import settings
from django.core.files.storage import Storage

DIRNAME = os.path.dirname(__file__)
settings.configure(
    DEBUG=True,
    DATABASES={'default': {
        'ENGINE': 'django.db.backends.sqlite3',
    }},
    DATABASE_NAME=os.path.join('database.db'),
    INSTALLED_APPS=(
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.admin',
        'filemignon',
        'tests',
    ),
    FILEMIGNON_STORAGE=Storage(),
)

from django.test.simple import DjangoTestSuiteRunner
test_runner = DjangoTestSuiteRunner(verbosity=1)

failures = test_runner.run_tests([
    'tests',
])
if failures:
    sys.exit(failures)