diff options
-rw-r--r-- | cms/admin.py | 6 | ||||
-rw-r--r-- | cms/models.py | 13 | ||||
-rw-r--r-- | cms/templates/cms_base.html | 8 | ||||
-rw-r--r-- | cms/urls.py | 2 | ||||
-rw-r--r-- | cms/views.py | 21 |
5 files changed, 30 insertions, 20 deletions
diff --git a/cms/admin.py b/cms/admin.py index 595793e..d0b7626 100644 --- a/cms/admin.py +++ b/cms/admin.py @@ -6,18 +6,18 @@ from cms.models import * # Register your models here. class NavAdmin(admin.ModelAdmin): - list_display = ['name', 'link', 'position'] + list_display = ['name', 'link', 'position', 'active'] ordering = ['position'] class SubNavAdmin(admin.ModelAdmin): - list_display = ['name', 'nav', 'link', 'position'] + list_display = ['name', 'nav', 'link', 'position', 'active'] ordering = ['nav', 'position'] list_filter = ['nav'] class PageAdmin(admin.ModelAdmin): - list_display = ['title', 'permalink', 'pub_date'] + list_display = ['title', 'permalink', 'pub_date', 'active'] class StaticFileAdmin(admin.ModelAdmin): diff --git a/cms/models.py b/cms/models.py index 05b761f..be6b054 100644 --- a/cms/models.py +++ b/cms/models.py @@ -9,8 +9,9 @@ from django.db import models class Nav(models.Model): name = models.CharField(max_length=20) - link = models.CharField(max_length=20) + link = models.CharField(max_length=255) position = models.IntegerField() + active = models.BooleanField(default=True) def __str__(self): return self.name @@ -19,8 +20,9 @@ class Nav(models.Model): class SubNav(models.Model): nav = models.ForeignKey(Nav, on_delete=models.CASCADE) name = models.CharField(max_length=20) - link = models.CharField(max_length=100) + link = models.CharField(max_length=255) position = models.IntegerField() + active = models.BooleanField(default=True) def __str__(self): return self.name @@ -29,10 +31,13 @@ class SubNav(models.Model): class Page(models.Model): permalink = models.CharField(max_length=100, unique=True) title = models.CharField(max_length=50) - imports = models.TextField(help_text='External imports like css,js files, will be placed in <head> tag (already ' - 'includes bootstrap4 and jQuery)', null=True, blank=True) + imports = models.TextField( + help_text='External imports like css,js files, will be placed in <head> tag (already ' + 'includes bootstrap4 and jQuery)', null=True, blank=True + ) content = models.TextField(help_text='Body of the page') pub_date = models.DateTimeField('date published', auto_now_add=True) + active = models.BooleanField(default=True) def __str__(self): return self.title diff --git a/cms/templates/cms_base.html b/cms/templates/cms_base.html index 90d0e2b..4f43329 100644 --- a/cms/templates/cms_base.html +++ b/cms/templates/cms_base.html @@ -3,7 +3,7 @@ {% load static %} <head> <meta charset="UTF-8"> - <title>{{ page.title }}</title> + <title>{{ page.title|title }}</title> <link rel="stylesheet" href="{% static 'cms/css/bootstrap.min.css' %}"> <script src="{% static 'cms/js/jquery-3.4.1.slim.min.js' %}"></script> @@ -14,8 +14,8 @@ </head> <body> -<nav class=" navbar-custom navbar navbar-expand-lg bg-light"> - <a class="navbar-brand" href="/">FOSSEE Python Workshops</a> +<nav class=" navbar navbar-dark navbar navbar-expand-lg bg-dark fixed-top"> + <a class="navbar-brand" href="/">FOSSEE Workshops</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> @@ -52,6 +52,8 @@ </div> </div> </nav> +<div class="base-content"> {{ page.content | safe }} +</div> </body> </html>
\ No newline at end of file diff --git a/cms/urls.py b/cms/urls.py index b0c7612..baae492 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -2,6 +2,8 @@ from django.conf.urls import url from cms import views +app_name = "cms" + urlpatterns = [ url('^$', views.home, name='home'), url('^(?P<permalink>.+)$', views.home, name='home') diff --git a/cms/views.py b/cms/views.py index 0b74822..fc1439a 100644 --- a/cms/views.py +++ b/cms/views.py @@ -9,20 +9,21 @@ from cms.models import Page, Nav, SubNav def home(request, permalink=''): if permalink == '': permalink = 'home' - page = Page.objects.filter(permalink=permalink) - nav_objs = Nav.objects.all().order_by('-position') - subnav_objects = SubNav.objects.all() + page = Page.objects.filter(permalink=permalink, active=True) + if page.exists(): + page = page.first() + else: + raise Http404("The requested page does not exists") + nav_objs = Nav.objects.filter(active=True).order_by('-position') navs = [] for nav in nav_objs: nav_obj = model_to_dict(nav) - nav_obj['subnavs'] = subnav_objects.filter(nav=nav).order_by('position') + nav_obj['subnavs'] = nav.subnav_set.filter( + active=True).order_by('position') navs.insert(-1, nav_obj) - if page.exists(): - page = page.first() - else: - raise Http404() - - return render(request, 'cms_base.html', {'page': page, 'navs': navs}) + return render( + request, 'cms_base.html', {'page': page, 'navs': navs} + ) |