def delete_file(request): selected_theme = request.GET.get("theme_edit", get_theme()) if not is_valid_theme(selected_theme): raise Http404(_('Specified theme does not exist')) if is_theme_read_only(selected_theme): raise Http403 current_dir = request.GET.get("dir", '') if current_dir: current_dir = current_dir.replace('\\', '/') current_dir = current_dir.strip('/') current_dir = current_dir.replace('////', '/') current_dir = current_dir.replace('///', '/') current_dir = current_dir.replace('//', '/') if current_dir.startswith('plugins.'): current_dir = current_dir.split('plugins.')[1] chosen_file = request.GET.get("file", '') if chosen_file: chosen_file = chosen_file.replace('\\', '/') chosen_file = chosen_file.strip('/') chosen_file = chosen_file.replace('////', '/') chosen_file = chosen_file.replace('///', '/') chosen_file = chosen_file.replace('//', '/') theme_root = get_theme_root(selected_theme) if (not is_valid_path(theme_root, current_dir) or not is_valid_path( theme_root, os.path.join(current_dir, chosen_file))): raise Http403 full_filename = os.path.join(theme_root, current_dir, chosen_file) if not os.path.isfile(full_filename): raise Http404 os.remove(full_filename) if settings.USE_S3_STORAGE: s3_path = selected_theme + '/' + current_dir + chosen_file s3_full_path = settings.AWS_LOCATION + '/' + settings.THEME_S3_PATH + '/' + s3_path delete_file_from_s3(file=s3_full_path) cache_key = ".".join([settings.SITE_CACHE_KEY, 'theme', s3_path]) cache.delete(cache_key) msg_string = 'Successfully deleted %s/%s.' % (current_dir, chosen_file) messages.add_message(request, messages.SUCCESS, _(msg_string)) EventLog.objects.log() return redirect('theme_editor.editor')
def delete_file(request): # if no permission; raise 403 exception if not has_perm(request.user, 'theme_editor.change_themefileversion'): raise Http403 current_dir = request.GET.get("dir", '') if current_dir: current_dir = current_dir.replace('\\', '/') current_dir = current_dir.strip('/') current_dir = current_dir.replace('////', '/') current_dir = current_dir.replace('///', '/') current_dir = current_dir.replace('//', '/') if current_dir.startswith('plugins.'): current_dir = current_dir.split('plugins.')[1] chosen_file = request.GET.get("file", '') if chosen_file: chosen_file = chosen_file.replace('\\', '/') chosen_file = chosen_file.strip('/') chosen_file = chosen_file.replace('////', '/') chosen_file = chosen_file.replace('///', '/') chosen_file = chosen_file.replace('//', '/') full_filename = os.path.join(settings.PROJECT_ROOT, "themes", get_theme(), current_dir, chosen_file) if not os.path.isfile(full_filename): raise Http404 os.remove(full_filename) if settings.USE_S3_STORAGE: delete_file_from_s3(file=settings.AWS_LOCATION + '/' + 'themes/' + get_theme() + '/' + current_dir + chosen_file) messages.add_message(request, messages.SUCCESS, ('Successfully deleted %s/%s.' % (current_dir, chosen_file))) EventLog.objects.log() return redirect('theme_editor.editor')
def delete_file(request): # if no permission; raise 403 exception if not has_perm(request.user, 'theme_editor.change_themefileversion'): raise Http403 current_dir = request.GET.get("dir", '') if current_dir: current_dir = current_dir.replace('\\', '/') current_dir = current_dir.strip('/') current_dir = current_dir.replace('////', '/') current_dir = current_dir.replace('///', '/') current_dir = current_dir.replace('//', '/') if current_dir.startswith('plugins.'): current_dir = current_dir.split('plugins.')[1] chosen_file = request.GET.get("file", '') if chosen_file: chosen_file = chosen_file.replace('\\', '/') chosen_file = chosen_file.strip('/') chosen_file = chosen_file.replace('////', '/') chosen_file = chosen_file.replace('///', '/') chosen_file = chosen_file.replace('//', '/') full_filename = os.path.join(settings.PROJECT_ROOT, "themes", get_theme(), current_dir, chosen_file) if not os.path.isfile(full_filename): raise Http404 os.remove(full_filename) if settings.USE_S3_STORAGE: delete_file_from_s3(file=settings.AWS_LOCATION + '/' + 'themes/' + get_theme() + '/' + current_dir + chosen_file) msg_string = 'Successfully deleted %s/%s.' % (current_dir, chosen_file) messages.add_message(request, messages.SUCCESS, _(msg_string)) EventLog.objects.log() return redirect('theme_editor.editor')
def theme_delete(request): if not request.user.profile.is_superuser: raise Http403 selected_theme = request.GET.get("theme_edit", get_theme()) if not is_valid_theme(selected_theme): raise Http404(_('Specified theme does not exist')) if is_theme_read_only(selected_theme): raise Http403 shutil.rmtree(get_theme_root(selected_theme)) if settings.USE_S3_STORAGE: delete_file_from_s3(file=settings.AWS_LOCATION + '/' + settings.THEME_S3_PATH + '/' + selected_theme) msg_string = 'Successfully deleted %s.' % (selected_theme) messages.add_message(request, messages.SUCCESS, _(msg_string)) EventLog.objects.log() return redirect('theme_editor.editor')