def dict2dir(dir, dic, mode="w"): dir = Path(dir) if not dir.exists(): dir.mkdir() for filename, content in dic.items(): p = Path(dir, filename) if isinstance(content, dict): dict2dir(p, content) continue f = open(p, mode) f.write(content) f.close()
def import_olap_task(self, course_id, filename, just_clear=False): course_offering = CourseOffering.objects.get(id=course_id) file_path = Path(settings.DATA_PROCESSING_DIR, filename) try: with transaction.atomic(): importer = ImportLmsData(course_offering, file_path, just_clear=just_clear) importer.process() finally: file_path.remove() course_offering.is_importing = False course_offering.save()
def folder_source_clean_path(folder_source): if folder_source.path is not None: path = Path(folder_source.path) if not path.exists(): raise ValidationError({ "path": "The folder does not exist." }) elif path.islink(): raise ValidationError({ "path": "Symbolic links not allowed." }) elif not path.isdir(): raise ValidationError({ "path": "Not a folder." })
def parse_rar_archive(filename, sha256sum=False): print("Creating infolist for %s" % filename) with rarfile.RarFile(filename, 'r') as afile: infolist = afile.infolist() print("Infolist created for %s" % filename) tmpdir = tempfile.mkdtemp(prefix='extracted-rar-') cmd = ['rar', 'x', filename, tmpdir] subprocess.check_call(cmd) here = path.cwd() os.chdir(tmpdir) td = path(tmpdir) print("Parsing info") entries = list() for ainfo in infolist: if ainfo.isdir(): print("Skipping directory %s" % ainfo.filename) continue parsed = parse_archive_info(ainfo, 'rar') parsed['bytesize'] = ainfo.file_size size, cksum = get_extracted_info(td, ainfo, sha256sum=sha256sum) if size != ainfo.file_size: raise RuntimeError("Sizes don't match %s" % ainfo.filename) parsed['sha256sum'] = cksum entries.append(parsed) cmd = ['rm', '-fr', tmpdir] subprocess.check_call(cmd) os.chdir(here) return entries
def get_files(directory): here = path.cwd() directory = path(directory) os.chdir(directory) walker = directory.walk(filter=FILES) files = [p.relative() for p in walker if not p.relative().startswith(".")] os.chdir(here) return files
def file_source_clean_path(file_source): if file_source.path is not None: path = Path(file_source.path) if not path.exists(): raise ValidationError({ "path": "The file does not exist." }) elif path.islink(): raise ValidationError({ "path": "Symbolic links not allowed." }) elif not path.isfile(): raise ValidationError({ "path": "Not a file." }) elif not is_valid_file(path): raise ValidationError({ "path": "Not a valid file." })
def preprocess_data_imports(self): processing_data_folder = settings.DATA_PROCESSING_DIR import_metadata = get_course_import_metadata() import_metadata_mapping = { course_offering['filename']: course_offering['id'] for course_offering in import_metadata['courses'].values() } import_files = Path(import_metadata['import_location']).listdir() for import_file in import_files: try: course_offering = CourseOffering.objects.get( id=import_metadata_mapping[import_file.name]) import_file.move(processing_data_folder) course_offering.is_importing = True course_offering.save() import_olap_task.delay(course_offering.id, import_file.name) except KeyError: # File is unrecognised so remove it import_file.remove()
def clear_thumbnails_cache(queryset, field, time_create=0): now = datetime.now() for r in queryset: assert hasattr(r, field), _( 'Objeto da listagem não possui o campo informado') if not getattr(r, field): continue path = Path(getattr(r, field).path) cache_files = path.parent.walk() for cf in cache_files: if cf == path: continue if time_create: data_arquivo = datetime.fromtimestamp(cf.mtime()) if now - data_arquivo < timedelta(time_create): continue cf.remove()
class Migration(migrations.Migration): dependencies = [ ('ouvidoria', '0006_auto_20190514_0944'), ] operations = [ migrations.AlterField( model_name='mensagemsolicitacao', name='anexo', field=models.FileField(blank=True, help_text='Envie um arquivo em anexo a sua mensagem.', null=True, storage=django.core.files.storage.FileSystemStorage(base_url='DO_NOT_USE', location=Path( '/home/leandro/desenvolvimento/envs/cmj_media/media_protected')), upload_to=cmj.ouvidoria.models.anexo_ouvidoria_path, validators=[cmj.utils.restringe_tipos_de_arquivo_midias], verbose_name='Anexo'), ), ]
from unipath.path import Path # Django root path where manage.py resides. BASE_DIR = Path(__file__).ancestor(4) # The project path which has BASE_DIR, .gitignore, and etc. PROJECT_DIR = BASE_DIR.parent
'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'djangor.urls' ALLOWED_HOSTS = ['*'] TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [Path(__file__).ancestor(1).child('templates')], 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'djangor.wsgi.application'
def location_exists(location): path = Path(location) return path.exists()