├── blogs ├── __init__.py ├── tests │ ├── __init__.py │ ├── tests_forms.py │ ├── tests_urls.py │ ├── tests_models.py │ └── tests_views.py ├── migrations │ ├── __init__.py │ ├── 0008_auto_20210805_1232.py │ ├── 0005_auto_20210725_1505.py │ ├── 0003_notification_n_count.py │ ├── 0014_auto_20211221_1430.py │ ├── 0004_blog_slug.py │ ├── 0011_auto_20210808_1310.py │ ├── 0013_auto_20210810_1913.py │ ├── 0010_auto_20210808_1308.py │ ├── 0012_auto_20210808_1320.py │ ├── 0007_auto_20210805_1221.py │ ├── 0009_auto_20210805_1234.py │ ├── 0006_auto_20210804_1245.py │ ├── 0002_notification.py │ └── 0001_initial.py ├── templatetags │ ├── __init__.py │ ├── set_key.py │ └── dict_key.py ├── apps.py ├── static │ └── blogs │ │ ├── favicon.png │ │ ├── script.min.js │ │ ├── styles.min.css │ │ └── script.js ├── admin.py ├── context_processors.py ├── forms.py ├── templates │ └── blogs │ │ ├── search.html │ │ ├── blog_confirm_delete.html │ │ ├── blog_form.html │ │ ├── notifications.html │ │ ├── sample.html │ │ ├── view_post.html │ │ ├── index.html │ │ └── base.html ├── urls.py ├── test.html ├── models.py └── views.py ├── users ├── __init__.py ├── tests │ ├── __init__.py │ ├── tests_forms.py │ ├── tests_urls.py │ ├── tests_models.py │ └── tests_views.py ├── migrations │ ├── __init__.py │ ├── 0003_auto_20210805_1249.py │ ├── 0002_auto_20210804_1247.py │ └── 0001_initial.py ├── admin.py ├── apps.py ├── templates │ └── users │ │ ├── password_reset_done.html │ │ ├── password_reset_complete.html │ │ ├── logout.html │ │ ├── password_reset.html │ │ ├── password_reset_confirm.html │ │ ├── register.html │ │ ├── login.html │ │ ├── profile.html │ │ ├── update_profile.html │ │ ├── view_profile.html │ │ └── followers.html ├── signals.py ├── models.py ├── urls.py ├── forms.py └── views.py ├── blogs_api ├── __init__.py ├── migrations │ └── __init__.py ├── models.py ├── admin.py ├── apps.py ├── serializers.py ├── urls.py ├── views.py └── DRF_Notes.md ├── Blog_application ├── __init__.py ├── settings │ ├── __init__.py │ ├── base.py │ ├── development.py │ └── production.py ├── asgi.py ├── wsgi.py └── urls.py ├── Procfile ├── screenshots ├── README.md ├── Screenshot_2021-07-30-22-09-44-19.jpg └── Screenshot_2021-07-30-22-10-53-97.jpg ├── media ├── default.png ├── profile_pics │ ├── Superman.jpg │ ├── interstellar.jpg │ ├── IMG_20200912_220030.jpg │ ├── IMG_20200912_223226.jpg │ └── 18-180335_transparent-captain-clipart-captain-america-shield-png-png.png └── posts_images │ ├── Profile_pic.jpg │ ├── interstellar.jpg │ ├── Tenet_movie_poster.jpg │ └── Profile_pic_fqTuRqo.jpg ├── .vscode └── settings.json ├── manage.py ├── requirements.txt ├── README.md └── .gitignore /blogs/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs_api/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Blog_application/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs_api/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Blog_application/settings/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /Procfile: -------------------------------------------------------------------------------- 1 | web: gunicorn Blog_application.wsgi -------------------------------------------------------------------------------- /screenshots/README.md: -------------------------------------------------------------------------------- 1 | ### Screenshots of the application. 2 | -------------------------------------------------------------------------------- /blogs_api/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /blogs_api/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /media/default.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/default.png -------------------------------------------------------------------------------- /blogs/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class BlogsConfig(AppConfig): 5 | name = 'blogs' 6 | -------------------------------------------------------------------------------- /blogs/static/blogs/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/blogs/static/blogs/favicon.png -------------------------------------------------------------------------------- /media/profile_pics/Superman.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/profile_pics/Superman.jpg -------------------------------------------------------------------------------- /blogs_api/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class BlogsApiConfig(AppConfig): 5 | name = 'blogs_api' 6 | -------------------------------------------------------------------------------- /media/posts_images/Profile_pic.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/posts_images/Profile_pic.jpg -------------------------------------------------------------------------------- /media/posts_images/interstellar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/posts_images/interstellar.jpg -------------------------------------------------------------------------------- /media/profile_pics/interstellar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/profile_pics/interstellar.jpg -------------------------------------------------------------------------------- /media/posts_images/Tenet_movie_poster.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/posts_images/Tenet_movie_poster.jpg -------------------------------------------------------------------------------- /media/posts_images/Profile_pic_fqTuRqo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/posts_images/Profile_pic_fqTuRqo.jpg -------------------------------------------------------------------------------- /media/profile_pics/IMG_20200912_220030.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/profile_pics/IMG_20200912_220030.jpg -------------------------------------------------------------------------------- /media/profile_pics/IMG_20200912_223226.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/profile_pics/IMG_20200912_223226.jpg -------------------------------------------------------------------------------- /screenshots/Screenshot_2021-07-30-22-09-44-19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/screenshots/Screenshot_2021-07-30-22-09-44-19.jpg -------------------------------------------------------------------------------- /screenshots/Screenshot_2021-07-30-22-10-53-97.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/screenshots/Screenshot_2021-07-30-22-10-53-97.jpg -------------------------------------------------------------------------------- /users/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Profile, Followers 3 | 4 | admin.site.register(Profile) 5 | admin.site.register(Followers) 6 | 7 | -------------------------------------------------------------------------------- /users/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class UsersConfig(AppConfig): 5 | name = 'users' 6 | 7 | def ready(self): 8 | import users.signals -------------------------------------------------------------------------------- /media/profile_pics/18-180335_transparent-captain-clipart-captain-america-shield-png-png.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Ram-95/blog_application_django/HEAD/media/profile_pics/18-180335_transparent-captain-clipart-captain-america-shield-png-png.png -------------------------------------------------------------------------------- /users/templates/users/password_reset_done.html: -------------------------------------------------------------------------------- 1 | {% extends "blogs/base.html" %} 2 | {% block content %} 3 |
{{ i.user.user }}
26 | 27 |{{ i.followers.user }}
39 | 40 |9 | Notifications
10 | {% for notif in unread_notifications %} 11 | {% if notif.n_post_id == -1 %} 12 | 14 |'+comment+"
")}))})),$(document).on("click",".save_edit_btn",(function(){comment_id=$(this).closest("li").attr("id"),edit_comment=$(".comment_edit_text").val(),$.ajax({type:"POST",url:"/edit_comment/",cache:!1,data:{comment_id:comment_id,edit_comment:edit_comment},success:function(){$(".edit_delete").show(),$("#"+comment_id).find(".comment_p").html(''+edit_comment+"
")}})})),$(document).on("click",".notification-list",(function(){n_id=$(this).attr("id"),$.ajax({type:"POST",url:"/mark_notification_as_read/",cache:!1,data:{n_post_id:n_id},success:function(){}})})),$("#noti_Button").click((function(){return $("#notifications").fadeToggle("fast","linear",(function(){$("#notifications").is(":hidden")})),$("#noti_counter").fadeOut("slow"),!1})),$(document).click((function(){$("#notifications").hide()})),$(".index_blog_full_description img").click((function(){$("#full-image").attr("src",$(this).attr("src")),$("#image-viewer").show()})),$(".blog_image").click((function(){$("#full-image").attr("src",$(this).attr("src")),$("#image-viewer").show()})),$("#image-viewer").on("click",(function(){$("#image-viewer").hide()})),$("#image-viewer .close").click((function(){$("#image-viewer").hide()})),$("#txtSearch").keyup((function(){var val=$(this).val();$.ajax({type:"GET",data:{uname:val},url:"/searchUser/",success:function(data){if(data.results.length>0)for(var key in $("#searchResults").empty(),data)for(var val in data[key]){var htm='Lorem ipsum dolor sit amet consectetur adipisicing elit. Molestiae dignissimos, culpa explicabo 68 | cupiditate eaque repellendus? Unde assumenda, placeat necessitatibus eveniet sapiente obcaecati, quas 69 | nulla consequatur ullam adipisci rem omnis repudiandae! 70 | Veritatis, aperiam minus laborum dignissimos pariatur fugiat eveniet sed dolores totam at quisquam 71 | doloribus odit quos ipsum possimus molestiae debitis architecto inventore earum culpa delectus 72 | aspernatur iure. At, consequuntur harum. 73 | Aliquam commodi dignissimos cum perferendis aut consequatur rerum odio in. Excepturi vitae quis sed 74 | doloremque illum eligendi neque vero, minus quaerat libero consectetur dicta quasi adipisci quia 75 | similique id inventore. 76 | Culpa cupiditate esse ipsam doloribus delectus repellat voluptatibus labore obcaecati eaque iusto. Sed 77 | dolorum laborum quasi, incidunt culpa tempora adipisci minus natus facere dignissimos. Unde, ducimus 78 | perspiciatis! Totam, aliquid assumenda! 79 | A, placeat libero excepturi necessitatibus aliquam eaque deleniti repellat natus corporis, assumenda 80 | dolores veritatis nesciunt ipsum culpa soluta ex pariatur vel corrupti, tempore atque nam molestiae 81 | fugit quo iste! Fugiat. 82 | Mollitia, itaque? Hic facilis temporibus quod, iure ipsum non saepe, quidem dolorem omnis sunt ipsa fuga 83 | exercitationem magni deleniti blanditiis assumenda fugiat ut atque reprehenderit delectus nostrum! 84 | Labore, earum obcaecati? 85 | Ullam accusamus numquam repellat magnam quis doloribus reprehenderit maiores rem facere quia, expedita 86 | sapiente reiciendis voluptatibus quidem veritatis, quam magni id quasi aut. Amet recusandae voluptatibus 87 | repudiandae incidunt sapiente harum. 88 | Atque iusto voluptate quae laborum a culpa accusantium sequi itaque ipsa commodi suscipit eum laboriosam 89 | libero ex molestias iste nihil officiis temporibus distinctio in, eius cupiditate saepe non alias. Et! 90 | Praesentium nam earum accusantium ad distinctio autem, eaque numquam dolores quia dolorem nobis officiis 91 | laboriosam consectetur aspernatur iusto nulla qui porro cupiditate mollitia. Tempora, ratione asperiores 92 | rem et voluptate autem? 93 | Quam, quia? Expedita explicabo vitae deserunt aperiam dolore ducimus voluptatibus nisi? Porro voluptates 94 | labore ratione quasi recusandae laborum similique eius! Iste incidunt veritatis amet deserunt aspernatur 95 | quo qui doloremque expedita.
96 |Latest Blogs
99 |Trending Blogs
106 |Misc
113 | 114 |{{ no_of_comments }} Comment{{ no_of_comments|pluralize }}
74 |No comments yet...
100 | {% endif %} 101 | 102 | 103 |Popular Blogs
101 | 102 | {% for blog in blogs_list_top5 %} 103 |Top Bloggers
111 | 112 | {% for item in top_authors %} 113 |Most Viewed Posts
119 | 120 | {% for item in blogs_list_top_viewed %} 121 |' + comment + '
'); 181 | }); 182 | 183 | }); 184 | 185 | 186 | /* Script that runs when comment is edited */ 187 | $(document).on("click", ".save_edit_btn", function () { 188 | comment_id = $(this).closest("li").attr("id"); 189 | edit_comment = $('.comment_edit_text').val(); 190 | //alert('ID: ' + comment_id + ' Text: ' + edit_comment); 191 | $.ajax({ 192 | type: 'POST', 193 | url: '/edit_comment/', 194 | cache: false, 195 | data: { 196 | comment_id: comment_id, 197 | edit_comment: edit_comment, 198 | }, 199 | success: function () { 200 | //alert('success'); 201 | $('.edit_delete').show(); 202 | $("#" + comment_id).find('.comment_p').html('' + edit_comment + '
'); 203 | } 204 | }); 205 | }); 206 | 207 | 208 | $(document).on("click", ".notification-list", function () { 209 | n_id = $(this).attr('id'); 210 | //alert(n_id); 211 | $.ajax({ 212 | type: 'POST', 213 | url: '/mark_notification_as_read/', 214 | cache: false, 215 | data: { 216 | n_post_id: n_id, 217 | }, 218 | success: function () { 219 | //alert('Marked as Read.'); 220 | } 221 | }); 222 | }); 223 | 224 | $('#noti_Button').click(function () { 225 | // TOGGLE (SHOW OR HIDE) NOTIFICATION WINDOW. 226 | $('#notifications').fadeToggle('fast', 'linear', function () { 227 | if ($('#notifications').is(':hidden')) { 228 | } 229 | }); 230 | 231 | $('#noti_counter').fadeOut('slow'); // HIDE THE COUNTER. 232 | 233 | return false; 234 | }); 235 | 236 | // HIDE NOTIFICATIONS WHEN CLICKED ANYWHERE ON THE PAGE. 237 | $(document).click(function () { 238 | $('#notifications').hide(); 239 | }); 240 | 241 | /* 242 | $('#notifications').click(function () { 243 | return false; // DO NOTHING WHEN CONTAINER IS CLICKED. 244 | });*/ 245 | 246 | $('.index_blog_full_description img').click(function () { 247 | $("#full-image").attr("src", $(this).attr("src")); 248 | $('#image-viewer').show(); 249 | }); 250 | 251 | 252 | $(".blog_image").click(function () { 253 | $("#full-image").attr("src", $(this).attr("src")); 254 | $('#image-viewer').show(); 255 | }); 256 | 257 | 258 | $("#image-viewer").on('click', function () { 259 | $('#image-viewer').hide(); 260 | }); 261 | 262 | $("#image-viewer .close").click(function () { 263 | $('#image-viewer').hide(); 264 | }); 265 | 266 | 267 | 268 | /* Search function */ 269 | 270 | $("#txtSearch").keyup(function () { 271 | var val = $(this).val(); 272 | //console.log(val); 273 | $.ajax({ 274 | type: "GET", 275 | data: { 'uname': val }, 276 | url: '/searchUser/', 277 | success: function (data) { 278 | //console.log(data); 279 | 280 | if (data.results.length > 0) { 281 | $('#searchResults').empty(); 282 | for (var key in data) { 283 | for (var val in data[key]) { 284 | //console.log(val); 285 | var htm = '
76 | {% for comment in comments %} 77 |-
78 |
79 |
80 | {{ comment.author }}
81 | | {{ comment.date_posted|date:"d F, Y" }}
82 | {% if comment.author == user %}
83 |
84 | Edit
85 | Delete
86 |
87 | {% endif %}
88 |
89 |
92 |
93 |
94 |
95 | {% endfor %}
96 |
97 |90 | {{ comment.content|safe }} 91 |