from django.shortcuts import get_object_or_404, render
from django.conf import settings
from repository.models import File
from repository.navigation import breadcrumbs
from repository.tree import get_children_of
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 = get_children_of(file.path).order_by("-is_directory", "name")
return render(
request,
"repository/code_file.html",
{
"is_directory": True,
"file": file,
"files": dir_files,
"expanded_dirs": expanded_dirs,
"is_repo_page": True,
"breadcrumbs": breadcrumbs(file.path),
}
)
else:
return render(
request,
"repository/code_file.html",
{
"is_directory": False,
"file": file,
"files": None,
"expanded_dirs": expanded_dirs,
"is_repo_page": True,
"breadcrumbs": breadcrumbs(file.path),
}
)
def code_file_index(request):
files = get_children_of(None).order_by("-is_directory", "name")
return render(
request,
"repository/code_file.html",
{
"is_directory": True,
"file": None,
"files": files,
"expanded_dirs": [],
"is_repo_page": True,
"repo_name": settings.REPO_NAME,
}
)