from django.shortcuts import get_object_or_404, render
from repository.models import File
def code_file(request, file_path):
file_path = file_path.strip('/')
file = get_object_or_404(File, path=file_path)
expanded_dirs = []
if file.is_directory:
current = file.path
else:
current = file.parent_path
while current:
expanded_dirs.append(current)
parent_file = File.objects.filter(path=current).first()
if parent_file:
current = parent_file.parent_path
else:
current = None
if file.is_directory:
dir_files = File.get_files_in_directory(file_path)
return render(
request,
"repository/code_file.html",
{
"is_directory": True,
"file": file,
"files": dir_files,
"current_path": file_path,
"expanded_dirs": expanded_dirs,
"is_repo_page": True
}
)
else:
return render(
request,
"repository/code_file.html",
{
"is_directory": False,
"file": file,
"files": None,
"current_path": file_path,
"expanded_dirs": expanded_dirs,
"is_repo_page": True
}
)
def code_file_index(request):
"""Handle root directory listing"""
root_files = File.get_files_in_directory(None)
return render(
request,
"repository/code_file.html",
{
"is_directory": True,
"file": None,
"files": root_files,
"current_path": "",
"expanded_dirs": [],
"is_repo_page": True
}
)