From 62cbe23b470a8b7ee137b8b6cf3413cda53fc91b Mon Sep 17 00:00:00 2001 From: chaitanya Date: Mon, 18 Jul 2016 16:51:52 +0530 Subject: [PATCH 1/6] added a custom template loader --- loaders.py | 26 +++++++ themes/theme1/templates/posts/index.html | 98 ++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 loaders.py create mode 100644 themes/theme1/templates/posts/index.html diff --git a/loaders.py b/loaders.py new file mode 100644 index 0000000..c9d7519 --- /dev/null +++ b/loaders.py @@ -0,0 +1,26 @@ +import os +from django.conf import settings +from django.template.loaders.base import Loader as BaseLoader + +from django.template import TemplateDoesNotExist +from django_blog_it.models import Theme + + +class Loader(BaseLoader): + is_usable = True + + def load_template_source(self, template_name, template_dirs=None): + + themes = Theme.objects.filter(enabled=True) + for theme in themes: + filepath = os.path.join(os.path.dirname(__file__), 'themes', theme.name, 'templates', template_name) + try: + file = open(filepath) + try: + return (file.read().decode(settings.FILE_CHARSET), filepath) + finally: + file.close() + except IOError: + pass + + raise TemplateDoesNotExist("Could not find template '%s'." % template_name) diff --git a/themes/theme1/templates/posts/index.html b/themes/theme1/templates/posts/index.html new file mode 100644 index 0000000..0d55482 --- /dev/null +++ b/themes/theme1/templates/posts/index.html @@ -0,0 +1,98 @@ +{% extends 'posts/new_base.html' %} +{% load paginate %} +{% load blog_tags %} + {% block blog_content %} + + + +
+ {% if blog_posts %} + {% paginate 5 blog_posts %} + {% for blog in blog_posts %} + +
+ +
+ + +
+ {{ blog.content|safe|truncatewords_html:50 }} +
+
+ Posted on {{ blog.updated_on|date:"F d, Y" }} + Replies 123 + Views 123 + +
+ +
+
+ + {% endfor %} + +
+ {% show_pages %} +
+ + {% else %} +

There are no Blog-posts are here !

+ {% endif %} +
+ + + {% endblock %} + + {% block js_script %} + + {% endblock %} From 026daa6f63999153d5db0fcbf1bdb74902277976 Mon Sep 17 00:00:00 2001 From: chaitanya Date: Mon, 18 Jul 2016 17:37:15 +0530 Subject: [PATCH 2/6] added theme model --- .../django_blog_it/migrations/0010_theme.py | 25 +++++++++++++++++++ django_blog_it/django_blog_it/models.py | 14 +++++++++++ 2 files changed, 39 insertions(+) create mode 100644 django_blog_it/django_blog_it/migrations/0010_theme.py diff --git a/django_blog_it/django_blog_it/migrations/0010_theme.py b/django_blog_it/django_blog_it/migrations/0010_theme.py new file mode 100644 index 0000000..be15c45 --- /dev/null +++ b/django_blog_it/django_blog_it/migrations/0010_theme.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-18 10:14 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('django_blog_it', '0009_contactussettings'), + ] + + operations = [ + migrations.CreateModel( + name='Theme', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=20, unique=True)), + ('slug', models.CharField(max_length=20, unique=True)), + ('description', models.CharField(max_length=500)), + ('enabled', models.BooleanField(default=False)), + ], + ), + ] diff --git a/django_blog_it/django_blog_it/models.py b/django_blog_it/django_blog_it/models.py index b978e4c..693c38c 100644 --- a/django_blog_it/django_blog_it/models.py +++ b/django_blog_it/django_blog_it/models.py @@ -5,6 +5,20 @@ from django.core.exceptions import ObjectDoesNotExist +class Theme(models.Model): + name = models.CharField(max_length=20, unique=True) + slug = models.CharField(max_length=20, unique=True) + description = models.CharField(max_length=500) + enabled = models.BooleanField(default=False) + + def save(self, *args, **kwargs): + self.slug = slugify(self.name) + super(Theme, self).save(*args, **kwargs) + + def __str__(self): + return self.name + + class Category(models.Model): name = models.CharField(max_length=20, unique=True) slug = models.CharField(max_length=20, unique=True) From d56073b5abd6a1437c2616046eea139cb87f61fa Mon Sep 17 00:00:00 2001 From: chaitanya Date: Thu, 21 Jul 2016 18:30:37 +0530 Subject: [PATCH 3/6] updated the manifest file to include loaders in the downloaded code --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index 8073d49..7392e4c 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -1,4 +1,5 @@ include README.rst +include loaders.py recursive-include django_blog_it/django_blog_it/templates * recursive-include django_blog_it/django_blog_it/static * recursive-include django_blog_it/posts/templates * \ No newline at end of file From c5fb0ea5b04023ab7d6a7805c0ae1b89b6f65f6f Mon Sep 17 00:00:00 2001 From: chaitanya Date: Thu, 21 Jul 2016 18:39:17 +0530 Subject: [PATCH 4/6] changed the location of loaders file --- loaders.py => django_blog_it/loaders.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename loaders.py => django_blog_it/loaders.py (100%) diff --git a/loaders.py b/django_blog_it/loaders.py similarity index 100% rename from loaders.py rename to django_blog_it/loaders.py From 7e4e898a3649dc0a836a2816dc7ca03ccf0f6ab1 Mon Sep 17 00:00:00 2001 From: chaitanya Date: Thu, 21 Jul 2016 18:46:16 +0530 Subject: [PATCH 5/6] changed the location of loaders file --- {themes => django_blog_it/themes}/theme1/templates/new_base.html | 0 .../themes}/theme1/templates/posts/index.html | 0 .../themes}/theme1/templates/posts/nav_submenu.html | 0 .../themes}/theme1/templates/posts/new_base.html | 0 .../themes}/theme1/templates/posts/new_blog_view.html | 0 .../themes}/theme1/templates/posts/new_index.html | 0 .../themes}/theme1/templates/posts/new_nav_menu.html | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename {themes => django_blog_it/themes}/theme1/templates/new_base.html (100%) rename {themes => django_blog_it/themes}/theme1/templates/posts/index.html (100%) rename {themes => django_blog_it/themes}/theme1/templates/posts/nav_submenu.html (100%) rename {themes => django_blog_it/themes}/theme1/templates/posts/new_base.html (100%) rename {themes => django_blog_it/themes}/theme1/templates/posts/new_blog_view.html (100%) rename {themes => django_blog_it/themes}/theme1/templates/posts/new_index.html (100%) rename {themes => django_blog_it/themes}/theme1/templates/posts/new_nav_menu.html (100%) diff --git a/themes/theme1/templates/new_base.html b/django_blog_it/themes/theme1/templates/new_base.html similarity index 100% rename from themes/theme1/templates/new_base.html rename to django_blog_it/themes/theme1/templates/new_base.html diff --git a/themes/theme1/templates/posts/index.html b/django_blog_it/themes/theme1/templates/posts/index.html similarity index 100% rename from themes/theme1/templates/posts/index.html rename to django_blog_it/themes/theme1/templates/posts/index.html diff --git a/themes/theme1/templates/posts/nav_submenu.html b/django_blog_it/themes/theme1/templates/posts/nav_submenu.html similarity index 100% rename from themes/theme1/templates/posts/nav_submenu.html rename to django_blog_it/themes/theme1/templates/posts/nav_submenu.html diff --git a/themes/theme1/templates/posts/new_base.html b/django_blog_it/themes/theme1/templates/posts/new_base.html similarity index 100% rename from themes/theme1/templates/posts/new_base.html rename to django_blog_it/themes/theme1/templates/posts/new_base.html diff --git a/themes/theme1/templates/posts/new_blog_view.html b/django_blog_it/themes/theme1/templates/posts/new_blog_view.html similarity index 100% rename from themes/theme1/templates/posts/new_blog_view.html rename to django_blog_it/themes/theme1/templates/posts/new_blog_view.html diff --git a/themes/theme1/templates/posts/new_index.html b/django_blog_it/themes/theme1/templates/posts/new_index.html similarity index 100% rename from themes/theme1/templates/posts/new_index.html rename to django_blog_it/themes/theme1/templates/posts/new_index.html diff --git a/themes/theme1/templates/posts/new_nav_menu.html b/django_blog_it/themes/theme1/templates/posts/new_nav_menu.html similarity index 100% rename from themes/theme1/templates/posts/new_nav_menu.html rename to django_blog_it/themes/theme1/templates/posts/new_nav_menu.html From 0bfd21fa8238b43789af7bfd65dff60eb20031ba Mon Sep 17 00:00:00 2001 From: chaitanya Date: Thu, 21 Jul 2016 18:47:54 +0530 Subject: [PATCH 6/6] updated the manifest file --- MANIFEST.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index 7392e4c..57df194 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -2,4 +2,5 @@ include README.rst include loaders.py recursive-include django_blog_it/django_blog_it/templates * recursive-include django_blog_it/django_blog_it/static * -recursive-include django_blog_it/posts/templates * \ No newline at end of file +recursive-include django_blog_it/posts/templates * +recursive-include django_blog_it/themes * \ No newline at end of file