mirror of
https://github.com/daniviga/django-ram.git
synced 2025-08-04 13:17:50 +02:00
Major templates and views refactoring
This commit is contained in:
@@ -33,29 +33,41 @@ def order_by_fields():
|
||||
return (fields[2], fields[0], fields[1], fields[3])
|
||||
|
||||
|
||||
class GetHome(View):
|
||||
class GetData(View):
|
||||
def __init__(self):
|
||||
self.title = "Home"
|
||||
self.template = "home.html"
|
||||
self.data = RollingStock.objects.order_by(*order_by_fields())
|
||||
|
||||
def get(self, request, page=1):
|
||||
site_conf = get_site_conf()
|
||||
rolling_stock = RollingStock.objects.order_by(*order_by_fields())
|
||||
|
||||
paginator = Paginator(rolling_stock, site_conf.items_per_page)
|
||||
rolling_stock = paginator.get_page(page)
|
||||
paginator = Paginator(self.data, site_conf.items_per_page)
|
||||
data = paginator.get_page(page)
|
||||
page_range = paginator.get_elided_page_range(
|
||||
rolling_stock.number, on_each_side=2, on_ends=1
|
||||
data.number, on_each_side=2, on_ends=1
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"home.html",
|
||||
self.template,
|
||||
{
|
||||
"title": "Home",
|
||||
"rolling_stock": rolling_stock,
|
||||
"title": self.title,
|
||||
"data": data,
|
||||
"matches": paginator.count,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class GetHomeFiltered(View):
|
||||
class GetRoster(GetData):
|
||||
def __init__(self):
|
||||
self.title = "Roster"
|
||||
self.template = "roster.html"
|
||||
self.data = RollingStock.objects.order_by(*order_by_fields())
|
||||
|
||||
|
||||
class GetRosterFiltered(View):
|
||||
def run_search(self, request, search, _filter, page=1):
|
||||
site_conf = get_site_conf()
|
||||
if _filter == "search":
|
||||
@@ -93,12 +105,13 @@ class GetHomeFiltered(View):
|
||||
query = Q(tags__slug__iexact=search)
|
||||
else:
|
||||
raise Http404
|
||||
|
||||
rolling_stock = (
|
||||
RollingStock.objects.filter(query)
|
||||
.distinct()
|
||||
.order_by(*order_by_fields())
|
||||
)
|
||||
matches = len(rolling_stock)
|
||||
matches = rolling_stock.count()
|
||||
|
||||
paginator = Paginator(rolling_stock, site_conf.items_per_page)
|
||||
rolling_stock = paginator.get_page(page)
|
||||
@@ -124,7 +137,7 @@ class GetHomeFiltered(View):
|
||||
"search_unsafe": search_unsafe,
|
||||
"filter": _filter,
|
||||
"matches": matches,
|
||||
"rolling_stock": rolling_stock,
|
||||
"data": rolling_stock,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
@@ -148,7 +161,7 @@ class GetHomeFiltered(View):
|
||||
# "search_unsafe": search_unsafe,
|
||||
"filter": _filter,
|
||||
"matches": matches,
|
||||
"rolling_stock": rolling_stock,
|
||||
"data": rolling_stock,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
@@ -193,26 +206,11 @@ class GetRollingStock(View):
|
||||
)
|
||||
|
||||
|
||||
class Consists(View):
|
||||
def get(self, request, page=1):
|
||||
site_conf = get_site_conf()
|
||||
consist = Consist.objects.all()
|
||||
|
||||
paginator = Paginator(consist, site_conf.items_per_page)
|
||||
consist = paginator.get_page(page)
|
||||
page_range = paginator.get_elided_page_range(
|
||||
consist.number, on_each_side=2, on_ends=1
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"consists.html",
|
||||
{
|
||||
"title": "Consists",
|
||||
"consist": consist,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
class Consists(GetData):
|
||||
def __init__(self):
|
||||
self.title = "Consists"
|
||||
self.template = "consists.html"
|
||||
self.data = Consist.objects.all()
|
||||
|
||||
|
||||
class GetConsist(View):
|
||||
@@ -222,7 +220,10 @@ class GetConsist(View):
|
||||
consist = Consist.objects.get(uuid=uuid)
|
||||
except ObjectDoesNotExist:
|
||||
raise Http404
|
||||
rolling_stock = consist.consist_item.all()
|
||||
rolling_stock = [
|
||||
RollingStock.objects.get(uuid=r.rolling_stock_id) for r in
|
||||
consist.consist_item.all()
|
||||
]
|
||||
|
||||
paginator = Paginator(rolling_stock, site_conf.items_per_page)
|
||||
rolling_stock = paginator.get_page(page)
|
||||
@@ -236,75 +237,38 @@ class GetConsist(View):
|
||||
{
|
||||
"title": consist,
|
||||
"consist": consist,
|
||||
"rolling_stock": rolling_stock,
|
||||
"data": rolling_stock,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
class Manufacturers(View):
|
||||
class Manufacturers(GetData):
|
||||
def __init__(self):
|
||||
self.title = "Manufacturers"
|
||||
self.template = "manufacturers.html"
|
||||
self.data = None # Set via method get
|
||||
|
||||
# overload get method to filter by category
|
||||
def get(self, request, category, page=1):
|
||||
site_conf = get_site_conf()
|
||||
if category not in ("real", "model"):
|
||||
raise Http404
|
||||
manufacturers = Manufacturer.objects.filter(category=category)
|
||||
|
||||
paginator = Paginator(manufacturers, site_conf.items_per_page)
|
||||
manufacturers = paginator.get_page(page)
|
||||
page_range = paginator.get_elided_page_range(
|
||||
manufacturers.number, on_each_side=2, on_ends=1
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"manufacturers.html",
|
||||
{
|
||||
"title": "Manufacturers",
|
||||
"category": category,
|
||||
"manufacturers": manufacturers,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
self.data = Manufacturer.objects.filter(category=category)
|
||||
return super().get(request, page)
|
||||
|
||||
|
||||
class Companies(View):
|
||||
def get(self, request, page=1):
|
||||
site_conf = get_site_conf()
|
||||
company = Company.objects.all()
|
||||
|
||||
paginator = Paginator(company, site_conf.items_per_page)
|
||||
company = paginator.get_page(page)
|
||||
page_range = paginator.get_elided_page_range(
|
||||
company.number, on_each_side=2, on_ends=1
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"companies.html",
|
||||
{
|
||||
"title": "Companies",
|
||||
"company": company,
|
||||
"page_range": page_range,
|
||||
},
|
||||
)
|
||||
class Companies(GetData):
|
||||
def __init__(self):
|
||||
self.title = "Companies"
|
||||
self.template = "companies.html"
|
||||
self.data = Company.objects.all()
|
||||
|
||||
|
||||
class Scales(View):
|
||||
def get(self, request, page=1):
|
||||
site_conf = get_site_conf()
|
||||
scale = Scale.objects.all()
|
||||
|
||||
paginator = Paginator(scale, site_conf.items_per_page)
|
||||
scale = paginator.get_page(page)
|
||||
page_range = paginator.get_elided_page_range(
|
||||
scale.number, on_each_side=2, on_ends=1
|
||||
)
|
||||
|
||||
return render(
|
||||
request,
|
||||
"scales.html",
|
||||
{"title": "Scales", "scale": scale, "page_range": page_range},
|
||||
)
|
||||
class Scales(GetData):
|
||||
def __init__(self):
|
||||
self.title = "Scales"
|
||||
self.template = "scales.html"
|
||||
self.data = Scale.objects.all()
|
||||
|
||||
|
||||
class GetFlatpage(View):
|
||||
|
Reference in New Issue
Block a user