├── README.md ├── accounts ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── admin.cpython-36.pyc │ ├── models.cpython-36.pyc │ ├── urls.cpython-36.pyc │ └── views.cpython-36.pyc ├── admin.py ├── apps.py ├── migrations │ ├── __init__.py │ └── __pycache__ │ │ └── __init__.cpython-36.pyc ├── models.py ├── tests.py ├── urls.py └── views.py ├── blog ├── __init__.py ├── __pycache__ │ ├── __init__.cpython-36.pyc │ ├── admin.cpython-36.pyc │ ├── forms.cpython-36.pyc │ ├── models.cpython-36.pyc │ ├── tests.cpython-36.pyc │ ├── urls.cpython-36.pyc │ └── views.cpython-36.pyc ├── admin.py ├── apps.py ├── forms.py ├── migrations │ ├── 0001_initial.py │ ├── 0002_auto_20180331_1825.py │ ├── 0003_comment.py │ ├── 0004_commentreply.py │ ├── 0005_commentreply_blog.py │ ├── 0006_auto_20180402_1252.py │ ├── 0007_auto_20180407_0021.py │ ├── 0008_auto_20180407_0028.py │ ├── 0009_auto_20180407_0942.py │ ├── 0010_auto_20180407_2000.py │ ├── 0011_auto_20180407_2225.py │ ├── 0012_auto_20180408_1416.py │ ├── 0013_userimage_displayname.py │ ├── 0014_auto_20180408_2243.py │ ├── 0015_auto_20180408_2332.py │ ├── 0016_auto_20180409_1609.py │ ├── 0017_auto_20180409_1627.py │ ├── 0018_auto_20180409_1933.py │ ├── 0019_auto_20180409_2117.py │ ├── 0020_auto_20180410_1744.py │ ├── 0021_auto_20180410_1757.py │ ├── 0022_auto_20180410_1758.py │ ├── 0023_auto_20180410_1800.py │ ├── 0024_auto_20180410_1803.py │ ├── 0025_auto_20180410_1851.py │ ├── 0026_auto_20180410_1854.py │ ├── __init__.py │ └── __pycache__ │ │ ├── 0001_initial.cpython-36.pyc │ │ ├── 0002_auto_20180331_1825.cpython-36.pyc │ │ ├── 0003_comment.cpython-36.pyc │ │ ├── 0004_commentreply.cpython-36.pyc │ │ ├── 0005_commentreply_blog.cpython-36.pyc │ │ ├── 0006_auto_20180402_1252.cpython-36.pyc │ │ ├── 0007_auto_20180407_0021.cpython-36.pyc │ │ ├── 0008_auto_20180407_0028.cpython-36.pyc │ │ ├── 0009_auto_20180407_0942.cpython-36.pyc │ │ ├── 0010_auto_20180407_2000.cpython-36.pyc │ │ ├── 0011_auto_20180407_2225.cpython-36.pyc │ │ ├── 0012_auto_20180408_1416.cpython-36.pyc │ │ ├── 0013_userimage_displayname.cpython-36.pyc │ │ ├── 0014_auto_20180408_2243.cpython-36.pyc │ │ ├── 0015_auto_20180408_2332.cpython-36.pyc │ │ ├── 0016_auto_20180409_1609.cpython-36.pyc │ │ ├── 0017_auto_20180409_1627.cpython-36.pyc │ │ ├── 0018_auto_20180409_1933.cpython-36.pyc │ │ ├── 0019_auto_20180409_2117.cpython-36.pyc │ │ ├── 0020_auto_20180410_1744.cpython-36.pyc │ │ ├── 0021_auto_20180410_1757.cpython-36.pyc │ │ ├── 0022_auto_20180410_1758.cpython-36.pyc │ │ ├── 0023_auto_20180410_1800.cpython-36.pyc │ │ ├── 0024_auto_20180410_1803.cpython-36.pyc │ │ ├── 0025_auto_20180410_1851.cpython-36.pyc │ │ ├── 0026_auto_20180410_1854.cpython-36.pyc │ │ └── __init__.cpython-36.pyc ├── models.py ├── static │ ├── assets │ │ ├── bootstrap │ │ │ ├── css │ │ │ │ ├── bootstrap-grid.min.css │ │ │ │ ├── bootstrap-reboot.min.css │ │ │ │ └── bootstrap.min.css │ │ │ └── js │ │ │ │ └── bootstrap.min.js │ │ ├── dropdown │ │ │ ├── css │ │ │ │ └── style.css │ │ │ └── js │ │ │ │ └── script.min.js │ │ ├── formoid │ │ │ └── formoid.min.js │ │ ├── images │ │ │ ├── 01.jpg │ │ │ ├── 02.jpg │ │ │ ├── 03.jpg │ │ │ ├── 06.jpg │ │ │ ├── 113h-2000x1334.jpg │ │ │ ├── TIGER-res.png │ │ │ ├── face5.jpg │ │ │ ├── hashes.json │ │ │ ├── hdh5t8f-1-1680x1050.png │ │ │ └── jumbotron.jpg │ │ ├── mobirise │ │ │ └── css │ │ │ │ └── mbr-additional.css │ │ ├── parallax │ │ │ └── jarallax.min.js │ │ ├── popper │ │ │ └── popper.min.js │ │ ├── smoothscroll │ │ │ └── smooth-scroll.js │ │ ├── socicon │ │ │ ├── css │ │ │ │ └── styles.css │ │ │ └── fonts │ │ │ │ ├── socicon.eot │ │ │ │ ├── socicon.svg │ │ │ │ ├── socicon.ttf │ │ │ │ └── socicon.woff │ │ ├── tether │ │ │ ├── tether.min.css │ │ │ └── tether.min.js │ │ ├── theme │ │ │ ├── css │ │ │ │ └── style.css │ │ │ └── js │ │ │ │ └── script.js │ │ ├── touchswipe │ │ │ └── jquery.touch-swipe.min.js │ │ ├── viewportchecker │ │ │ └── jquery.viewportchecker.js │ │ └── web │ │ │ └── assets │ │ │ ├── jquery │ │ │ └── jquery.min.js │ │ │ └── mobirise-icons │ │ │ ├── mobirise-icons.css │ │ │ ├── mobirise-icons.eot │ │ │ ├── mobirise-icons.svg │ │ │ ├── mobirise-icons.ttf │ │ │ └── mobirise-icons.woff │ ├── css │ │ ├── metro-colors.css │ │ ├── metro-icons.css │ │ ├── metro-rtl.css │ │ ├── metro.css │ │ └── test.py │ └── js │ │ ├── jquery-file-upload │ │ ├── jquery.fileupload.js │ │ ├── jquery.iframe-transport.js │ │ └── vendor │ │ │ └── jquery.ui.widget.js │ │ ├── jquery.js │ │ └── metro.js ├── tests.py ├── urls.py └── views.py ├── db.sqlite3 ├── manage.py ├── media ├── documents │ ├── 03.jpg │ └── banner │ │ ├── Balsamiq_Mockups_3.5.15.exe │ │ ├── an-awesome-trip-to-harhar │ │ └── matt-howard-44749.jpg │ │ ├── ashes-sitoula-93552-unsplash.jpg │ │ ├── aziz-acharki-368189-unsplashedit.jpg │ │ ├── check2-test │ │ └── 283H.jpg │ │ ├── chetan-menaria-2796-unsplash.jpg │ │ ├── chetan-menaria-2796-unsplash_b1HPYxm.jpg │ │ └── thirteen-reasons-why │ │ └── cover.jpg ├── get_topbanner_filename │ └── 2560_3000.jpg ├── post_images │ └── post_images_18 │ │ ├── alex.jpg │ │ └── maxresdefault.jpg ├── user_image_noimg │ └── jobs.jpg └── user_image_test1 │ ├── 330H.jpg │ └── IMG_5540.PNG ├── templates ├── aboutus.html ├── base.html ├── basecrop.html ├── blogdelete.html ├── blogedit.html ├── categoryview.html ├── details mockup.html ├── editinfo.html ├── editingpost.html ├── homepag.html ├── homepage.html ├── homepagee.html ├── login.html ├── mypost.html ├── poatnew.html ├── postdetail.html ├── postnew.html ├── profile.html ├── registration │ ├── login.html │ ├── logout.html │ ├── password_reset_complete.html │ ├── password_reset_confirm.html │ ├── password_reset_done.html │ ├── password_reset_email.html │ ├── password_reset_form.html │ └── password_reset_subject.txt ├── search.html ├── signup.html ├── tuesday │ ├── comment.html │ └── tuesday.html └── userimage.html └── trynewblog ├── __init__.py ├── __pycache__ ├── __init__.cpython-36.pyc ├── settings.cpython-36.pyc ├── urls.cpython-36.pyc └── wsgi.cpython-36.pyc ├── settings.py ├── urls.py └── wsgi.py /README.md: -------------------------------------------------------------------------------- 1 | # BlogVlog 2 | Blog website with multi-user feature, comments system and unique style. 3 |

4 | Made with Django2, Python3, Html5, Bootstrap, Mobirise, CSS3, js, jquery. 5 | 6 | 7 | # features 8 | - Blogs are categorised by hashtags 9 | - Login / Signup / Forgot Password 10 | - Comments and replies on every blog 11 | - Authenticated user can comment else they will prompted to login 12 | - Use HTML tags for formatting when writing a new post 13 | - Every profile has a view counter 14 | - Search Blog or Writer. 15 | 16 | # Screenshots 17 |
Homepage
18 |
19 | Screenshot 2018 4 13 homepage 4 20 | 21 |
22 |
Blog Details
23 |
24 | Screenshot_2018_4_14_homepage_1
25 |
26 | 27 |
Login Page
28 |
29 | Screenshot 2018 4 13 homepage 2 30 |
31 | 32 | # Thankyou 33 | -------------------------------------------------------------------------------- /accounts/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/__init__.py -------------------------------------------------------------------------------- /accounts/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /accounts/__pycache__/admin.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/__pycache__/admin.cpython-36.pyc -------------------------------------------------------------------------------- /accounts/__pycache__/models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/__pycache__/models.cpython-36.pyc -------------------------------------------------------------------------------- /accounts/__pycache__/urls.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/__pycache__/urls.cpython-36.pyc -------------------------------------------------------------------------------- /accounts/__pycache__/views.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/__pycache__/views.cpython-36.pyc -------------------------------------------------------------------------------- /accounts/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | # Register your models here. 4 | -------------------------------------------------------------------------------- /accounts/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class AccountsConfig(AppConfig): 5 | name = 'accounts' 6 | -------------------------------------------------------------------------------- /accounts/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/migrations/__init__.py -------------------------------------------------------------------------------- /accounts/migrations/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/accounts/migrations/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /accounts/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | 3 | # Create your models here. 4 | -------------------------------------------------------------------------------- /accounts/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | # Create your tests here. 4 | -------------------------------------------------------------------------------- /accounts/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path 2 | from . import views 3 | from django.contrib.auth.urls import views as auth_views 4 | from django.conf.urls import url 5 | 6 | urlpatterns = [ 7 | path('signup/', views.SignUpView.as_view(), name='signup'), 8 | path('password_reset', auth_views.password_reset, name='password_reset'), 9 | path('password_reset_done', auth_views.password_reset_done, name='password_reset_done'), 10 | url(r'^reset/(?P[0-9A-Za-z_\-]+)/(?P[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', auth_views.password_reset_confirm, name='password_reset_confirm'), 11 | path('password_reset_complete', auth_views.password_reset_complete, name='password_reset_complete'), 12 | 13 | ] -------------------------------------------------------------------------------- /accounts/views.py: -------------------------------------------------------------------------------- 1 | from django.shortcuts import render 2 | from django.contrib.auth.forms import UserCreationForm 3 | from django.urls import reverse_lazy 4 | from django.views import generic 5 | 6 | # Create your views here. 7 | 8 | 9 | class SignUpView(generic.CreateView): 10 | form_class = UserCreationForm 11 | success_url = reverse_lazy('login') 12 | template_name = 'signup.html' -------------------------------------------------------------------------------- /blog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__init__.py -------------------------------------------------------------------------------- /blog/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /blog/__pycache__/admin.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/admin.cpython-36.pyc -------------------------------------------------------------------------------- /blog/__pycache__/forms.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/forms.cpython-36.pyc -------------------------------------------------------------------------------- /blog/__pycache__/models.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/models.cpython-36.pyc -------------------------------------------------------------------------------- /blog/__pycache__/tests.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/tests.cpython-36.pyc -------------------------------------------------------------------------------- /blog/__pycache__/urls.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/urls.cpython-36.pyc -------------------------------------------------------------------------------- /blog/__pycache__/views.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/__pycache__/views.cpython-36.pyc -------------------------------------------------------------------------------- /blog/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from .models import Blog, Comment, CommentReply, Document, UserImage, UserInfo, Hashtag 3 | # Register your models here. 4 | 5 | admin.site.register(Blog) 6 | admin.site.register(Document) 7 | admin.site.register(Comment) 8 | admin.site.register(CommentReply) 9 | admin.site.register(UserImage) 10 | admin.site.register(UserInfo) 11 | admin.site.register(Hashtag) -------------------------------------------------------------------------------- /blog/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class BlogConfig(AppConfig): 5 | name = 'blog' 6 | -------------------------------------------------------------------------------- /blog/forms.py: -------------------------------------------------------------------------------- 1 | from .models import Comment, CommentReply, Blog, Document, UserImage, UserInfo 2 | from django.forms import ModelForm, ImageField, FileField 3 | from PIL import Image 4 | from django import forms 5 | from django.core.files.images import get_image_dimensions 6 | from django.core.files import File 7 | from simple_search import search_form_factory 8 | 9 | 10 | class BlogForm(ModelForm): 11 | class Meta: 12 | model = Blog 13 | exclude = ('date', 'star', 'author',) 14 | 15 | class DocumentForm(ModelForm): 16 | image = FileField(label='Image') 17 | class Meta: 18 | model = Document 19 | fields = ('image', ) 20 | 21 | class CommentForm(ModelForm): 22 | class Meta: 23 | model = Comment 24 | fields = ['message'] 25 | 26 | class CommentReplyForm(ModelForm): 27 | class Meta: 28 | model = CommentReply 29 | fields = ['message'] 30 | 31 | 32 | class UserImageForm(ModelForm): 33 | x = forms.FloatField(widget=forms.HiddenInput()) 34 | y = forms.FloatField(widget=forms.HiddenInput()) 35 | width = forms.FloatField(widget=forms.HiddenInput()) 36 | height = forms.FloatField(widget=forms.HiddenInput()) 37 | 38 | class Meta: 39 | model = UserImage 40 | fields = ('myimage','x', 'y', 'width', 'height') 41 | 42 | 43 | def save(self): 44 | photo = super(UserImageForm, self).save() 45 | 46 | x = self.cleaned_data.get('x') 47 | y = self.cleaned_data.get('y') 48 | w = self.cleaned_data.get('width') 49 | h = self.cleaned_data.get('height') 50 | 51 | image = Image.open(photo.myimage) 52 | cropped_image = image.crop((x, y, w+x, h+y)) 53 | resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) 54 | resized_image.save(photo.myimage.path) 55 | 56 | return photo 57 | 58 | class UserInfoForm(ModelForm): 59 | email = forms.EmailField() 60 | class Meta: 61 | model = UserInfo 62 | exclude = ('author', 'views') 63 | fields = ('displayname', 'designation', 'description', 'birthdate', 'email') 64 | # fields = '__all__' 65 | 66 | 67 | -------------------------------------------------------------------------------- /blog/migrations/0001_initial.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-03-31 11:16 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | initial = True 9 | 10 | dependencies = [ 11 | ] 12 | 13 | operations = [ 14 | migrations.CreateModel( 15 | name='Blog', 16 | fields=[ 17 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 18 | ('text', models.TextField()), 19 | ], 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /blog/migrations/0002_auto_20180331_1825.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-03-31 12:55 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('blog', '0001_initial'), 13 | ] 14 | 15 | operations = [ 16 | migrations.AddField( 17 | model_name='blog', 18 | name='author', 19 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 20 | ), 21 | migrations.AddField( 22 | model_name='blog', 23 | name='title', 24 | field=models.CharField(blank=True, max_length=250, null=True), 25 | ), 26 | ] 27 | -------------------------------------------------------------------------------- /blog/migrations/0003_comment.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-02 03:57 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('blog', '0002_auto_20180331_1825'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='Comment', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('message', models.CharField(max_length=250)), 21 | ('blog', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Blog')), 22 | ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), 23 | ], 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /blog/migrations/0004_commentreply.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-02 06:08 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('blog', '0003_comment'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='CommentReply', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('message', models.CharField(max_length=250)), 21 | ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), 22 | ('whichcomment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Comment')), 23 | ], 24 | ), 25 | ] 26 | -------------------------------------------------------------------------------- /blog/migrations/0005_commentreply_blog.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-02 07:21 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0004_commentreply'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='commentreply', 16 | name='blog', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Blog'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /blog/migrations/0006_auto_20180402_1252.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-02 07:22 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0005_commentreply_blog'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='commentreply', 16 | name='blog', 17 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='blog.Blog'), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /blog/migrations/0007_auto_20180407_0021.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-06 18:51 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0006_auto_20180402_1252'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='blog', 15 | name='date', 16 | field=models.DateField(auto_now_add=True, null=True), 17 | ), 18 | migrations.AddField( 19 | model_name='blog', 20 | name='document', 21 | field=models.FileField(blank=True, null=True, upload_to='documents/'), 22 | ), 23 | migrations.AddField( 24 | model_name='blog', 25 | name='star', 26 | field=models.PositiveIntegerField(default=0), 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /blog/migrations/0008_auto_20180407_0028.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-06 18:58 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0007_auto_20180407_0021'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='blog', 15 | name='subtitle', 16 | field=models.CharField(blank=True, max_length=200, null=True), 17 | ), 18 | migrations.AddField( 19 | model_name='blog', 20 | name='topbanner', 21 | field=models.FileField(blank=True, null=True, upload_to='documents/'), 22 | ), 23 | migrations.AlterField( 24 | model_name='blog', 25 | name='title', 26 | field=models.CharField(blank=True, max_length=100, null=True), 27 | ), 28 | ] 29 | -------------------------------------------------------------------------------- /blog/migrations/0009_auto_20180407_0942.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-07 04:12 2 | 3 | import blog.models 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('blog', '0008_auto_20180407_0028'), 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='Document', 17 | fields=[ 18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 | ('image', models.FileField(upload_to=blog.models.get_image_filename, verbose_name='Image')), 20 | ], 21 | ), 22 | migrations.RemoveField( 23 | model_name='blog', 24 | name='document', 25 | ), 26 | migrations.AlterField( 27 | model_name='blog', 28 | name='topbanner', 29 | field=models.FileField(blank=True, null=True, upload_to='documents/banner/'), 30 | ), 31 | migrations.AddField( 32 | model_name='document', 33 | name='blog', 34 | field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='blog.Blog'), 35 | ), 36 | ] 37 | -------------------------------------------------------------------------------- /blog/migrations/0010_auto_20180407_2000.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-07 14:30 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0009_auto_20180407_0942'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='blog', 15 | name='topbanner', 16 | field=models.FileField(blank=True, default='settings.MEDIA_ROOT/documents/03.jpg', null=True, upload_to='documents/banner/'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /blog/migrations/0011_auto_20180407_2225.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-07 16:55 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0010_auto_20180407_2000'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='blog', 15 | name='title', 16 | field=models.CharField(max_length=100), 17 | ), 18 | migrations.AlterField( 19 | model_name='blog', 20 | name='topbanner', 21 | field=models.FileField(blank=True, default='documents/03.jpg', null=True, upload_to='documents/banner/'), 22 | ), 23 | ] 24 | -------------------------------------------------------------------------------- /blog/migrations/0012_auto_20180408_1416.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-08 08:46 2 | 3 | import blog.models 4 | from django.conf import settings 5 | from django.db import migrations, models 6 | import django.db.models.deletion 7 | 8 | 9 | class Migration(migrations.Migration): 10 | 11 | dependencies = [ 12 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 13 | ('blog', '0011_auto_20180407_2225'), 14 | ] 15 | 16 | operations = [ 17 | migrations.CreateModel( 18 | name='UserImage', 19 | fields=[ 20 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 21 | ('myimage', models.ImageField(default='user_image_noimg/jobs.jpg', upload_to=blog.models.get_user_image_filename)), 22 | ('designation', models.CharField(blank=True, max_length=50, null=True)), 23 | ('description', models.CharField(blank=True, max_length=250, null=True)), 24 | ('author', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), 25 | ], 26 | ), 27 | migrations.AlterField( 28 | model_name='blog', 29 | name='author', 30 | field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 31 | ), 32 | ] 33 | -------------------------------------------------------------------------------- /blog/migrations/0013_userimage_displayname.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-08 10:28 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0012_auto_20180408_1416'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name='userimage', 15 | name='displayname', 16 | field=models.CharField(blank=True, max_length=50, null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /blog/migrations/0014_auto_20180408_2243.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-08 17:13 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('blog', '0013_userimage_displayname'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='userimage', 17 | name='author', 18 | field=models.OneToOneField(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /blog/migrations/0015_auto_20180408_2332.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-08 18:02 2 | 3 | import blog.models 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0014_auto_20180408_2243'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='userimage', 16 | name='myimage', 17 | field=models.ImageField(blank=True, default='user_image_noimg/jobs.jpg', null=True, upload_to=blog.models.get_user_image_filename), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /blog/migrations/0016_auto_20180409_1609.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-09 10:39 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | migrations.swappable_dependency(settings.AUTH_USER_MODEL), 12 | ('blog', '0015_auto_20180408_2332'), 13 | ] 14 | 15 | operations = [ 16 | migrations.CreateModel( 17 | name='UserInfo', 18 | fields=[ 19 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 20 | ('displayname', models.CharField(blank=True, max_length=50, null=True)), 21 | ('designation', models.CharField(blank=True, max_length=50, null=True)), 22 | ('description', models.CharField(blank=True, max_length=250, null=True)), 23 | ('author', models.OneToOneField(default=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), 24 | ], 25 | ), 26 | migrations.RemoveField( 27 | model_name='userimage', 28 | name='description', 29 | ), 30 | migrations.RemoveField( 31 | model_name='userimage', 32 | name='designation', 33 | ), 34 | migrations.RemoveField( 35 | model_name='userimage', 36 | name='displayname', 37 | ), 38 | ] 39 | -------------------------------------------------------------------------------- /blog/migrations/0017_auto_20180409_1627.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-09 10:57 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('blog', '0016_auto_20180409_1609'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='userinfo', 17 | name='birthdate', 18 | field=models.DateField(blank=True, null=True), 19 | ), 20 | migrations.AddField( 21 | model_name='userinfo', 22 | name='views', 23 | field=models.PositiveIntegerField(default=0), 24 | ), 25 | migrations.AlterField( 26 | model_name='userinfo', 27 | name='author', 28 | field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 29 | ), 30 | ] 31 | -------------------------------------------------------------------------------- /blog/migrations/0018_auto_20180409_1933.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-09 14:03 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('blog', '0017_auto_20180409_1627'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='userinfo', 17 | name='author', 18 | field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /blog/migrations/0019_auto_20180409_2117.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-09 15:47 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0018_auto_20180409_1933'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AddField( 15 | model_name='comment', 16 | name='usrimg', 17 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.UserImage'), 18 | ), 19 | migrations.AddField( 20 | model_name='commentreply', 21 | name='usrimg', 22 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.UserImage'), 23 | ), 24 | ] 25 | -------------------------------------------------------------------------------- /blog/migrations/0020_auto_20180410_1744.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 12:14 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0019_auto_20180409_2117'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='blog', 15 | name='topbanner', 16 | field=models.FileField(blank=True, default='documents/03.jpg', null=True, upload_to='get_topbanner_filename'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /blog/migrations/0021_auto_20180410_1757.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 12:27 2 | 3 | import blog.models 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0020_auto_20180410_1744'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='blog', 16 | name='topbanner', 17 | field=models.FileField(default='documents/03.jpg', upload_to=blog.models.get_topbanner_filename), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /blog/migrations/0022_auto_20180410_1758.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 12:28 2 | 3 | from django.conf import settings 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('blog', '0021_auto_20180410_1757'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AlterField( 16 | model_name='blog', 17 | name='author', 18 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /blog/migrations/0023_auto_20180410_1800.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 12:30 2 | 3 | import blog.models 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0022_auto_20180410_1758'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='blog', 16 | name='topbanner', 17 | field=models.FileField(upload_to=blog.models.get_topbanner_filename), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /blog/migrations/0024_auto_20180410_1803.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 12:33 2 | 3 | import blog.models 4 | from django.db import migrations, models 5 | 6 | 7 | class Migration(migrations.Migration): 8 | 9 | dependencies = [ 10 | ('blog', '0023_auto_20180410_1800'), 11 | ] 12 | 13 | operations = [ 14 | migrations.AlterField( 15 | model_name='blog', 16 | name='topbanner', 17 | field=models.FileField(blank=True, null=True, upload_to=blog.models.get_topbanner_filename), 18 | ), 19 | ] 20 | -------------------------------------------------------------------------------- /blog/migrations/0025_auto_20180410_1851.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 13:21 2 | 3 | import blog.models 4 | from django.db import migrations, models 5 | import django.db.models.deletion 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('blog', '0024_auto_20180410_1803'), 12 | ] 13 | 14 | operations = [ 15 | migrations.CreateModel( 16 | name='Hashtag', 17 | fields=[ 18 | ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), 19 | ('name', models.CharField(max_length=50)), 20 | ], 21 | ), 22 | migrations.AlterField( 23 | model_name='blog', 24 | name='topbanner', 25 | field=models.ImageField(blank=True, null=True, upload_to=blog.models.get_topbanner_filename), 26 | ), 27 | migrations.AddField( 28 | model_name='blog', 29 | name='category', 30 | field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='blog.Hashtag'), 31 | ), 32 | ] 33 | -------------------------------------------------------------------------------- /blog/migrations/0026_auto_20180410_1854.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.3 on 2018-04-10 13:24 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('blog', '0025_auto_20180410_1851'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='hashtag', 15 | name='name', 16 | field=models.CharField(max_length=50, unique=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /blog/migrations/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__init__.py -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0001_initial.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0001_initial.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0002_auto_20180331_1825.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0002_auto_20180331_1825.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0003_comment.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0003_comment.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0004_commentreply.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0004_commentreply.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0005_commentreply_blog.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0005_commentreply_blog.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0006_auto_20180402_1252.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0006_auto_20180402_1252.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0007_auto_20180407_0021.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0007_auto_20180407_0021.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0008_auto_20180407_0028.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0008_auto_20180407_0028.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0009_auto_20180407_0942.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0009_auto_20180407_0942.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0010_auto_20180407_2000.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0010_auto_20180407_2000.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0011_auto_20180407_2225.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0011_auto_20180407_2225.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0012_auto_20180408_1416.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0012_auto_20180408_1416.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0013_userimage_displayname.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0013_userimage_displayname.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0014_auto_20180408_2243.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0014_auto_20180408_2243.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0015_auto_20180408_2332.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0015_auto_20180408_2332.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0016_auto_20180409_1609.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0016_auto_20180409_1609.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0017_auto_20180409_1627.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0017_auto_20180409_1627.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0018_auto_20180409_1933.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0018_auto_20180409_1933.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0019_auto_20180409_2117.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0019_auto_20180409_2117.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0020_auto_20180410_1744.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0020_auto_20180410_1744.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0021_auto_20180410_1757.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0021_auto_20180410_1757.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0022_auto_20180410_1758.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0022_auto_20180410_1758.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0023_auto_20180410_1800.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0023_auto_20180410_1800.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0024_auto_20180410_1803.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0024_auto_20180410_1803.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0025_auto_20180410_1851.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0025_auto_20180410_1851.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/0026_auto_20180410_1854.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/0026_auto_20180410_1854.cpython-36.pyc -------------------------------------------------------------------------------- /blog/migrations/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/migrations/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /blog/models.py: -------------------------------------------------------------------------------- 1 | from django.db import models 2 | from django.urls import reverse 3 | from django.template.defaultfilters import slugify 4 | import os 5 | from PIL import Image 6 | 7 | # Create your models here. 8 | 9 | class Hashtag(models.Model): 10 | name = models.CharField(max_length=50, unique=True) 11 | 12 | def __str__(self): 13 | return self.name 14 | 15 | 16 | def get_topbanner_filename(instance, filename): 17 | title = instance.title 18 | slug = slugify(title) 19 | return "documents/banner/{}/{}".format(slug, filename) 20 | 21 | class Blog(models.Model): 22 | title = models.CharField(max_length=100) 23 | subtitle = models.CharField(max_length=200, null=True, blank=True) 24 | author = models.ForeignKey('auth.User', on_delete=models.CASCADE, null=True, blank=True) 25 | text = models.TextField() 26 | date = models.DateField(auto_now_add=True, blank=True, null=True) 27 | star = models.PositiveIntegerField(default=0) 28 | topbanner = models.ImageField(upload_to=get_topbanner_filename, null=True, blank=True) 29 | category = models.ForeignKey(Hashtag, on_delete=models.CASCADE, null=True, blank=True) 30 | 31 | 32 | def __str__(self): 33 | return self.title 34 | 35 | def get_absolute_url(self): 36 | return reverse('postdetail', args=[str(self.id)]) 37 | 38 | #, default='documents/03.jpg' 39 | 40 | 41 | def get_image_filename(instance, filename): 42 | title = instance.blog.id 43 | slug = slugify(title) 44 | return "post_images/post_images_{}/{}".format(slug, filename) 45 | 46 | 47 | class Document(models.Model): 48 | blog = models.ForeignKey(Blog, default=None, on_delete=models.CASCADE) 49 | image = models.FileField(upload_to=get_image_filename, verbose_name = 'Image') 50 | 51 | def filename(self): 52 | return os.path.basename(self.image.name) 53 | 54 | #----------------------------------------------------------- 55 | 56 | def get_user_image_filename(instance, filename): 57 | title = instance.author 58 | slug = slugify(title) 59 | return "user_image_{}/{}".format(slug, filename) 60 | 61 | class UserImage(models.Model): 62 | author = models.OneToOneField('auth.User', on_delete=models.CASCADE, null=True, default=True) 63 | myimage = models.ImageField(upload_to=get_user_image_filename, default='user_image_noimg/jobs.jpg', null=True, blank=True) 64 | 65 | 66 | #------------------------------------------------------ 67 | 68 | class Comment(models.Model): 69 | blog = models.ForeignKey(Blog, on_delete=models.CASCADE) 70 | user = models.ForeignKey('auth.User', on_delete=models.CASCADE) 71 | message = models.CharField(max_length = 250) 72 | usrimg = models.ForeignKey(UserImage, on_delete=models.CASCADE, null=True, blank=True) 73 | 74 | def __str__(self): 75 | return self.message 76 | 77 | 78 | class CommentReply(models.Model): 79 | whichcomment = models.ForeignKey(Comment, on_delete=models.CASCADE) 80 | user = models.ForeignKey('auth.User', on_delete=models.CASCADE) 81 | message = models.CharField(max_length = 250) 82 | blog = models.ForeignKey(Blog, on_delete=models.CASCADE) 83 | usrimg = models.ForeignKey(UserImage, on_delete=models.CASCADE, null=True, blank=True) 84 | 85 | 86 | 87 | def __str__(self): 88 | return self.message 89 | 90 | 91 | 92 | 93 | 94 | #------------------------------------------------------ 95 | 96 | class UserInfo(models.Model): 97 | author = models.OneToOneField('auth.User', on_delete=models.CASCADE, null=True, blank=True) 98 | displayname = models.CharField(max_length=50, null=True, blank=True) 99 | designation = models.CharField(max_length=50, null=True, blank=True) 100 | description = models.CharField(max_length=250, null=True, blank=True) 101 | birthdate = models.DateField(null=True, blank=True) 102 | views = models.PositiveIntegerField(default = 0) 103 | 104 | def get_absolute_url(self): 105 | return reverse('homepage') 106 | 107 | #------------------------------------------------------- -------------------------------------------------------------------------------- /blog/static/assets/bootstrap/css/bootstrap-reboot.min.css: -------------------------------------------------------------------------------- 1 | /*! 2 | * Bootstrap Reboot v4.0.0 (https://getbootstrap.com) 3 | * Copyright 2011-2018 The Bootstrap Authors 4 | * Copyright 2011-2018 Twitter, Inc. 5 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 6 | * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) 7 | */*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important} 8 | /*# sourceMappingURL=bootstrap-reboot.min.css.map */ -------------------------------------------------------------------------------- /blog/static/assets/dropdown/css/style.css: -------------------------------------------------------------------------------- 1 | .navbar-dropdown { 2 | left: 0; 3 | padding: 0; 4 | position: absolute; 5 | right: 0; 6 | top: 0; 7 | transition: all 0.45s ease; 8 | z-index: 1030; 9 | background: #282828; } 10 | .navbar-dropdown .navbar-logo { 11 | margin-right: 0.8rem; 12 | transition: margin 0.3s ease-in-out; 13 | vertical-align: middle; } 14 | .navbar-dropdown .navbar-logo img { 15 | height: 3.125rem; 16 | transition: all 0.3s ease-in-out; } 17 | .navbar-dropdown .navbar-logo.mbr-iconfont { 18 | font-size: 3.125rem; 19 | line-height: 3.125rem; } 20 | .navbar-dropdown .navbar-caption { 21 | font-weight: 700; 22 | white-space: normal; 23 | vertical-align: -4px; 24 | line-height: 3.125rem !important; } 25 | .navbar-dropdown .navbar-caption, .navbar-dropdown .navbar-caption:hover { 26 | color: inherit; 27 | text-decoration: none; } 28 | .navbar-dropdown .mbr-iconfont + .navbar-caption { 29 | vertical-align: -1px; } 30 | .navbar-dropdown.navbar-fixed-top { 31 | position: fixed; } 32 | .navbar-dropdown .navbar-brand span { 33 | vertical-align: -4px; } 34 | .navbar-dropdown.bg-color.transparent { 35 | background: none; } 36 | .navbar-dropdown.navbar-short .navbar-brand { 37 | padding: 0.625rem 0; } 38 | .navbar-dropdown.navbar-short .navbar-brand span { 39 | vertical-align: -1px; } 40 | .navbar-dropdown.navbar-short .navbar-caption { 41 | line-height: 2.375rem !important; 42 | vertical-align: -2px; } 43 | .navbar-dropdown.navbar-short .navbar-logo { 44 | margin-right: 0.5rem; } 45 | .navbar-dropdown.navbar-short .navbar-logo img { 46 | height: 2.375rem; } 47 | .navbar-dropdown.navbar-short .navbar-logo.mbr-iconfont { 48 | font-size: 2.375rem; 49 | line-height: 2.375rem; } 50 | .navbar-dropdown.navbar-short .mbr-table-cell { 51 | height: 3.625rem; } 52 | .navbar-dropdown .navbar-close { 53 | left: 0.6875rem; 54 | position: fixed; 55 | top: 0.75rem; 56 | z-index: 1000; } 57 | .navbar-dropdown .hamburger-icon { 58 | content: ""; 59 | display: inline-block; 60 | vertical-align: middle; 61 | width: 16px; 62 | -webkit-box-shadow: 0 -6px 0 1px #282828,0 0 0 1px #282828,0 6px 0 1px #282828; 63 | -moz-box-shadow: 0 -6px 0 1px #282828,0 0 0 1px #282828,0 6px 0 1px #282828; 64 | box-shadow: 0 -6px 0 1px #282828,0 0 0 1px #282828,0 6px 0 1px #282828; } 65 | 66 | .dropdown-menu .dropdown-toggle[data-toggle="dropdown-submenu"]::after { 67 | border-bottom: 0.35em solid transparent; 68 | border-left: 0.35em solid; 69 | border-right: 0; 70 | border-top: 0.35em solid transparent; 71 | margin-left: 0.3rem; } 72 | 73 | .dropdown-menu .dropdown-item:focus { 74 | outline: 0; } 75 | 76 | .nav-dropdown { 77 | font-size: 0.75rem; 78 | font-weight: 500; 79 | height: auto !important; } 80 | .nav-dropdown .nav-btn { 81 | padding-left: 1rem; } 82 | .nav-dropdown .link { 83 | margin: .667em 1.667em; 84 | font-weight: 500; 85 | padding: 0; 86 | transition: color .2s ease-in-out; } 87 | .nav-dropdown .link.dropdown-toggle { 88 | margin-right: 2.583em; } 89 | .nav-dropdown .link.dropdown-toggle::after { 90 | margin-left: .25rem; 91 | border-top: 0.35em solid; 92 | border-right: 0.35em solid transparent; 93 | border-left: 0.35em solid transparent; 94 | border-bottom: 0; } 95 | .nav-dropdown .link.dropdown-toggle[aria-expanded="true"] { 96 | margin: 0; 97 | padding: 0.667em 3.263em 0.667em 1.667em; } 98 | .nav-dropdown .link::after, 99 | .nav-dropdown .dropdown-item::after { 100 | color: inherit; } 101 | .nav-dropdown .btn { 102 | font-size: 0.75rem; 103 | font-weight: 700; 104 | letter-spacing: 0; 105 | margin-bottom: 0; 106 | padding-left: 1.25rem; 107 | padding-right: 1.25rem; } 108 | .nav-dropdown .dropdown-menu { 109 | border-radius: 0; 110 | border: 0; 111 | left: 0; 112 | margin: 0; 113 | padding-bottom: 1.25rem; 114 | padding-top: 1.25rem; 115 | position: relative; } 116 | .nav-dropdown .dropdown-submenu { 117 | margin-left: 0.125rem; 118 | top: 0; } 119 | .nav-dropdown .dropdown-item { 120 | font-weight: 500; 121 | line-height: 2; 122 | padding: 0.3846em 4.615em 0.3846em 1.5385em; 123 | position: relative; 124 | transition: color .2s ease-in-out, background-color .2s ease-in-out; } 125 | .nav-dropdown .dropdown-item::after { 126 | margin-top: -0.3077em; 127 | position: absolute; 128 | right: 1.1538em; 129 | top: 50%; } 130 | .nav-dropdown .dropdown-item:focus, .nav-dropdown .dropdown-item:hover { 131 | background: none; } 132 | 133 | @media (max-width: 767px) { 134 | .nav-dropdown.navbar-toggleable-sm { 135 | bottom: 0; 136 | display: none; 137 | left: 0; 138 | overflow-x: hidden; 139 | position: fixed; 140 | top: 0; 141 | transform: translateX(-100%); 142 | -ms-transform: translateX(-100%); 143 | -webkit-transform: translateX(-100%); 144 | width: 18.75rem; 145 | z-index: 999; } } 146 | .nav-dropdown.navbar-toggleable-xl { 147 | bottom: 0; 148 | display: none; 149 | left: 0; 150 | overflow-x: hidden; 151 | position: fixed; 152 | top: 0; 153 | transform: translateX(-100%); 154 | -ms-transform: translateX(-100%); 155 | -webkit-transform: translateX(-100%); 156 | width: 18.75rem; 157 | z-index: 999; } 158 | 159 | .nav-dropdown-sm { 160 | display: block !important; 161 | overflow-x: hidden; 162 | overflow: auto; 163 | padding-top: 3.875rem; } 164 | .nav-dropdown-sm::after { 165 | content: ""; 166 | display: block; 167 | height: 3rem; 168 | width: 100%; } 169 | .nav-dropdown-sm.collapse.in ~ .navbar-close { 170 | display: block !important; } 171 | .nav-dropdown-sm.collapsing, .nav-dropdown-sm.collapse.in { 172 | transform: translateX(0); 173 | -ms-transform: translateX(0); 174 | -webkit-transform: translateX(0); 175 | transition: all 0.25s ease-out; 176 | -webkit-transition: all 0.25s ease-out; 177 | background: #282828; } 178 | .nav-dropdown-sm.collapsing[aria-expanded="false"] { 179 | transform: translateX(-100%); 180 | -ms-transform: translateX(-100%); 181 | -webkit-transform: translateX(-100%); } 182 | .nav-dropdown-sm .nav-item { 183 | display: block; 184 | margin-left: 0 !important; 185 | padding-left: 0; } 186 | .nav-dropdown-sm .link, 187 | .nav-dropdown-sm .dropdown-item { 188 | border-top: 1px dotted rgba(255, 255, 255, 0.1); 189 | font-size: 0.8125rem; 190 | line-height: 1.6; 191 | margin: 0 !important; 192 | padding: 0.875rem 2.4rem 0.875rem 1.5625rem !important; 193 | position: relative; 194 | white-space: normal; } 195 | .nav-dropdown-sm .link:focus, .nav-dropdown-sm .link:hover, 196 | .nav-dropdown-sm .dropdown-item:focus, 197 | .nav-dropdown-sm .dropdown-item:hover { 198 | background: rgba(0, 0, 0, 0.2) !important; 199 | color: #c0a375; } 200 | .nav-dropdown-sm .nav-btn { 201 | position: relative; 202 | padding: 1.5625rem 1.5625rem 0 1.5625rem; } 203 | .nav-dropdown-sm .nav-btn::before { 204 | border-top: 1px dotted rgba(255, 255, 255, 0.1); 205 | content: ""; 206 | left: 0; 207 | position: absolute; 208 | top: 0; 209 | width: 100%; } 210 | .nav-dropdown-sm .nav-btn + .nav-btn { 211 | padding-top: 0.625rem; } 212 | .nav-dropdown-sm .nav-btn + .nav-btn::before { 213 | display: none; } 214 | .nav-dropdown-sm .btn { 215 | padding: 0.625rem 0; } 216 | .nav-dropdown-sm .dropdown-toggle[data-toggle="dropdown-submenu"]::after { 217 | margin-left: .25rem; 218 | border-top: 0.35em solid; 219 | border-right: 0.35em solid transparent; 220 | border-left: 0.35em solid transparent; 221 | border-bottom: 0; } 222 | .nav-dropdown-sm .dropdown-toggle[data-toggle="dropdown-submenu"][aria-expanded="true"]::after { 223 | border-top: 0; 224 | border-right: 0.35em solid transparent; 225 | border-left: 0.35em solid transparent; 226 | border-bottom: 0.35em solid; } 227 | .nav-dropdown-sm .dropdown-menu { 228 | margin: 0; 229 | padding: 0; 230 | position: relative; 231 | top: 0; 232 | left: 0; 233 | width: 100%; 234 | border: 0; 235 | float: none; 236 | border-radius: 0; 237 | background: none; } 238 | .nav-dropdown-sm .dropdown-submenu { 239 | left: 100%; 240 | margin-left: 0.125rem; 241 | margin-top: -1.25rem; 242 | top: 0; } 243 | 244 | .navbar-toggleable-sm .nav-dropdown .dropdown-menu { 245 | position: absolute; } 246 | 247 | .navbar-toggleable-sm .nav-dropdown .dropdown-submenu { 248 | left: 100%; 249 | margin-left: 0.125rem; 250 | margin-top: -1.25rem; 251 | top: 0; } 252 | 253 | .navbar-toggleable-sm.opened .nav-dropdown .dropdown-menu { 254 | position: relative; } 255 | 256 | .navbar-toggleable-sm.opened .nav-dropdown .dropdown-submenu { 257 | left: 0; 258 | margin-left: 00rem; 259 | margin-top: 0rem; 260 | top: 0; } 261 | 262 | .is-builder .nav-dropdown.collapsing { 263 | transition: none !important; } 264 | 265 | /*# sourceMappingURL=style.css.map */ 266 | -------------------------------------------------------------------------------- /blog/static/assets/dropdown/js/script.min.js: -------------------------------------------------------------------------------- 1 | jQuery(function(t){function e(e){"resize"===e.type&&(t(h.BODY).removeClass(a.DROPDOWN_OPEN),t(h.BASE).removeClass(a.OPENED).find(h.TOGGLER).each(function(){t(t(this).attr("data-target")).removeClass(a.IN).add(this).attr("aria-expanded","false")})) 2 | var r=t(this).scrollTop() 3 | t(h.BASE).each(function(){t(this).is(h.FIXED_TOP)&&(t(this).is(h.TRANSPARENT)&&!t(this).hasClass(a.OPENED)&&(r>0?t(this).removeClass(a.BG_COLOR):t(this).addClass(a.BG_COLOR)),r>0?t(this).addClass(a.SHORT):t(this).removeClass(a.SHORT))})}var r,n="bs.navbar-dropdown",s="."+n,i=".data-api",o={COLLAPSE:"collapse"+s,CLICK_DATA_API:"click"+s+i,SCROLL_DATA_API:"scroll"+s+i,RESIZE_DATA_API:"resize"+s+i,COLLAPSE_SHOW:"show.bs.collapse",COLLAPSE_HIDE:"hide.bs.collapse",DROPDOWN_COLLAPSE:"collapse.bs.nav-dropdown"},a={IN:"in",OPENED:"opened",BG_COLOR:"bg-color",DROPDOWN_OPEN:"navbar-dropdown-open",SHORT:"navbar-short"},h={BODY:"body",BASE:".navbar-dropdown",TOGGLER:'.navbar-toggler[aria-expanded="true"]',TRANSPARENT:".transparent",FIXED_TOP:".navbar-fixed-top"} 4 | t(window).on(o.SCROLL_DATA_API+" "+o.RESIZE_DATA_API,function(t){clearTimeout(r),r=setTimeout(function(){e(t)},10)}).trigger(o.SCROLL_DATA_API),t(document).on(o.CLICK_DATA_API,h.BASE,function(t){t.targetWrapper=this}).on(o.COLLAPSE_SHOW+" "+o.COLLAPSE_HIDE,function(e){t(e.target).closest(h.BASE).each(function(){"show"==e.type?(t(h.BODY).addClass(a.DROPDOWN_OPEN),t(this).addClass(a.OPENED)):(t(h.BODY).removeClass(a.DROPDOWN_OPEN),t(this).removeClass(a.OPENED),t(window).trigger(o.SCROLL_DATA_API),t(this).trigger(o.COLLAPSE))})}).on(o.DROPDOWN_COLLAPSE,function(e){t(e.relatedTarget).closest(h.BASE).find(h.TOGGLER).trigger("click")})}),function(t){var e="navDropdown",r="bs.nav-dropdown",n="."+r,s=".data-api",i=t.fn[e],o={HIDE:"hide"+n,HIDDEN:"hidden"+n,SHOW:"show"+n,SHOWN:"shown"+n,CLICK:"click"+n,READY:"ready"+n,COLLAPSE:"collapse"+n,LOAD_DATA_API:"load"+n+s,CLICK_DATA_API:"click"+n+s,RESIZE_DATA_API:"resize"+n+s,KEYDOWN_DATA_API:"keydown"+n+s,NAVBAR_COLLAPSE:"collapse.bs.navbar-dropdown"},a={ESC:27,LEFT:37,UP:38,RIGHT:39,DOWN:40},h={XS:544,SM:768,MD:992,LG:1200,XL:1/0},p={BACKDROP:"dropdown-backdrop",DISABLED:"disabled",OPEN:"open",SM:"nav-dropdown-sm"},l={BASE:".nav-dropdown",DROPDOWN:".dropdown",DROPDOWN_MENU:".dropdown-menu",BACKDROP:"."+p.BACKDROP,DATA_BUTTON:"[data-button]",DATA_TOGGLE:'[data-toggle="dropdown-submenu"]',FORM_CHILD:".dropdown form"},c=function(){function e(e,r){"length"in e||(e=[e]),this.props={},this.length=e.length,r&&(this.prevItem=r,t.extend(this.props,r.props)) 5 | for(var n=0;n"+l.DATA_TOGGLE)[0]}),this)},e.prototype.parents=function(r){var n=t(this).map(function(){return new e(this).is(":toggle")?this.parentNode:this}).parentsUntil(l.BASE,l.DROPDOWN) 7 | return":upper"===r&&(n=n.last()),n=n.find(">"+l.DATA_TOGGLE),new e(n,this)},e.prototype.children=function(r){var n=[] 8 | return t(this).each(function(){var s,i,o=new e(this) 9 | if(o.is(":root"))s=t(this) 10 | else{if(!o.is(":toggle"))return 11 | s=t(this).parent().find(">"+l.DROPDOWN_MENU)}i=r?s.find("a"):o.is(":root")?s.find(">li>a"):s.find(">a, >"+l.DROPDOWN+">a"),i.each(function(){r&&!this.offsetWidth&&!this.offsetHeight||this.disabled||t(this).is(l.DATA_BUTTON)||t(this).hasClass(p.DISABLED)||~t.inArray(this,n)||n.push(this)})}),new e(n,this)},e.prototype.root=function(){return new e(t(this).closest(l.BASE),this)},e.prototype.jump=function(r){if(r=r||"next",!this.length)return new e([],this) 12 | var n,s=this.eq(0) 13 | n=this.is(":flat")||s.is(":upper")?s.root().children(this.is(":flat")):s.parent().children() 14 | var i=t.inArray(this[0],n) 15 | if(!n.length||!~i)return new e([],this) 16 | if("next"==r){if(i+=1,i=0)return new e(n[i],this) 18 | r="last"}return"first"==r?new e(n[0],this):"last"==r?new e(n[n.length-1],this):new e([],this)},e.prototype.next=function(){return this.jump("next")},e.prototype.prev=function(){return this.jump("prev")},e.prototype.first=function(){return this.jump("first")},e.prototype.last=function(){return this.jump("last")},e.prototype.prop=function(e,r){return arguments.length?arguments.length>1?(this.props[e]=r,this):"object"==typeof arguments[0]?(t.extend(this.props,arguments[0]),this):e in this.props?this.props[e]:null:t.extend({},this.props)},e.prototype.removeProp=function(t){return delete this.props[t],this},e.prototype.is=function(e){for(var r=t(this),n=(e||"").split(/(?=[*#.\[:\s])/);e=n.pop();)switch(e){case":root":if(!r.is(l.BASE))return!1 19 | break 20 | case":upper":if(!r.parent().parent().is(l.BASE))return!1 21 | break 22 | case":opened":case":closed":if(":opened"==e!=r.parent().hasClass(p.OPEN))return!1 23 | case":toggle":if(!r.is(l.DATA_TOGGLE))return!1 24 | break 25 | default:if(!this.props[e])return!1}return!0},e.prototype.open=function(){return this.is(":closed")&&this.click(),this},e.prototype.close=function(){return this.is(":opened")&&this.click(),this},e.prototype.focus=function(){return this.length&&this[0].focus(),this},e.prototype.click=function(){return this.length&&t(this[0]).trigger("click"),this},function(t){return new e(t)}}(),d=function(e){this._element=e,t(this._element).on(o.CLICK,this.toggle)} 26 | d.prototype.toggle=function(e){if(this.disabled||t(this).hasClass(p.DISABLED))return!1 27 | var r=t(this.parentNode),n=r.hasClass(p.OPEN),s=d._isCollapsed(t(this).closest(l.BASE)) 28 | if(d._clearMenus(t.Event("click",{target:this,data:{toggles:s?[this]:null}})),n)return!1 29 | if("ontouchstart"in document.documentElement&&!r.closest(l.DROPDOWN+"."+p.OPEN).length){var i=document.createElement("div") 30 | i.className=p.BACKDROP,t(i).insertBefore(t(this).closest(l.BASE)),t(i).on("click",d._clearMenus)}var a={relatedTarget:this},h=t.Event(o.SHOW,a) 31 | return r.trigger(h),h.isDefaultPrevented()?!1:(this.focus(),this.setAttribute("aria-expanded","true"),r.toggleClass(p.OPEN),r.trigger(t.Event(o.SHOWN,a)),!1)},d.prototype.dispose=function(){t.removeData(this._element,r),t(this._element).off(n),this._element=null},d._clearMenus=function(e){if(e=e||{},3!==e.which){var r,n=function(){return!1} 32 | if(e.target){if(this===document)if(t(e.target).is("a:not([disabled], ."+p.DISABLED+")"))r=t.Event(o.COLLAPSE,{relatedTarget:e.target}) 33 | else{var s=e.targetWrapper&&t(e.targetWrapper).find(l.BASE)||t(e.target).closest(l.BASE) 34 | if(d._isCollapsed(s))return}else if(t(e.target).hasClass(p.BACKDROP)){var i=t(e.target).next() 35 | if(i.is(l.BASE)&&d._isCollapsed(i))return}t(e.target).is(l.DATA_TOGGLE)?n=t(e.target.parentNode).parents(l.DROPDOWN).find(">"+l.DATA_TOGGLE):t(l.BACKDROP).remove()}for(var a=e.data&&e.data.toggles&&t(e.data.toggles).parent().find(l.DATA_TOGGLE)||t.makeArray(t(l.DATA_TOGGLE).not(n)),h=0;h"+l.DATA_TOGGLE) 41 | return d._clearMenus(),void s.trigger("focus")}if("A"==e.target.tagName){var i=c(e.target) 42 | if(i.prop(":flat",d._isCollapsed(i.root())),i.is(":flat"))e.which===a.DOWN||e.which===a.UP?i[e.which===a.UP?"prev":"next"]().focus():e.which===a.LEFT?i.is(":opened")?i.close():i.parent().close().focus():e.which===a.RIGHT&&i.is(":toggle")&&i.open() 43 | else if(i.is(":upper"))e.which===a.LEFT||e.which===a.RIGHT?(i[e.which===a.LEFT?"prev":"next"]().focus().open(),i.is(":toggle")&&i.close()):e.which!==a.DOWN&&e.which!==a.UP||!i.is(":toggle")||i.children()[e.which===a.DOWN?"first":"last"]().focus() 44 | else if(e.which===a.LEFT){var o=i.parent() 45 | o.is(":upper")?o.close().prev().focus().open():o.focus().close()}else if(e.which===a.RIGHT){var h=i.children() 46 | h.length?(i.open(),h.first().focus()):i.parents(":upper").close().next().focus().open()}else(e.which===a.DOWN||e.which===a.UP)&&i[e.which===a.UP?"prev":"next"]().focus()}}}},d._isCollapsed=function(t){var e 47 | return t.length&&(t=t[0]),t&&(e=/navbar-toggleable-(xs|sm|md|lg|xl)/.exec(t.className))&&window.innerWidth').text(alertSuccess || message)); 148 | }).fail(function(error){ 149 | $alert.append($('
').text(error)); 150 | }).always(function(){ 151 | $submit.removeClass('btn-loading').prop('disabled', false); 152 | }); 153 | }); 154 | }); 155 | 156 | }); -------------------------------------------------------------------------------- /blog/static/assets/images/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/01.jpg -------------------------------------------------------------------------------- /blog/static/assets/images/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/02.jpg -------------------------------------------------------------------------------- /blog/static/assets/images/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/03.jpg -------------------------------------------------------------------------------- /blog/static/assets/images/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/06.jpg -------------------------------------------------------------------------------- /blog/static/assets/images/113h-2000x1334.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/113h-2000x1334.jpg -------------------------------------------------------------------------------- /blog/static/assets/images/TIGER-res.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/TIGER-res.png -------------------------------------------------------------------------------- /blog/static/assets/images/face5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/face5.jpg -------------------------------------------------------------------------------- /blog/static/assets/images/hashes.json: -------------------------------------------------------------------------------- 1 | {"TtlPxoVOh1mRTMRtX21c1A==":"mbr-122x122.jpg","xnewrAZbiA9GeGYDHH6QHA==":"274h-2698x1799.jpg","MsTBATBtLsXE7DgoYOhZ2g==":"austin-neill-213461-2698x1799.jpg","y+RYVlJVmE4lTAQx4JYCNw==":"hdh5t8f-1680x1050.png","PIPxhYIBdVnh4a4JtFToCQ==":"hdh5t8f-1-1680x1050.png","2IWaRzWX08Xh8KE4TGwv6w==":"113h-2000x1334.jpg"} -------------------------------------------------------------------------------- /blog/static/assets/images/hdh5t8f-1-1680x1050.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/hdh5t8f-1-1680x1050.png -------------------------------------------------------------------------------- /blog/static/assets/images/jumbotron.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/images/jumbotron.jpg -------------------------------------------------------------------------------- /blog/static/assets/parallax/jarallax.min.js: -------------------------------------------------------------------------------- 1 | /*! 2 | * Name : Just Another Parallax [Jarallax] 3 | * Version : 1.7.3 4 | * Author : _nK https://nkdev.info 5 | * GitHub : https://github.com/nk-o/jarallax 6 | */ 7 | !function(e){"use strict";function t(){i=e.innerWidth||document.documentElement.clientWidth,a=e.innerHeight||document.documentElement.clientHeight}function n(e,t,n){e.addEventListener?e.addEventListener(t,n):e.attachEvent("on"+t,function(){n.call(e)})}function o(n){e.requestAnimationFrame(function(){"scroll"!==n.type&&t();for(var e=0,o=g.length;e0&&"none"!==t}(),l=navigator.userAgent.toLowerCase().indexOf("android")>-1,s=/iPad|iPhone|iPod/.test(navigator.userAgent)&&!e.MSStream,c=!!e.opera,m=/Edge\/\d+/.test(navigator.userAgent),p=/Trident.*rv[ :]*11\./.test(navigator.userAgent),u=!!Function("/*@cc_on return document.documentMode===10@*/")(),d=document.all&&!e.atob;t();var g=[],f=function(){function e(e,n){var o,i=this;if(i.$item=e,i.defaults={type:"scroll",speed:.5,imgSrc:null,imgWidth:null,imgHeight:null,enableTransform:!0,elementInViewport:null,zIndex:-100,noAndroid:!1,noIos:!0,onScroll:null,onInit:null,onDestroy:null,onCoverImage:null},o=JSON.parse(i.$item.getAttribute("data-jarallax")||"{}"),i.options=i.extend({},i.defaults,o,n),!(l&&i.options.noAndroid||s&&i.options.noIos)){i.options.speed=Math.min(2,Math.max(-1,parseFloat(i.options.speed)));var a=i.options.elementInViewport;a&&"object"==typeof a&&"undefined"!=typeof a.length&&(a=a[0]),!a instanceof Element&&(a=null),i.options.elementInViewport=a,i.instanceID=t++,i.image={src:i.options.imgSrc||null,$container:null,$item:null,width:i.options.imgWidth||null,height:i.options.imgHeight||null,useImgTag:s||l||c||p||u||m},i.initImg()&&i.init()}}var t=0;return e}();f.prototype.css=function(t,n){if("string"==typeof n)return e.getComputedStyle?e.getComputedStyle(t).getPropertyValue(n):t.style[n];n.transform&&(n.WebkitTransform=n.MozTransform=n.transform);for(var o in n)t.style[o]=n[o];return t},f.prototype.extend=function(e){e=e||{};for(var t=1;t1?d=Math.abs(p-a):c<0?d=p/c+Math.abs(p):d+=Math.abs(a-o)*(1-c),p/=2),u=d*l/s,u=0&&c.right>=0&&c.top<=a&&c.left<=i,e||t.isElementInViewport){var m=Math.max(0,o),p=Math.max(0,l+o),u=Math.max(0,-o),g=Math.max(0,o+l-a),f=Math.max(0,l-(o+l-a)),h=Math.max(0,-o+a-l),y=1-2*(a-o)/(a+l),v=1;if(l * { 170 | width: 100%; } 171 | 172 | @media (min-width: 992px) { 173 | .media-container-row { 174 | -webkit-flex-wrap: nowrap; 175 | -ms-flex-wrap: nowrap; 176 | flex-wrap: nowrap; } } 177 | figure { 178 | overflow: hidden; } 179 | 180 | figure[mbr-media-size] { 181 | transition: width 0.1s; } 182 | 183 | .mbr-figure img, .mbr-figure iframe { 184 | display: block; 185 | width: 100%; } 186 | 187 | .card { 188 | background-color: transparent; 189 | border: none; } 190 | 191 | .card-img { 192 | text-align: center; 193 | flex-shrink: 0; } 194 | 195 | .media { 196 | max-width: 100%; 197 | margin: 0 auto; } 198 | 199 | .mbr-figure { 200 | -ms-flex-item-align: center; 201 | -ms-grid-row-align: center; 202 | -webkit-align-self: center; 203 | align-self: center; } 204 | 205 | .media-container > div { 206 | max-width: 100%; } 207 | 208 | .mbr-figure img, .card-img img { 209 | width: 100%; } 210 | 211 | @media (max-width: 991px) { 212 | .media-size-item { 213 | width: auto !important; } 214 | 215 | .media { 216 | width: auto; } 217 | 218 | .mbr-figure { 219 | width: 100% !important; } } 220 | /*! Buttons */ 221 | .mbr-section-btn { 222 | margin-left: -.25rem; 223 | margin-right: -.25rem; 224 | font-size: 0; } 225 | 226 | nav .mbr-section-btn { 227 | margin-left: 0rem; 228 | margin-right: 0rem; } 229 | 230 | /*! Btn icon margin */ 231 | .btn .mbr-iconfont, .btn.btn-sm .mbr-iconfont { 232 | cursor: pointer; 233 | margin-right: 0.5rem; } 234 | 235 | .btn.btn-md .mbr-iconfont, .btn.btn-md .mbr-iconfont { 236 | margin-right: 0.8rem; } 237 | 238 | .mbr-regular { 239 | font-weight: 400; } 240 | 241 | .mbr-semibold { 242 | font-weight: 500; } 243 | 244 | .mbr-bold { 245 | font-weight: 700; } 246 | 247 | [type="submit"] { 248 | -webkit-appearance: none; } 249 | 250 | /*! Full-screen */ 251 | .mbr-fullscreen .mbr-overlay { 252 | min-height: 100vh; } 253 | 254 | .mbr-fullscreen { 255 | display: flex; 256 | display: -webkit-flex; 257 | display: -moz-flex; 258 | display: -ms-flex; 259 | display: -o-flex; 260 | align-items: center; 261 | -webkit-align-items: center; 262 | min-height: 100vh; 263 | padding-top: 3rem; 264 | padding-bottom: 3rem; } 265 | 266 | /*! Map */ 267 | .map { 268 | height: 25rem; 269 | position: relative; } 270 | .map iframe { 271 | width: 100%; 272 | height: 100%; } 273 | 274 | /* Form */ 275 | .form-asterisk { 276 | font-family: initial; 277 | position: absolute; 278 | top: -2px; 279 | font-weight: normal; } 280 | 281 | /*! Scroll to top arrow */ 282 | .mbr-arrow-up { 283 | bottom: 25px; 284 | right: 90px; 285 | position: fixed; 286 | text-align: right; 287 | z-index: 5000; 288 | color: #ffffff; 289 | font-size: 32px; 290 | transform: rotate(180deg); 291 | -webkit-transform: rotate(180deg); } 292 | 293 | .mbr-arrow-up a { 294 | background: rgba(0, 0, 0, 0.2); 295 | border-radius: 3px; 296 | color: #fff; 297 | display: inline-block; 298 | height: 60px; 299 | width: 60px; 300 | outline-style: none !important; 301 | position: relative; 302 | text-decoration: none; 303 | transition: all .3s ease-in-out; 304 | cursor: pointer; 305 | text-align: center; } 306 | .mbr-arrow-up a:hover { 307 | background-color: rgba(0, 0, 0, 0.4); } 308 | .mbr-arrow-up a i { 309 | line-height: 60px; } 310 | 311 | .mbr-arrow-up-icon { 312 | display: block; 313 | color: #fff; } 314 | 315 | .mbr-arrow-up-icon::before { 316 | content: "\203a"; 317 | display: inline-block; 318 | font-family: serif; 319 | font-size: 32px; 320 | line-height: 1; 321 | font-style: normal; 322 | position: relative; 323 | top: 6px; 324 | left: -4px; 325 | -webkit-transform: rotate(-90deg); 326 | transform: rotate(-90deg); } 327 | 328 | /*! Arrow Down */ 329 | .mbr-arrow { 330 | position: absolute; 331 | bottom: 45px; 332 | left: 50%; 333 | width: 60px; 334 | height: 60px; 335 | cursor: pointer; 336 | background-color: rgba(80, 80, 80, 0.5); 337 | border-radius: 50%; 338 | -webkit-transform: translateX(-50%); 339 | transform: translateX(-50%); } 340 | .mbr-arrow > a { 341 | display: inline-block; 342 | text-decoration: none; 343 | outline-style: none; 344 | -webkit-animation: arrowdown 1.7s ease-in-out infinite; 345 | animation: arrowdown 1.7s ease-in-out infinite; } 346 | .mbr-arrow > a > i { 347 | position: absolute; 348 | top: -2px; 349 | left: 15px; 350 | font-size: 2rem; } 351 | 352 | @keyframes arrowdown { 353 | 0% { 354 | transform: translateY(0px); 355 | -webkit-transform: translateY(0px); } 356 | 50% { 357 | transform: translateY(-5px); 358 | -webkit-transform: translateY(-5px); } 359 | 100% { 360 | transform: translateY(0px); 361 | -webkit-transform: translateY(0px); } } 362 | @-webkit-keyframes arrowdown { 363 | 0% { 364 | transform: translateY(0px); 365 | -webkit-transform: translateY(0px); } 366 | 50% { 367 | transform: translateY(-5px); 368 | -webkit-transform: translateY(-5px); } 369 | 100% { 370 | transform: translateY(0px); 371 | -webkit-transform: translateY(0px); } } 372 | @media (max-width: 500px) { 373 | .mbr-arrow-up { 374 | left: 50%; 375 | right: auto; 376 | transform: translateX(-50%) rotate(180deg); 377 | -webkit-transform: translateX(-50%) rotate(180deg); } } 378 | /*Gradients animation*/ 379 | @keyframes gradient-animation { 380 | from { 381 | background-position: 0% 100%; 382 | animation-timing-function: ease-in-out; } 383 | to { 384 | background-position: 100% 0%; 385 | animation-timing-function: ease-in-out; } } 386 | @-webkit-keyframes gradient-animation { 387 | from { 388 | background-position: 0% 100%; 389 | animation-timing-function: ease-in-out; } 390 | to { 391 | background-position: 100% 0%; 392 | animation-timing-function: ease-in-out; } } 393 | .bg-gradient { 394 | background-size: 200% 200%; 395 | animation: gradient-animation 5s infinite alternate; 396 | -webkit-animation: gradient-animation 5s infinite alternate; } 397 | 398 | .menu .navbar-brand { 399 | display: -webkit-flex; } 400 | .menu .navbar-brand span { 401 | display: flex; 402 | display: -webkit-flex; } 403 | .menu .navbar-brand .navbar-caption-wrap { 404 | display: -webkit-flex; } 405 | .menu .navbar-brand .navbar-logo img { 406 | display: -webkit-flex; } 407 | @media (min-width: 768px) and (max-width: 991px) { 408 | .menu .navbar-toggleable-sm .navbar-nav { 409 | display: -webkit-box; 410 | display: -webkit-flex; 411 | display: -ms-flexbox; } } 412 | @media (min-width: 992px) { 413 | .menu .navbar-nav.nav-dropdown { 414 | display: -webkit-flex; } 415 | .menu .navbar-toggleable-sm .navbar-collapse { 416 | display: -webkit-flex !important; } } 417 | 418 | /*# sourceMappingURL=style.css.map */ 419 | .engine { 420 | position: absolute; 421 | text-indent: -2400px; 422 | text-align: center; 423 | padding: 0; 424 | top: 0; 425 | left: -2400px; 426 | } -------------------------------------------------------------------------------- /blog/static/assets/viewportchecker/jquery.viewportchecker.js: -------------------------------------------------------------------------------- 1 | /* 2 | The MIT License (MIT) 3 | 4 | Copyright (c) 2014 Dirk Groenen 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy of 7 | this software and associated documentation files (the "Software"), to deal in 8 | the Software without restriction, including without limitation the rights to 9 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 10 | the Software, and to permit persons to whom the Software is furnished to do so, 11 | subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | */ 16 | !function(t){t.fn.viewportChecker=function(o){var e={classToAdd:"visible",classToRemove:"invisible",classToAddForFullView:"full-visible",removeClassAfterAnimation:!1,offset:100,repeat:!1,invertBottomOffset:!0,callbackFunction:function(t,o){},scrollHorizontal:!1,scrollBox:window};t.extend(e,o);var a=this,s={height:t(e.scrollBox).height(),width:t(e.scrollBox).width()};return this.checkElements=function(){var o,l;e.scrollHorizontal?(o=Math.max(t("html").scrollLeft(),t("body").scrollLeft(),t(window).scrollLeft()),l=o+s.width):(o=Math.max(t("html").scrollTop(),t("body").scrollTop(),t(window).scrollTop()),l=o+s.height),a.each(function(){var a=t(this),i={},n={};if(a.data("vp-add-class")&&(n.classToAdd=a.data("vp-add-class")),a.data("vp-remove-class")&&(n.classToRemove=a.data("vp-remove-class")),a.data("vp-add-class-full-view")&&(n.classToAddForFullView=a.data("vp-add-class-full-view")),a.data("vp-keep-add-class")&&(n.removeClassAfterAnimation=a.data("vp-remove-after-animation")),a.data("vp-offset")&&(n.offset=a.data("vp-offset")),a.data("vp-repeat")&&(n.repeat=a.data("vp-repeat")),a.data("vp-scrollHorizontal")&&(n.scrollHorizontal=a.data("vp-scrollHorizontal")),a.data("vp-invertBottomOffset")&&(n.scrollHorizontal=a.data("vp-invertBottomOffset")),t.extend(i,e),t.extend(i,n),!a.data("vp-animated")||i.repeat){String(i.offset).indexOf("%")>0&&(i.offset=parseInt(i.offset)/100*s.height);var d=i.scrollHorizontal?a.offset().left:a.offset().top,r=i.scrollHorizontal?d+a.width():d+a.height(),c=Math.round(d)+i.offset,h=i.scrollHorizontal?c+a.width():c+a.height();i.invertBottomOffset&&(h-=2*i.offset),co?(a.removeClass(i.classToRemove),a.addClass(i.classToAdd),i.callbackFunction(a,"add"),r<=l&&d>=o?a.addClass(i.classToAddForFullView):a.removeClass(i.classToAddForFullView),a.data("vp-animated",!0),i.removeClassAfterAnimation&&a.one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){a.removeClass(i.classToAdd)})):a.hasClass(i.classToAdd)&&i.repeat&&(a.removeClass(i.classToAdd+" "+i.classToAddForFullView),i.callbackFunction(a,"remove"),a.data("vp-animated",!1))}})},("ontouchstart"in window||"onmsgesturechange"in window)&&t(document).bind("touchmove MSPointerMove pointermove",this.checkElements),t(e.scrollBox).bind("load scroll",this.checkElements),t(window).resize(function(o){s={height:t(e.scrollBox).height(),width:t(e.scrollBox).width()},a.checkElements()}),this.checkElements(),this}}(jQuery);var isBuilder=$("html").hasClass("is-builder");isBuilder||$(".counters").each(function(){$(this).viewportChecker({callbackFunction:function(t,o){$("#"+t.attr("id")+" .count").each(function(){$(this).prop("Counter",0).animate({Counter:$(this).text()},{duration:3e3,easing:"swing",step:function(t){$(this).text(Math.ceil(t))}})})}})}); -------------------------------------------------------------------------------- /blog/static/assets/web/assets/mobirise-icons/mobirise-icons.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: 'MobiriseIcons'; 3 | src: url('mobirise-icons.eot?spat4u'); 4 | src: url('mobirise-icons.eot?spat4u#iefix') format('embedded-opentype'), 5 | url('mobirise-icons.ttf?spat4u') format('truetype'), 6 | url('mobirise-icons.woff?spat4u') format('woff'), 7 | url('mobirise-icons.svg?spat4u#MobiriseIcons') format('svg'); 8 | font-weight: normal; 9 | font-style: normal; 10 | } 11 | 12 | [class^="mbri-"], [class*=" mbri-"] { 13 | /* use !important to prevent issues with browser extensions that change fonts */ 14 | font-family: MobiriseIcons !important; 15 | speak: none; 16 | font-style: normal; 17 | font-weight: normal; 18 | font-variant: normal; 19 | text-transform: none; 20 | line-height: 1; 21 | 22 | /* Better Font Rendering =========== */ 23 | -webkit-font-smoothing: antialiased; 24 | -moz-osx-font-smoothing: grayscale; 25 | } 26 | 27 | .mbri-add-submenu:before { 28 | content: "\e900"; 29 | } 30 | .mbri-alert:before { 31 | content: "\e901"; 32 | } 33 | .mbri-align-center:before { 34 | content: "\e902"; 35 | } 36 | .mbri-align-justify:before { 37 | content: "\e903"; 38 | } 39 | .mbri-align-left:before { 40 | content: "\e904"; 41 | } 42 | .mbri-align-right:before { 43 | content: "\e905"; 44 | } 45 | .mbri-android:before { 46 | content: "\e906"; 47 | } 48 | .mbri-apple:before { 49 | content: "\e907"; 50 | } 51 | .mbri-arrow-down:before { 52 | content: "\e908"; 53 | } 54 | .mbri-arrow-next:before { 55 | content: "\e909"; 56 | } 57 | .mbri-arrow-prev:before { 58 | content: "\e90a"; 59 | } 60 | .mbri-arrow-up:before { 61 | content: "\e90b"; 62 | } 63 | .mbri-bold:before { 64 | content: "\e90c"; 65 | } 66 | .mbri-bookmark:before { 67 | content: "\e90d"; 68 | } 69 | .mbri-bootstrap:before { 70 | content: "\e90e"; 71 | } 72 | .mbri-briefcase:before { 73 | content: "\e90f"; 74 | } 75 | .mbri-browse:before { 76 | content: "\e910"; 77 | } 78 | .mbri-bulleted-list:before { 79 | content: "\e911"; 80 | } 81 | .mbri-calendar:before { 82 | content: "\e912"; 83 | } 84 | .mbri-camera:before { 85 | content: "\e913"; 86 | } 87 | .mbri-cart-add:before { 88 | content: "\e914"; 89 | } 90 | .mbri-cart-full:before { 91 | content: "\e915"; 92 | } 93 | .mbri-cash:before { 94 | content: "\e916"; 95 | } 96 | .mbri-change-style:before { 97 | content: "\e917"; 98 | } 99 | .mbri-chat:before { 100 | content: "\e918"; 101 | } 102 | .mbri-clock:before { 103 | content: "\e919"; 104 | } 105 | .mbri-close:before { 106 | content: "\e91a"; 107 | } 108 | .mbri-cloud:before { 109 | content: "\e91b"; 110 | } 111 | .mbri-code:before { 112 | content: "\e91c"; 113 | } 114 | .mbri-contact-form:before { 115 | content: "\e91d"; 116 | } 117 | .mbri-credit-card:before { 118 | content: "\e91e"; 119 | } 120 | .mbri-cursor-click:before { 121 | content: "\e91f"; 122 | } 123 | .mbri-cust-feedback:before { 124 | content: "\e920"; 125 | } 126 | .mbri-database:before { 127 | content: "\e921"; 128 | } 129 | .mbri-delivery:before { 130 | content: "\e922"; 131 | } 132 | .mbri-desktop:before { 133 | content: "\e923"; 134 | } 135 | .mbri-devices:before { 136 | content: "\e924"; 137 | } 138 | .mbri-down:before { 139 | content: "\e925"; 140 | } 141 | .mbri-download:before { 142 | content: "\e989"; 143 | } 144 | .mbri-drag-n-drop:before { 145 | content: "\e927"; 146 | } 147 | .mbri-drag-n-drop2:before { 148 | content: "\e928"; 149 | } 150 | .mbri-edit:before { 151 | content: "\e929"; 152 | } 153 | .mbri-edit2:before { 154 | content: "\e92a"; 155 | } 156 | .mbri-error:before { 157 | content: "\e92b"; 158 | } 159 | .mbri-extension:before { 160 | content: "\e92c"; 161 | } 162 | .mbri-features:before { 163 | content: "\e92d"; 164 | } 165 | .mbri-file:before { 166 | content: "\e92e"; 167 | } 168 | .mbri-flag:before { 169 | content: "\e92f"; 170 | } 171 | .mbri-folder:before { 172 | content: "\e930"; 173 | } 174 | .mbri-gift:before { 175 | content: "\e931"; 176 | } 177 | .mbri-github:before { 178 | content: "\e932"; 179 | } 180 | .mbri-globe:before { 181 | content: "\e933"; 182 | } 183 | .mbri-globe-2:before { 184 | content: "\e934"; 185 | } 186 | .mbri-growing-chart:before { 187 | content: "\e935"; 188 | } 189 | .mbri-hearth:before { 190 | content: "\e936"; 191 | } 192 | .mbri-help:before { 193 | content: "\e937"; 194 | } 195 | .mbri-home:before { 196 | content: "\e938"; 197 | } 198 | .mbri-hot-cup:before { 199 | content: "\e939"; 200 | } 201 | .mbri-idea:before { 202 | content: "\e93a"; 203 | } 204 | .mbri-image-gallery:before { 205 | content: "\e93b"; 206 | } 207 | .mbri-image-slider:before { 208 | content: "\e93c"; 209 | } 210 | .mbri-info:before { 211 | content: "\e93d"; 212 | } 213 | .mbri-italic:before { 214 | content: "\e93e"; 215 | } 216 | .mbri-key:before { 217 | content: "\e93f"; 218 | } 219 | .mbri-laptop:before { 220 | content: "\e940"; 221 | } 222 | .mbri-layers:before { 223 | content: "\e941"; 224 | } 225 | .mbri-left-right:before { 226 | content: "\e942"; 227 | } 228 | .mbri-left:before { 229 | content: "\e943"; 230 | } 231 | .mbri-letter:before { 232 | content: "\e944"; 233 | } 234 | .mbri-like:before { 235 | content: "\e945"; 236 | } 237 | .mbri-link:before { 238 | content: "\e946"; 239 | } 240 | .mbri-lock:before { 241 | content: "\e947"; 242 | } 243 | .mbri-login:before { 244 | content: "\e948"; 245 | } 246 | .mbri-logout:before { 247 | content: "\e949"; 248 | } 249 | .mbri-magic-stick:before { 250 | content: "\e94a"; 251 | } 252 | .mbri-map-pin:before { 253 | content: "\e94b"; 254 | } 255 | .mbri-menu:before { 256 | content: "\e94c"; 257 | } 258 | .mbri-mobile:before { 259 | content: "\e94d"; 260 | } 261 | .mbri-mobile2:before { 262 | content: "\e94e"; 263 | } 264 | .mbri-mobirise:before { 265 | content: "\e94f"; 266 | } 267 | .mbri-more-horizontal:before { 268 | content: "\e950"; 269 | } 270 | .mbri-more-vertical:before { 271 | content: "\e951"; 272 | } 273 | .mbri-music:before { 274 | content: "\e952"; 275 | } 276 | .mbri-new-file:before { 277 | content: "\e953"; 278 | } 279 | .mbri-numbered-list:before { 280 | content: "\e954"; 281 | } 282 | .mbri-opened-folder:before { 283 | content: "\e955"; 284 | } 285 | .mbri-pages:before { 286 | content: "\e956"; 287 | } 288 | .mbri-paper-plane:before { 289 | content: "\e957"; 290 | } 291 | .mbri-paperclip:before { 292 | content: "\e958"; 293 | } 294 | .mbri-photo:before { 295 | content: "\e959"; 296 | } 297 | .mbri-photos:before { 298 | content: "\e95a"; 299 | } 300 | .mbri-pin:before { 301 | content: "\e95b"; 302 | } 303 | .mbri-play:before { 304 | content: "\e95c"; 305 | } 306 | .mbri-plus:before { 307 | content: "\e95d"; 308 | } 309 | .mbri-preview:before { 310 | content: "\e95e"; 311 | } 312 | .mbri-print:before { 313 | content: "\e95f"; 314 | } 315 | .mbri-protect:before { 316 | content: "\e960"; 317 | } 318 | .mbri-question:before { 319 | content: "\e961"; 320 | } 321 | .mbri-quote-left:before { 322 | content: "\e962"; 323 | } 324 | .mbri-quote-right:before { 325 | content: "\e963"; 326 | } 327 | .mbri-refresh:before { 328 | content: "\e964"; 329 | } 330 | .mbri-responsive:before { 331 | content: "\e965"; 332 | } 333 | .mbri-right:before { 334 | content: "\e966"; 335 | } 336 | .mbri-rocket:before { 337 | content: "\e967"; 338 | } 339 | .mbri-sad-face:before { 340 | content: "\e968"; 341 | } 342 | .mbri-sale:before { 343 | content: "\e969"; 344 | } 345 | .mbri-save:before { 346 | content: "\e96a"; 347 | } 348 | .mbri-search:before { 349 | content: "\e96b"; 350 | } 351 | .mbri-setting:before { 352 | content: "\e96c"; 353 | } 354 | .mbri-setting2:before { 355 | content: "\e96d"; 356 | } 357 | .mbri-setting3:before { 358 | content: "\e96e"; 359 | } 360 | .mbri-share:before { 361 | content: "\e96f"; 362 | } 363 | .mbri-shopping-bag:before { 364 | content: "\e970"; 365 | } 366 | .mbri-shopping-basket:before { 367 | content: "\e971"; 368 | } 369 | .mbri-shopping-cart:before { 370 | content: "\e972"; 371 | } 372 | .mbri-sites:before { 373 | content: "\e973"; 374 | } 375 | .mbri-smile-face:before { 376 | content: "\e974"; 377 | } 378 | .mbri-speed:before { 379 | content: "\e975"; 380 | } 381 | .mbri-star:before { 382 | content: "\e976"; 383 | } 384 | .mbri-success:before { 385 | content: "\e977"; 386 | } 387 | .mbri-sun:before { 388 | content: "\e978"; 389 | } 390 | .mbri-sun2:before { 391 | content: "\e979"; 392 | } 393 | .mbri-tablet:before { 394 | content: "\e97a"; 395 | } 396 | .mbri-tablet-vertical:before { 397 | content: "\e97b"; 398 | } 399 | .mbri-target:before { 400 | content: "\e97c"; 401 | } 402 | .mbri-timer:before { 403 | content: "\e97d"; 404 | } 405 | .mbri-to-ftp:before { 406 | content: "\e97e"; 407 | } 408 | .mbri-to-local-drive:before { 409 | content: "\e97f"; 410 | } 411 | .mbri-touch-swipe:before { 412 | content: "\e980"; 413 | } 414 | .mbri-touch:before { 415 | content: "\e981"; 416 | } 417 | .mbri-trash:before { 418 | content: "\e982"; 419 | } 420 | .mbri-underline:before { 421 | content: "\e983"; 422 | } 423 | .mbri-unlink:before { 424 | content: "\e984"; 425 | } 426 | .mbri-unlock:before { 427 | content: "\e985"; 428 | } 429 | .mbri-up-down:before { 430 | content: "\e986"; 431 | } 432 | .mbri-up:before { 433 | content: "\e987"; 434 | } 435 | .mbri-update:before { 436 | content: "\e988"; 437 | } 438 | .mbri-upload:before { 439 | content: "\e926"; 440 | } 441 | .mbri-user:before { 442 | content: "\e98a"; 443 | } 444 | .mbri-user2:before { 445 | content: "\e98b"; 446 | } 447 | .mbri-users:before { 448 | content: "\e98c"; 449 | } 450 | .mbri-video:before { 451 | content: "\e98d"; 452 | } 453 | .mbri-video-play:before { 454 | content: "\e98e"; 455 | } 456 | .mbri-watch:before { 457 | content: "\e98f"; 458 | } 459 | .mbri-website-theme:before { 460 | content: "\e990"; 461 | } 462 | .mbri-wifi:before { 463 | content: "\e991"; 464 | } 465 | .mbri-windows:before { 466 | content: "\e992"; 467 | } 468 | .mbri-zoom-out:before { 469 | content: "\e993"; 470 | } 471 | .mbri-redo:before { 472 | content: "\e994"; 473 | } 474 | .mbri-undo:before { 475 | content: "\e995"; 476 | } 477 | -------------------------------------------------------------------------------- /blog/static/assets/web/assets/mobirise-icons/mobirise-icons.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/web/assets/mobirise-icons/mobirise-icons.eot -------------------------------------------------------------------------------- /blog/static/assets/web/assets/mobirise-icons/mobirise-icons.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/web/assets/mobirise-icons/mobirise-icons.ttf -------------------------------------------------------------------------------- /blog/static/assets/web/assets/mobirise-icons/mobirise-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/blog/static/assets/web/assets/mobirise-icons/mobirise-icons.woff -------------------------------------------------------------------------------- /blog/static/css/metro-rtl.css: -------------------------------------------------------------------------------- 1 | input.rtl, 2 | input[dir=rtl] { 3 | direction: rtl; 4 | } 5 | .input[dir=rtl], 6 | .input.rtl { 7 | -webkit-box-orient: horizontal; 8 | -webkit-box-direction: reverse; 9 | -ms-flex-flow: row-reverse nowrap; 10 | flex-flow: row-reverse nowrap; 11 | } 12 | .input[dir=rtl] input, 13 | .input.rtl input { 14 | -webkit-box-ordinal-group: 3; 15 | -ms-flex-order: 2; 16 | order: 2; 17 | direction: rtl; 18 | } 19 | .input[dir=rtl] .button-group, 20 | .input.rtl .button-group { 21 | -webkit-box-ordinal-group: 2; 22 | -ms-flex-order: 1; 23 | order: 1; 24 | } 25 | .input[dir=rtl] .prepend, 26 | .input.rtl .prepend { 27 | -webkit-box-ordinal-group: 4; 28 | -ms-flex-order: 3; 29 | order: 3; 30 | } 31 | .file[dir=rtl] .prepend, 32 | .file.rtl .prepend { 33 | -webkit-box-ordinal-group: 4; 34 | -ms-flex-order: 3; 35 | order: 3; 36 | } 37 | .file[dir=rtl] .caption, 38 | .file.rtl .caption { 39 | -webkit-box-ordinal-group: 3; 40 | -ms-flex-order: 2; 41 | order: 2; 42 | text-align: right; 43 | } 44 | .file[dir=rtl] button, 45 | .file.rtl button { 46 | -webkit-box-ordinal-group: 2; 47 | -ms-flex-order: 1; 48 | order: 1; 49 | margin-left: 0; 50 | margin-right: auto; 51 | } 52 | .textarea[dir=rtl], 53 | .textarea.rtl { 54 | -webkit-box-orient: horizontal; 55 | -webkit-box-direction: reverse; 56 | -ms-flex-direction: row-reverse; 57 | flex-direction: row-reverse; 58 | } 59 | .textarea[dir=rtl] .prepend, 60 | .textarea.rtl .prepend { 61 | -webkit-box-ordinal-group: 3; 62 | -ms-flex-order: 2; 63 | order: 2; 64 | } 65 | .textarea[dir=rtl] textarea, 66 | .textarea.rtl textarea { 67 | -webkit-box-ordinal-group: 2; 68 | -ms-flex-order: 1; 69 | order: 1; 70 | } 71 | .textarea[dir=rtl] .input-clear-button, 72 | .textarea.rtl .input-clear-button { 73 | right: auto; 74 | left: .25rem; 75 | } 76 | .textarea[dir=rtl] .input-clear-button ~ textarea, 77 | .textarea.rtl .input-clear-button ~ textarea { 78 | padding-left: 48px; 79 | padding-right: .75rem; 80 | } 81 | .select[dir=rtl], 82 | .select.rtl { 83 | -webkit-box-orient: horizontal; 84 | -webkit-box-direction: reverse; 85 | -ms-flex-direction: row-reverse; 86 | flex-direction: row-reverse; 87 | } 88 | .select[dir=rtl] input, 89 | .select.rtl input { 90 | -webkit-box-ordinal-group: 2; 91 | -ms-flex-order: 1; 92 | order: 1; 93 | } 94 | .select[dir=rtl] .prepend, 95 | .select.rtl .prepend { 96 | -webkit-box-ordinal-group: 3; 97 | -ms-flex-order: 2; 98 | order: 2; 99 | } 100 | .select[dir=rtl].dropdown-toggle, 101 | .select.rtl.dropdown-toggle { 102 | padding-right: 0!important; 103 | padding-left: 1.5rem; 104 | } 105 | .select[dir=rtl].dropdown-toggle::before, 106 | .select.rtl.dropdown-toggle::before { 107 | margin-left: 1.25rem; 108 | left: 0; 109 | } 110 | -------------------------------------------------------------------------------- /blog/static/css/test.py: -------------------------------------------------------------------------------- 1 | -*- mode: python;-*- 2 | -------------------------------------------------------------------------------- /blog/static/js/jquery-file-upload/jquery.iframe-transport.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery Iframe Transport Plugin 3 | * https://github.com/blueimp/jQuery-File-Upload 4 | * 5 | * Copyright 2011, Sebastian Tschan 6 | * https://blueimp.net 7 | * 8 | * Licensed under the MIT license: 9 | * http://www.opensource.org/licenses/MIT 10 | */ 11 | 12 | /* global define, require, window, document */ 13 | 14 | ;(function (factory) { 15 | 'use strict'; 16 | if (typeof define === 'function' && define.amd) { 17 | // Register as an anonymous AMD module: 18 | define(['jquery'], factory); 19 | } else if (typeof exports === 'object') { 20 | // Node/CommonJS: 21 | factory(require('jquery')); 22 | } else { 23 | // Browser globals: 24 | factory(window.jQuery); 25 | } 26 | }(function ($) { 27 | 'use strict'; 28 | 29 | // Helper variable to create unique names for the transport iframes: 30 | var counter = 0; 31 | 32 | // The iframe transport accepts four additional options: 33 | // options.fileInput: a jQuery collection of file input fields 34 | // options.paramName: the parameter name for the file form data, 35 | // overrides the name property of the file input field(s), 36 | // can be a string or an array of strings. 37 | // options.formData: an array of objects with name and value properties, 38 | // equivalent to the return data of .serializeArray(), e.g.: 39 | // [{name: 'a', value: 1}, {name: 'b', value: 2}] 40 | // options.initialIframeSrc: the URL of the initial iframe src, 41 | // by default set to "javascript:false;" 42 | $.ajaxTransport('iframe', function (options) { 43 | if (options.async) { 44 | // javascript:false as initial iframe src 45 | // prevents warning popups on HTTPS in IE6: 46 | /*jshint scripturl: true */ 47 | var initialIframeSrc = options.initialIframeSrc || 'javascript:false;', 48 | /*jshint scripturl: false */ 49 | form, 50 | iframe, 51 | addParamChar; 52 | return { 53 | send: function (_, completeCallback) { 54 | form = $('
'); 55 | form.attr('accept-charset', options.formAcceptCharset); 56 | addParamChar = /\?/.test(options.url) ? '&' : '?'; 57 | // XDomainRequest only supports GET and POST: 58 | if (options.type === 'DELETE') { 59 | options.url = options.url + addParamChar + '_method=DELETE'; 60 | options.type = 'POST'; 61 | } else if (options.type === 'PUT') { 62 | options.url = options.url + addParamChar + '_method=PUT'; 63 | options.type = 'POST'; 64 | } else if (options.type === 'PATCH') { 65 | options.url = options.url + addParamChar + '_method=PATCH'; 66 | options.type = 'POST'; 67 | } 68 | // IE versions below IE8 cannot set the name property of 69 | // elements that have already been added to the DOM, 70 | // so we set the name along with the iframe HTML markup: 71 | counter += 1; 72 | iframe = $( 73 | '' 75 | ).bind('load', function () { 76 | var fileInputClones, 77 | paramNames = $.isArray(options.paramName) ? 78 | options.paramName : [options.paramName]; 79 | iframe 80 | .unbind('load') 81 | .bind('load', function () { 82 | var response; 83 | // Wrap in a try/catch block to catch exceptions thrown 84 | // when trying to access cross-domain iframe contents: 85 | try { 86 | response = iframe.contents(); 87 | // Google Chrome and Firefox do not throw an 88 | // exception when calling iframe.contents() on 89 | // cross-domain requests, so we unify the response: 90 | if (!response.length || !response[0].firstChild) { 91 | throw new Error(); 92 | } 93 | } catch (e) { 94 | response = undefined; 95 | } 96 | // The complete callback returns the 97 | // iframe content document as response object: 98 | completeCallback( 99 | 200, 100 | 'success', 101 | {'iframe': response} 102 | ); 103 | // Fix for IE endless progress bar activity bug 104 | // (happens on form submits to iframe targets): 105 | $('') 106 | .appendTo(form); 107 | window.setTimeout(function () { 108 | // Removing the form in a setTimeout call 109 | // allows Chrome's developer tools to display 110 | // the response result 111 | form.remove(); 112 | }, 0); 113 | }); 114 | form 115 | .prop('target', iframe.prop('name')) 116 | .prop('action', options.url) 117 | .prop('method', options.type); 118 | if (options.formData) { 119 | $.each(options.formData, function (index, field) { 120 | $('') 121 | .prop('name', field.name) 122 | .val(field.value) 123 | .appendTo(form); 124 | }); 125 | } 126 | if (options.fileInput && options.fileInput.length && 127 | options.type === 'POST') { 128 | fileInputClones = options.fileInput.clone(); 129 | // Insert a clone for each file input field: 130 | options.fileInput.after(function (index) { 131 | return fileInputClones[index]; 132 | }); 133 | if (options.paramName) { 134 | options.fileInput.each(function (index) { 135 | $(this).prop( 136 | 'name', 137 | paramNames[index] || options.paramName 138 | ); 139 | }); 140 | } 141 | // Appending the file input fields to the hidden form 142 | // removes them from their original location: 143 | form 144 | .append(options.fileInput) 145 | .prop('enctype', 'multipart/form-data') 146 | // enctype must be set as encoding for IE: 147 | .prop('encoding', 'multipart/form-data'); 148 | // Remove the HTML5 form attribute from the input(s): 149 | options.fileInput.removeAttr('form'); 150 | } 151 | form.submit(); 152 | // Insert the file input fields at their original location 153 | // by replacing the clones with the originals: 154 | if (fileInputClones && fileInputClones.length) { 155 | options.fileInput.each(function (index, input) { 156 | var clone = $(fileInputClones[index]); 157 | // Restore the original name and form properties: 158 | $(input) 159 | .prop('name', clone.prop('name')) 160 | .attr('form', clone.attr('form')); 161 | clone.replaceWith(input); 162 | }); 163 | } 164 | }); 165 | form.append(iframe).appendTo(document.body); 166 | }, 167 | abort: function () { 168 | if (iframe) { 169 | // javascript:false as iframe src aborts the request 170 | // and prevents warning popups on HTTPS in IE6. 171 | // concat is used to avoid the "Script URL" JSLint error: 172 | iframe 173 | .unbind('load') 174 | .prop('src', initialIframeSrc); 175 | } 176 | if (form) { 177 | form.remove(); 178 | } 179 | } 180 | }; 181 | } 182 | }); 183 | 184 | // The iframe transport returns the iframe content document as response. 185 | // The following adds converters from iframe to text, json, html, xml 186 | // and script. 187 | // Please note that the Content-Type for JSON responses has to be text/plain 188 | // or text/html, if the browser doesn't include application/json in the 189 | // Accept header, else IE will show a download dialog. 190 | // The Content-Type for XML responses on the other hand has to be always 191 | // application/xml or text/xml, so IE properly parses the XML response. 192 | // See also 193 | // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation 194 | $.ajaxSetup({ 195 | converters: { 196 | 'iframe text': function (iframe) { 197 | return iframe && $(iframe[0].body).text(); 198 | }, 199 | 'iframe json': function (iframe) { 200 | return iframe && $.parseJSON($(iframe[0].body).text()); 201 | }, 202 | 'iframe html': function (iframe) { 203 | return iframe && $(iframe[0].body).html(); 204 | }, 205 | 'iframe xml': function (iframe) { 206 | var xmlDoc = iframe && iframe[0]; 207 | return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : 208 | $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || 209 | $(xmlDoc.body).html()); 210 | }, 211 | 'iframe script': function (iframe) { 212 | return iframe && $.globalEval($(iframe[0].body).text()); 213 | } 214 | } 215 | }); 216 | 217 | })); 218 | -------------------------------------------------------------------------------- /blog/tests.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | from django.test import SimpleTestCase 3 | from .models import Blog 4 | from django.urls import reverse 5 | # Create your tests here. 6 | 7 | class PagesTests(TestCase): 8 | def test_home_page_status_code(self): 9 | response = self.client.get('/') 10 | self.assertEqual(response.status_code, 200) 11 | 12 | def test_view_url_by_name(self): 13 | resp = self.client.get(reverse('homepage')) 14 | self.assertEqual(resp.status_code, 200) 15 | 16 | def test_view_uses_correct_template(self): 17 | resp = self.client.get(reverse('homepage')) 18 | self.assertTemplateUsed(resp, 'homepage.html') 19 | 20 | 21 | class BlogModelTest(TestCase): 22 | def Setup(self): 23 | Blog.objects.Create(text='test tedfght') 24 | 25 | def test_text_content(self): 26 | blog = Blog.objects.get(id=2) 27 | expected_object_name = f'{blog.text}' 28 | self.assertEqual(expected_object_name, 'hewlo wortld') 29 | 30 | 31 | class BlogTests(TestCase): 32 | def setUp(self): 33 | self.user = get_user_model().objects.create_user( 34 | username='testuser', 35 | email='test@email.com', 36 | password='secret' 37 | ) 38 | self.blog = Blog.objects.create( 39 | title='A good title', 40 | body='Nice body content', 41 | author=self.user, 42 | ) 43 | 44 | def test_string_representation(self): 45 | Blog = Blog(title='A sample title') 46 | self.assertEqual(str(blog), blog.title) 47 | def test_blog_content(self): 48 | self.assertEqual(f'{self.blog.title}', 'A good title') 49 | self.assertEqual(f'{self.blog.author}', 'testuser') 50 | self.assertEqual(f'{self.blog.body}', 'Nice body content') 51 | def test_blog_list_view(self): 52 | response = self.client.get(reverse('home')) 53 | self.assertEqual(response. .status_code, 200) 54 | self.assertContains(response, 'Nice body content') 55 | self.assertTemplateUsed(response, 'home.html') 56 | 57 | def test_blog_detail_view(self): 58 | response = self. .client. .get('/blog/1/') 59 | no_response = self.client.get('/blog/100000/') 60 | self.assertEqual(response. .status_code, 200) 61 | self.assertEqual(no_response. .status_code, 404) 62 | self.assertContains(response, 'A good title') 63 | self.assertTemplateUsed(response, 'blog_detail.html') -------------------------------------------------------------------------------- /blog/urls.py: -------------------------------------------------------------------------------- 1 | from django.urls import path, include 2 | from blog import urls 3 | from . import views 4 | 5 | urlpatterns = [ 6 | path('', views.Homepage.as_view(), name='homepage'), 7 | path('aboutus', views.AboutUs.as_view(), name="aboutus"), 8 | path('post/', views.PostDetail, name='postdetail'), 9 | path('newpost', views.newpost, name='newpost'), 10 | path('usrinfo', views.user_image_func, name='usrinfo'), 11 | path('postedit/', views.PostEdit.as_view(), name='postedit'), 12 | path('postdelete/', views.BlogDelete.as_view(), name='postdelete'), 13 | path('mypost/', views.MyPost.as_view(), name='myposts'), 14 | path('commentreplydelete/', views.CommentReplyDelete.as_view(), name='commentreplydelete'), 15 | path('commentdelete/', views.CommentDelete.as_view(), name='commentdelete'), 16 | path('accounts/', include('django.contrib.auth.urls')), 17 | path('accounts/', include('accounts.urls')), 18 | path('post/postnew', views.BlogPostNew.as_view(), name='postnew'), 19 | path('profile/', views.profile, name='profile'), 20 | path('editprofileinfo/', views.userInfoFormView, name='editprofileinfo'), 21 | path('search', views.search, name='search'), 22 | path('category/', views.categoryview, name='category'), 23 | 24 | ] -------------------------------------------------------------------------------- /db.sqlite3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/db.sqlite3 -------------------------------------------------------------------------------- /manage.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import os 3 | import sys 4 | 5 | if __name__ == "__main__": 6 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trynewblog.settings") 7 | try: 8 | from django.core.management import execute_from_command_line 9 | except ImportError as exc: 10 | raise ImportError( 11 | "Couldn't import Django. Are you sure it's installed and " 12 | "available on your PYTHONPATH environment variable? Did you " 13 | "forget to activate a virtual environment?" 14 | ) from exc 15 | execute_from_command_line(sys.argv) 16 | -------------------------------------------------------------------------------- /media/documents/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/03.jpg -------------------------------------------------------------------------------- /media/documents/banner/Balsamiq_Mockups_3.5.15.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/Balsamiq_Mockups_3.5.15.exe -------------------------------------------------------------------------------- /media/documents/banner/an-awesome-trip-to-harhar/matt-howard-44749.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/an-awesome-trip-to-harhar/matt-howard-44749.jpg -------------------------------------------------------------------------------- /media/documents/banner/ashes-sitoula-93552-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/ashes-sitoula-93552-unsplash.jpg -------------------------------------------------------------------------------- /media/documents/banner/aziz-acharki-368189-unsplashedit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/aziz-acharki-368189-unsplashedit.jpg -------------------------------------------------------------------------------- /media/documents/banner/check2-test/283H.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/check2-test/283H.jpg -------------------------------------------------------------------------------- /media/documents/banner/chetan-menaria-2796-unsplash.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/chetan-menaria-2796-unsplash.jpg -------------------------------------------------------------------------------- /media/documents/banner/chetan-menaria-2796-unsplash_b1HPYxm.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/chetan-menaria-2796-unsplash_b1HPYxm.jpg -------------------------------------------------------------------------------- /media/documents/banner/thirteen-reasons-why/cover.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/documents/banner/thirteen-reasons-why/cover.jpg -------------------------------------------------------------------------------- /media/get_topbanner_filename/2560_3000.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/get_topbanner_filename/2560_3000.jpg -------------------------------------------------------------------------------- /media/post_images/post_images_18/alex.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/post_images/post_images_18/alex.jpg -------------------------------------------------------------------------------- /media/post_images/post_images_18/maxresdefault.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/post_images/post_images_18/maxresdefault.jpg -------------------------------------------------------------------------------- /media/user_image_noimg/jobs.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/user_image_noimg/jobs.jpg -------------------------------------------------------------------------------- /media/user_image_test1/330H.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/user_image_test1/330H.jpg -------------------------------------------------------------------------------- /media/user_image_test1/IMG_5540.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/media/user_image_test1/IMG_5540.PNG -------------------------------------------------------------------------------- /templates/base.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {% load static %} 10 | 11 | 12 | homepage 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {% load static %} 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 122 | 123 | 124 | {% block body %} 125 | 126 | {% endblock %} 127 | 128 | -------------------------------------------------------------------------------- /templates/basecrop.html: -------------------------------------------------------------------------------- 1 | {% load static %} 2 | 3 | 4 | 5 | 6 | 7 | 8 | {% block title %}Simple is Better Than Complex{% endblock %} 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | {% block content %} 17 | {% endblock %} 18 |
19 | 20 | 21 | 22 | {% block javascript %} 23 | {% endblock %} 24 | 25 | -------------------------------------------------------------------------------- /templates/blogdelete.html: -------------------------------------------------------------------------------- 1 |
2 | {% csrf_token %} 3 | {{ form.as_p}} 4 | 5 |
-------------------------------------------------------------------------------- /templates/blogedit.html: -------------------------------------------------------------------------------- 1 |
2 | {% csrf_token %} 3 | {{ form.as_p}} 4 | 5 |
-------------------------------------------------------------------------------- /templates/categoryview.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 | 13 |



14 | 15 | {% if err %} 16 |
17 |
18 |

{{err}}

19 |
20 |
21 | 22 | {% endif %} 23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 |
31 |
32 | {% for post in object_list %} 33 | 49 | 50 | {% endfor %} 51 |
52 |
53 |
54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | {% endblock %} 65 | 66 | 67 | 68 | {% if posts.has_other_pages %} 69 |
70 |
71 |
72 | 99 | {% endif %} 100 | -------------------------------------------------------------------------------- /templates/details mockup.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load widget_tweaks %} 3 | 4 | {% block body %} 5 | 6 | 7 | 8 |
9 | 10 |
11 |
12 | 13 |
14 |
15 |
16 |

17 | {{ data1.title }}

18 |

19 | {{ data1.subtitle }} 20 |

21 | 22 |
23 |
24 |
25 |
26 | 27 | 33 |
34 | 35 | 36 |
37 |
38 |
39 | 40 |
Total words - {{ data1.text|wordcount }}
41 | 42 | {% autoescape off %} 43 | {{ data1.text }} 44 | {% endautoescape %} 45 | 46 | 47 | {% load static%} 48 | 49 |

{{ data1.document.url}}

50 |

{{ data1.document.name }}

51 | 52 |
53 |
54 |
55 |
56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 |
66 | 67 |
68 |
69 |
70 |

71 | About the author 72 |

73 |

74 | {{userinfo_object.displayname }} 75 |

76 |

77 | {{userinfo_object.designation}} 78 |

79 |
80 |
81 | 82 |
83 |
84 |
85 |
86 | 87 | 88 | 89 | 90 | 91 | 92 | {% if user.is_authenticated %} 93 | 94 |
95 |
96 |
97 |

Post Comments:


98 |
99 | {% csrf_token %} 100 | {% for field in form1.visible_fields %} 101 | 102 |
103 | {{ field.label_tag }} 104 | {% render_field field class="form-control" %} 105 |
106 | {% endfor %} 107 | 108 | 109 | 110 |
111 |
112 |
113 |
114 |
115 |
116 | 117 |
118 | {% for comments in com %} 119 | 120 |
121 |
122 | avatar 123 |
124 |
125 |
{{comments.user}} Today, 2:38
126 |
127 |
128 | {{ comments.message }}
{% if comments.user == request.user %}delete{% endif %} 129 | 130 |
131 |
132 | Reply 133 |
134 | 135 | 145 |
146 |
147 |
148 | 149 | 150 | 151 | {% for r in replycom %} 152 | {% if r.whichcomment.message == comments.message %} 153 | 154 | 155 | 156 |
157 |
158 | 159 |
160 | avatar 161 |
162 |
163 |
{{r.user}} Today, 12:31
164 |
165 |
{{ r.message }}
{% if r.user == request.user %}delete{% endif %} 166 |
167 |
168 |
169 |
170 | 171 | 172 | 173 | {% endif %} 174 | {% endfor %} 175 |

176 | {% endfor %} 177 |
178 | {% else %} 179 | 180 | 181 |
182 |
183 |
184 |
185 | 191 |
192 |
193 |

LOGIN TO SEE COMMENTS

194 |

and enjoy various other features like reading, liking, commenting, connecting, posting etc.

195 |
196 |
197 |
198 |
199 | 200 | 201 | 202 | {% endif %} 203 | 204 | 205 | 206 | 207 |

208 | 209 | 210 | 211 | 212 |
213 |
214 |
215 | 219 | 248 |
249 |

250 | © Copyright 2017 Mobirise - All Rights Reserved 251 |

252 |
253 |
254 |
255 |
256 | 257 | 258 | 259 | 260 | 261 | 262 | 263 | 264 | 283 | 284 | 285 | 286 | {% endblock %} 287 | -------------------------------------------------------------------------------- /templates/editinfo.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% load widget_tweaks %} 4 | 5 | {% block body %} 6 | 7 |
8 |

9 |
10 |
11 |
12 |
13 |

Lets Edit Profile -


14 |
15 | {% csrf_token %} 16 | {{ form.non_field_errors }} 17 | 18 | {% for hidden_field in form.hidden_fields %} 19 | {{ hidden_field.errors }} 20 | {{ hidden_field }} 21 | {% endfor %} 22 | 23 | {% for field in form.visible_fields %} 24 | 25 |
26 | {{ field.label_tag }} 27 | 28 | {% render_field field class="form-control" %} 29 | {{ field.errors }} 30 | 31 | {% if field.help_text %} 32 | {{ field.help_text }} 33 | {% endif %} 34 |
35 | {% endfor %} 36 |
37 |

38 | 39 | 40 | Cancel 41 |
42 |
43 |
44 | {% endblock %} -------------------------------------------------------------------------------- /templates/editingpost.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% load widget_tweaks %} 4 | 5 | {% block body %} 6 | 7 |
8 |

9 |
10 | {% for d in documentdata %} 11 | 12 | {{d}}
13 | {{d.image}}
14 | {{d.image.url}}
15 | 16 | 17 | {% endfor %} 18 |


19 | 20 |

Lets Edit Post -


21 |
22 | {% csrf_token %} 23 | {{ form.non_field_errors }} 24 | 25 | {% for hidden_field in form.hidden_fields %} 26 | {{ hidden_field.errors }} 27 | {{ hidden_field }} 28 | {% endfor %} 29 | 30 | {% for field in form.visible_fields %} 31 |
32 | {{ field.label_tag }} 33 | 34 | {% render_field field class="form-control" %} 35 | 36 | {% if field.help_text %} 37 | {{ field.help_text }} 38 | {% endif %} 39 |
40 | {% endfor %} 41 |
42 |

43 | {{ formset.management_form }} 44 | {% for form in formset %} 45 | {% for field in form.visible_fields %} 46 |
47 | {{ field.label_tag }} 48 | {% render_field field class="form-control" %} 49 | {% if field.help_text %} 50 | {{ field.help_text }} 51 | {% endif %} 52 |
53 | {% endfor %} 54 | {% endfor %} 55 | 56 | 57 | 58 | Cancel 59 |
60 | 61 | 62 | {% endblock %} -------------------------------------------------------------------------------- /templates/homepag.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 | 5 |
6 | 7 |
8 |
9 |
10 |
Hi {{ request.user }}
We hope you Enjoy Reading !
11 |
12 |
13 |
14 |
15 | 16 | 17 |
18 |
19 |
20 | {% for post in object_list %} 21 | 43 | {% endfor %} 44 |
45 |
46 |
47 | 48 | {% if is_paginated %} 49 |
50 |
51 |
52 | 79 | {% endif %} 80 | 81 |
82 | 83 | 84 | 85 | 86 | 87 | 88 | {% endblock %} -------------------------------------------------------------------------------- /templates/homepage.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 | 13 |


14 |
15 |
16 |
17 |

Hi {{ request.user.first_name }}
{% if user.is_authenticated %} {% if request.user.email %}We hope you Enjoy Reading !{% else %}Please fill this short form Fill Form{% endif %}{% else %}Making an account just takes 30sec... Click here Login or Signup{% endif %}

18 |
19 |
20 |
21 | 22 | 23 |
24 |
25 | 26 | {% for post in object_list %} 27 | 43 | 44 | {% endfor %} 45 | 46 |
47 |
48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | {% if is_paginated %} 56 |
57 |
58 |
59 | 86 | {% endif %} 87 | 88 |
89 | 90 | 91 | 92 | 93 | 94 | 95 | {% endblock %} -------------------------------------------------------------------------------- /templates/homepagee.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 |
5 |
6 | 7 | Brand name 8 | Brand name 9 | 10 |
11 |
12 |
13 |
14 | 15 |
16 |

New Post

17 |
18 | 19 | {% for post in object_list %} 20 | 21 |

{{ post.title }}

edit 22 | 23 |

{{ post.author }}

24 |

{{ post.text }}

25 |
26 | {% endfor %} 27 | 28 | {% if is_paginated %} 29 |
    30 | {% if page_obj.has_previous %} 31 |
  • «
  • 32 | {% else %} 33 |
  • «
  • 34 | {% endif %} 35 | {% for i in paginator.page_range %} 36 | {% if page_obj.number == i %} 37 |
  • {{ i }} (curent page)
  • 38 | {% else %} 39 |
  • {{i}}
  • 40 | {% endif %} 41 | {% endfor %} 42 | {% if page_obj.has_next %} 43 |
  • »
  • 44 | {% else %} 45 |
  • »
  • 46 | {% endif %} 47 |
48 | {% endif %} 49 | 50 | 51 | 52 | 53 |
54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 |

Metro 4

62 |

The Components Library

63 | 64 | {% endblock %} -------------------------------------------------------------------------------- /templates/login.html: -------------------------------------------------------------------------------- 1 |

Login

2 |
3 | {% csrf_token %} 4 | {{ form.as_p }} 5 | 6 |
7 | -------------------------------------------------------------------------------- /templates/mypost.html: -------------------------------------------------------------------------------- 1 | Homepage 2 |

3 |

my post

4 | 5 | {% for post in authorallpost %} 6 |

{{ post.title }}

7 | 8 |

{{ post.text }}

9 | {% endfor %} 10 | 11 |
-------------------------------------------------------------------------------- /templates/poatnew.html: -------------------------------------------------------------------------------- 1 |
2 | {% csrf_token %} 3 | {{ form.as_p}} 4 | 5 |
-------------------------------------------------------------------------------- /templates/postdetail.html: -------------------------------------------------------------------------------- 1 | Homepage 2 |

3 |

{{ data1.title }}

4 |

{{ data1.author }}

5 |
{{ data1.text }}
6 | 7 |
8 | delete 9 |
10 |

comments

11 |
12 | {% csrf_token %} 13 | 14 | {{ form1 }} 15 | 16 | 17 | 18 |
19 |
20 |
21 |
22 | 23 | 24 | {% for comments in com %} 25 |

{{ comments.user }} --- 26 | {{ comments.message }}  {% if comments.user == request.user %}delete{% endif %} 27 |
28 |

29 | {% csrf_token %} 30 | 31 | 32 | 33 |   34 | 35 | 36 | 37 | 38 | 39 | 40 |
41 |
    42 | {% for r in replycom %} 43 | 44 | 45 | {% if r.whichcomment.message == comments.message %} 46 | 47 |
  • {{r.user }} -- {{ r.message }}  {% if r.user == request.user %}delete{% endif %}
  • 48 | 49 | {% endif %} 50 | 51 | {% endfor %} 52 |

53 | 54 |
55 | {% endfor %} 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /templates/postnew.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% load widget_tweaks %} 4 | 5 | 6 | 7 | {% block body %} 8 | 14 |



15 | 16 |
17 |
18 | 19 |
20 |
21 |

Formatting Help


22 |

23 | <strong>This is bold</strong> = This is bold 24 |


25 |

26 | <i>This is italics</i> = This is italics 27 |


28 |

29 |

<ul>
 30 | <li>This is item1</li>
 31 | <li>This is item2</li>
 32 | </ul>
33 |
  • This is item1
  • This is item2
34 |


35 |

36 | <br> = new line. 37 |


38 | 39 |

NOTE: Use this line to show images, Update your image name after uploading.

40 |
41 |
42 |
43 | <img class="img-fluid postimg" src="/media/post_images/post_images_i/YOUR_IMAGE_NAME_WITH_EXTENSION" > 44 |
45 |
46 |
47 | 48 |
49 |
50 |
51 |
52 | 53 | 54 | 55 | 64 | 65 |

Lets Post the Blog -


66 |
67 | {% csrf_token %} 68 | {{ form.non_field_errors }} 69 | 70 | {% for hidden_field in form.hidden_fields %} 71 | {{ hidden_field.errors }} 72 | {{ hidden_field }} 73 | {% endfor %} 74 | 75 | {% for field in form.visible_fields %} 76 |
77 | {{ field.label_tag }} 78 | 79 | {% if form.is_bound %} 80 | {% if field.errors %} 81 | {% render_field field class="form-control is-invalid" %} 82 | {% for error in field.errors %} 83 |
84 | {{ error }} 85 |
86 | {% endfor %} 87 | {% else %} 88 | {% render_field field class="form-control is-valid" %} 89 | {% endif %} 90 | {% else %} 91 | {% render_field field class="form-control" %} 92 | {% endif %} 93 | 94 | {% if field.help_text %} 95 | {{ field.help_text }} 96 | {% endif %} 97 |
98 | {% endfor %} 99 |
100 |

101 | {{ formset.management_form }} 102 | {% for form in formset %} 103 | {% for field in form.visible_fields %} 104 |
105 | {{ field.label_tag }} 106 | {% render_field field class="form-control" %} 107 | {% if field.help_text %} 108 | {{ field.help_text }} 109 | {% endif %} 110 |
111 | {% endfor %} 112 | {% endfor %} 113 | 114 | 115 | 116 | Cancel 117 |
118 |
119 | 120 | 121 | {% load static %} 122 | 123 | 124 | 125 | {% endblock %} 126 | 127 | 128 | 129 | -------------------------------------------------------------------------------- /templates/profile.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 | 5 | 6 | 7 | 8 | 9 | {% load static %} 10 | 11 | 12 | 13 | 69 | 70 | 71 | 85 |



86 |
87 |
88 |
89 | 90 |
91 | 92 | {% if request.user == mainuser %} 93 |
94 |
95 | {% csrf_token %} 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 |
104 |
105 | {% endif %} 106 | 107 |
108 |
109 |
110 |
111 |
112 |

{{ userinfo.displayname }} 113 | {% if request.user == mainuser %} 114 | edit info 115 | {% endif %} 116 |

117 |
{{ userinfo.designation }}
118 |
119 | 120 |
121 |
122 |

32 articles

123 |
124 |
125 | 126 |
127 |
128 |
129 |
130 |
{{ userinfo.description }}
131 |
132 |
133 |
134 |
135 |

{{ userinfo.views }} views

136 |
137 |
138 | 139 |
140 |
141 |
142 |
143 |
144 |
145 |

32 articles

146 |
147 |
148 |

{{ userinfo.views }} views

149 |
150 |
151 |
152 |
153 |
154 | 155 |
156 |
157 |
158 |
159 |
160 |

~ Articles ~

161 |
162 |
163 |
164 |
165 | 166 |
167 |
168 | 169 | {% for post in blogs %} 170 | 181 | 182 | {% endfor %} 183 | 184 |
185 |
186 |
187 | 188 | 189 | 190 | 191 | 192 | 218 | 219 | 220 | 221 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/login.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% load widget_tweaks %} 4 | 5 | {% block body %} 6 |



7 | 8 | 9 |
10 |
11 |
12 |

Login

13 |
14 |
15 |
16 |
17 |
18 |
19 | {% csrf_token %} 20 | {{ form.non_field_errors }} 21 | 22 | {% for hidden_field in form.hidden_fields %} 23 | {{ hidden_field.errors }} 24 | {{ hidden_field }} 25 | {% endfor %} 26 | 27 | {% for field in form.visible_fields %} 28 |
29 | {{ field.label_tag }} 30 | {% render_field field class="form-control" %} 31 | {% if field.help_text %} 32 | {{ field.help_text }} 33 | {% endif %} 34 |
35 | {% endfor %} 36 |
37 |
38 | 39 | 40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |

Dont Have an account yet?

48 |
49 |
50 |
51 | 52 | 53 | 54 | 55 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/logout.html: -------------------------------------------------------------------------------- 1 |

Sign up

2 |
3 | {% csrf_token %} 4 | {{ form.as_p }} 5 | 6 |
-------------------------------------------------------------------------------- /templates/registration/password_reset_complete.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block body %} 3 |




4 |
5 |
6 |
7 |

8 | Your password has been set. You may go ahead and Sign in now. 9 |

10 |
11 |
12 | 15 |
16 |
17 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/password_reset_confirm.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% load widget_tweaks %} 4 | 5 | {% block body %} 6 |



7 | 8 | {% if validlink %} 9 |
10 |
11 |
12 |

Change password



13 |
14 |
15 |
16 |
17 |
18 | {% csrf_token %} 19 | {{ form.non_field_errors }} 20 | 21 | {% for hidden_field in form.hidden_fields %} 22 | {{ hidden_field.errors }} 23 | {{ hidden_field }} 24 | {% endfor %} 25 | 26 | {% for field in form.visible_fields %} 27 |
28 | {% if field.help_text %} 29 | {% autoescape off %}{{ field.help_text }}{% endautoescape %} 30 | {% endif %} 31 | 32 | {{ field.label_tag }} 33 | {% render_field field class="form-control" %} 34 |
35 | {% endfor %} 36 |
37 |
38 |
39 |
40 |
41 | {% else %} 42 |

43 | The password reset link was invalid, possibly because it has already been used. 44 | Please request a new password reset. 45 |

46 | {% endif %} 47 | 48 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/password_reset_done.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 |



5 | 6 |
7 |
8 |
9 |

10 | We've emailed you instructions for setting your password, if an account exists with the email you entered. 11 | You should receive them shortly. 12 |


13 |

14 | If you don't receive an email, please make sure you've entered the address you registered with, 15 | and check your spam folder. 16 |

17 |
18 |
19 |
20 |
21 | Thanks! 22 |
23 |
24 |
25 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/password_reset_email.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | 3 | {% block body %} 4 |



5 | 6 | {% autoescape off %} 7 | To initiate the password reset process for your {{ user.get_username }} TestSite Account, 8 | click the link below: 9 | 10 | {{ protocol }}://{{ domain }}{% url 'password_reset_confirm' uidb64=uid token=token %} 11 | 12 | If clicking the link above doesn't work, please copy and paste the URL in a new browser 13 | window instead. 14 | 15 | Sincerely, 16 | The TestSite Team 17 | {% endautoescape %} 18 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/password_reset_form.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% load widget_tweaks %} 3 | 4 | 5 | {% block body %} 6 |



7 | 8 |
9 |
10 |
11 |

Forgot password

12 |
13 |
14 |
15 |
16 |
17 |
18 | {% csrf_token %} 19 | 20 | {% for field in form.visible_fields %} 21 |
22 | 23 | 24 | 25 |
26 | {% endfor %} 27 |
28 | {% if field.help_text %} 29 | {{ field.help_text }} 30 | {% endif %} 31 | {{ form.non_field_errors }} 32 | 33 | {% for hidden_field in form.hidden_fields %} 34 | {{ hidden_field.errors }} 35 | {{ hidden_field }} 36 | {% endfor %} 37 | 38 |
39 |
40 |
41 | {% endblock %} -------------------------------------------------------------------------------- /templates/registration/password_reset_subject.txt: -------------------------------------------------------------------------------- 1 | Pswrd resert email -------------------------------------------------------------------------------- /templates/search.html: -------------------------------------------------------------------------------- 1 | {% extends 'base.html' %} 2 | {% block body %} 3 | 4 | 28 | 29 |



30 |
31 |
32 | <-   GO BACK 33 |
34 |
35 | 36 |
37 |
38 |

{{err}}

39 |
40 |
41 | 42 |
43 | {% for res in results1 %} 44 |
45 |
46 |
47 |
48 |

{{res.title}}

49 | blog 50 |
51 |
52 |
53 | {% endfor %} 54 |
55 | 56 |
57 | {% for ress in results2 %} 58 |
59 | 60 |
61 |
62 |
63 |

{{ress.displayname}}

64 | user 65 |
66 |
67 |
68 | {% endfor %} 69 |
70 | 71 | 72 | 73 | 74 | 75 | 79 | 80 | 81 | {% endblock %} 82 | -------------------------------------------------------------------------------- /templates/signup.html: -------------------------------------------------------------------------------- 1 |

Sign up

2 |
3 | {% csrf_token %} 4 | {{ form.as_p }} 5 | 6 |
-------------------------------------------------------------------------------- /templates/tuesday/comment.html: -------------------------------------------------------------------------------- 1 |
2 | 3 |
  • {{ comment.author }} 4 | - 5 | {{ comment.message |safe }} - {% if comment.parent %} -My id -{{comment.id}}{% else %}None{% endif %} 6 |
    7 |
    8 | {% csrf_token %} 9 | 10 | 11 | 12 | 13 | 14 |
    15 |
  • 16 | 17 | {% if comment.replies %} 18 | {% for comment in comment.replies.all %} 19 |
    {% include 'tuesday/comment.html' %}
    20 | {% endfor %} 21 | {% endif %} 22 |
    23 | 24 | 25 | -------------------------------------------------------------------------------- /templates/tuesday/tuesday.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |

    tuesday

    4 |
    5 | Login/ Homepage 6 |

    7 |

    add new comment

    8 |
    9 | {% csrf_token %} 10 | 11 | 12 | 13 |



    14 |
    15 |
      16 | {% for comment in data %} 17 | {% include 'tuesday/comment.html' %} 18 |
      19 | {% endfor %} 20 |
    21 |
    22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /templates/userimage.html: -------------------------------------------------------------------------------- 1 | {% extends 'basecrop.html' %} 2 | 3 | {% block javascript %} 4 | 60 | {% endblock %} 61 | 62 | {% block content %} 63 |

    Album

    64 | 65 | 66 |
    67 | {% csrf_token %} 68 | {{ form.as_p }} 69 | 70 |
    71 | 72 | 73 | 99 | 100 | 101 | 102 | {% endblock %} 103 | -------------------------------------------------------------------------------- /trynewblog/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/trynewblog/__init__.py -------------------------------------------------------------------------------- /trynewblog/__pycache__/__init__.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/trynewblog/__pycache__/__init__.cpython-36.pyc -------------------------------------------------------------------------------- /trynewblog/__pycache__/settings.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/trynewblog/__pycache__/settings.cpython-36.pyc -------------------------------------------------------------------------------- /trynewblog/__pycache__/urls.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/trynewblog/__pycache__/urls.cpython-36.pyc -------------------------------------------------------------------------------- /trynewblog/__pycache__/wsgi.cpython-36.pyc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mohit23x/BlogVlog/7abbd158f009ad855e98227da3a33bd66e57e30d/trynewblog/__pycache__/wsgi.cpython-36.pyc -------------------------------------------------------------------------------- /trynewblog/settings.py: -------------------------------------------------------------------------------- 1 | """ 2 | Django settings for trynewblog project. 3 | 4 | Generated by 'django-admin startproject' using Django 2.0.3. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.0/topics/settings/ 8 | 9 | For the full list of settings and their values, see 10 | https://docs.djangoproject.com/en/2.0/ref/settings/ 11 | """ 12 | 13 | import os 14 | 15 | # Build paths inside the project like this: os.path.join(BASE_DIR, ...) 16 | BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) 17 | 18 | 19 | # Quick-start development settings - unsuitable for production 20 | # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/ 21 | 22 | # SECURITY WARNING: keep the secret key used in production secret! 23 | SECRET_KEY = '%40gva!$-v$jg7rho53x=4rasrkjz%y1pclh#lp9m_xzm7i&57' 24 | 25 | # SECURITY WARNING: don't run with debug turned on in production! 26 | DEBUG = True 27 | 28 | ALLOWED_HOSTS = [] 29 | 30 | 31 | # Application definition 32 | 33 | INSTALLED_APPS = [ 34 | 'django.contrib.admin', 35 | 'django.contrib.auth', 36 | 'django.contrib.contenttypes', 37 | 'django.contrib.sessions', 38 | 'django.contrib.messages', 39 | 'django.contrib.staticfiles', 40 | 'blog', 41 | 'accounts', 42 | 'widget_tweaks' 43 | ] 44 | 45 | MIDDLEWARE = [ 46 | 'django.middleware.security.SecurityMiddleware', 47 | 'django.contrib.sessions.middleware.SessionMiddleware', 48 | 'django.middleware.common.CommonMiddleware', 49 | 'django.middleware.csrf.CsrfViewMiddleware', 50 | 'django.contrib.auth.middleware.AuthenticationMiddleware', 51 | 'django.contrib.messages.middleware.MessageMiddleware', 52 | 'django.middleware.clickjacking.XFrameOptionsMiddleware', 53 | ] 54 | 55 | ROOT_URLCONF = 'trynewblog.urls' 56 | 57 | TEMPLATES = [ 58 | { 59 | 'BACKEND': 'django.template.backends.django.DjangoTemplates', 60 | 'DIRS': [os.path.join(BASE_DIR, 'templates')], 61 | 'APP_DIRS': True, 62 | 'OPTIONS': { 63 | 'context_processors': [ 64 | 'django.template.context_processors.debug', 65 | 'django.template.context_processors.request', 66 | 'django.contrib.auth.context_processors.auth', 67 | 'django.contrib.messages.context_processors.messages', 68 | ], 69 | }, 70 | }, 71 | ] 72 | 73 | WSGI_APPLICATION = 'trynewblog.wsgi.application' 74 | 75 | 76 | # Database 77 | # https://docs.djangoproject.com/en/2.0/ref/settings/#databases 78 | 79 | DATABASES = { 80 | 'default': { 81 | 'ENGINE': 'django.db.backends.sqlite3', 82 | 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 83 | } 84 | } 85 | 86 | 87 | # Password validation 88 | # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators 89 | 90 | AUTH_PASSWORD_VALIDATORS = [ 91 | { 92 | 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', 93 | }, 94 | { 95 | 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', 96 | }, 97 | { 98 | 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', 99 | }, 100 | { 101 | 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', 102 | }, 103 | ] 104 | 105 | 106 | # Internationalization 107 | # https://docs.djangoproject.com/en/2.0/topics/i18n/ 108 | 109 | LANGUAGE_CODE = 'en-us' 110 | 111 | TIME_ZONE = 'UTC' 112 | 113 | USE_I18N = True 114 | 115 | USE_L10N = True 116 | 117 | USE_TZ = True 118 | 119 | 120 | # Static files (CSS, JavaScript, Images) 121 | # https://docs.djangoproject.com/en/2.0/howto/static-files/ 122 | 123 | STATIC_URL = '/static/' 124 | 125 | LOGIN_REDIRECT_URL = 'homepage' 126 | LOGOUT_REDIRECT_URL = 'homepage' 127 | 128 | EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 129 | 130 | MEDIA_URL = '/media/' 131 | MEDIA_ROOT = os.path.join(BASE_DIR, 'media') -------------------------------------------------------------------------------- /trynewblog/urls.py: -------------------------------------------------------------------------------- 1 | 2 | from django.contrib import admin 3 | from django.urls import path, include 4 | from django.conf import settings 5 | from django.conf.urls.static import static 6 | from django.conf import settings 7 | from django.conf.urls.static import static 8 | 9 | urlpatterns = [ 10 | path('', include('blog.urls')), 11 | path('admin/', admin.site.urls), 12 | ] 13 | 14 | urlpatterns += static(settings.STATIC_URL, document_root = settings.STATIC_ROOT) 15 | 16 | if settings.DEBUG: 17 | urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) 18 | -------------------------------------------------------------------------------- /trynewblog/wsgi.py: -------------------------------------------------------------------------------- 1 | """ 2 | WSGI config for trynewblog project. 3 | 4 | It exposes the WSGI callable as a module-level variable named ``application``. 5 | 6 | For more information on this file, see 7 | https://docs.djangoproject.com/en/2.0/howto/deployment/wsgi/ 8 | """ 9 | 10 | import os 11 | 12 | from django.core.wsgi import get_wsgi_application 13 | 14 | os.environ.setdefault("DJANGO_SETTINGS_MODULE", "trynewblog.settings") 15 | 16 | application = get_wsgi_application() 17 | --------------------------------------------------------------------------------