summaryrefslogtreecommitdiff
path: root/arduino_blog
diff options
context:
space:
mode:
Diffstat (limited to 'arduino_blog')
-rw-r--r--arduino_blog/__init__.py0
-rw-r--r--arduino_blog/admin.py3
-rw-r--r--arduino_blog/apps.py5
-rw-r--r--arduino_blog/decorators.py26
-rw-r--r--arduino_blog/forms.py267
-rw-r--r--arduino_blog/migrations/0001_initial.py61
-rw-r--r--arduino_blog/migrations/__init__.py0
-rw-r--r--arduino_blog/models.py123
-rw-r--r--arduino_blog/send_emails.py60
l---------arduino_blog/static/admin/css/autocomplete.css1
l---------arduino_blog/static/admin/css/base.css1
l---------arduino_blog/static/admin/css/changelists.css1
l---------arduino_blog/static/admin/css/dashboard.css1
l---------arduino_blog/static/admin/css/fonts.css1
l---------arduino_blog/static/admin/css/forms.css1
l---------arduino_blog/static/admin/css/login.css1
l---------arduino_blog/static/admin/css/responsive.css1
l---------arduino_blog/static/admin/css/responsive_rtl.css1
l---------arduino_blog/static/admin/css/rtl.css1
l---------arduino_blog/static/admin/css/vendor/select2/LICENSE-SELECT2.md1
l---------arduino_blog/static/admin/css/vendor/select2/select2.css1
l---------arduino_blog/static/admin/css/vendor/select2/select2.min.css1
l---------arduino_blog/static/admin/css/widgets.css1
l---------arduino_blog/static/admin/fonts/LICENSE.txt1
l---------arduino_blog/static/admin/fonts/README.txt1
l---------arduino_blog/static/admin/fonts/Roboto-Bold-webfont.woff1
l---------arduino_blog/static/admin/fonts/Roboto-Light-webfont.woff1
l---------arduino_blog/static/admin/fonts/Roboto-Regular-webfont.woff1
l---------arduino_blog/static/admin/img/LICENSE1
l---------arduino_blog/static/admin/img/README.txt1
l---------arduino_blog/static/admin/img/calendar-icons.svg1
l---------arduino_blog/static/admin/img/gis/move_vertex_off.svg1
l---------arduino_blog/static/admin/img/gis/move_vertex_on.svg1
l---------arduino_blog/static/admin/img/icon-addlink.svg1
l---------arduino_blog/static/admin/img/icon-alert.svg1
l---------arduino_blog/static/admin/img/icon-calendar.svg1
l---------arduino_blog/static/admin/img/icon-changelink.svg1
l---------arduino_blog/static/admin/img/icon-clock.svg1
l---------arduino_blog/static/admin/img/icon-deletelink.svg1
l---------arduino_blog/static/admin/img/icon-no.svg1
l---------arduino_blog/static/admin/img/icon-unknown-alt.svg1
l---------arduino_blog/static/admin/img/icon-unknown.svg1
l---------arduino_blog/static/admin/img/icon-viewlink.svg1
l---------arduino_blog/static/admin/img/icon-yes.svg1
l---------arduino_blog/static/admin/img/inline-delete.svg1
l---------arduino_blog/static/admin/img/search.svg1
l---------arduino_blog/static/admin/img/selector-icons.svg1
l---------arduino_blog/static/admin/img/sorting-icons.svg1
l---------arduino_blog/static/admin/img/tooltag-add.svg1
l---------arduino_blog/static/admin/img/tooltag-arrowright.svg1
l---------arduino_blog/static/admin/js/SelectBox.js1
l---------arduino_blog/static/admin/js/SelectFilter2.js1
l---------arduino_blog/static/admin/js/actions.js1
l---------arduino_blog/static/admin/js/actions.min.js1
l---------arduino_blog/static/admin/js/admin/DateTimeShortcuts.js1
l---------arduino_blog/static/admin/js/admin/RelatedObjectLookups.js1
l---------arduino_blog/static/admin/js/autocomplete.js1
l---------arduino_blog/static/admin/js/calendar.js1
l---------arduino_blog/static/admin/js/cancel.js1
l---------arduino_blog/static/admin/js/change_form.js1
l---------arduino_blog/static/admin/js/collapse.js1
l---------arduino_blog/static/admin/js/collapse.min.js1
l---------arduino_blog/static/admin/js/core.js1
l---------arduino_blog/static/admin/js/inlines.js1
l---------arduino_blog/static/admin/js/inlines.min.js1
l---------arduino_blog/static/admin/js/jquery.init.js1
l---------arduino_blog/static/admin/js/popup_response.js1
l---------arduino_blog/static/admin/js/prepopulate.js1
l---------arduino_blog/static/admin/js/prepopulate.min.js1
l---------arduino_blog/static/admin/js/prepopulate_init.js1
l---------arduino_blog/static/admin/js/timeparse.js1
l---------arduino_blog/static/admin/js/urlify.js1
l---------arduino_blog/static/admin/js/vendor/jquery/LICENSE.txt1
l---------arduino_blog/static/admin/js/vendor/jquery/jquery.js1
l---------arduino_blog/static/admin/js/vendor/jquery/jquery.min.js1
l---------arduino_blog/static/admin/js/vendor/select2/LICENSE.md1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ar.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/az.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/bg.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ca.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/cs.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/da.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/de.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/el.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/en.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/es.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/et.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/eu.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/fa.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/fi.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/fr.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/gl.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/he.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/hi.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/hr.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/hu.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/id.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/is.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/it.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ja.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/km.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ko.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/lt.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/lv.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/mk.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ms.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/nb.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/nl.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/pl.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/pt-BR.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/pt.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ro.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/ru.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/sk.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/sr-Cyrl.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/sr.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/sv.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/th.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/tr.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/uk.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/vi.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/zh-CN.js1
l---------arduino_blog/static/admin/js/vendor/select2/i18n/zh-TW.js1
l---------arduino_blog/static/admin/js/vendor/select2/select2.full.js1
l---------arduino_blog/static/admin/js/vendor/select2/select2.full.min.js1
l---------arduino_blog/static/admin/js/vendor/xregexp/LICENSE.txt1
l---------arduino_blog/static/admin/js/vendor/xregexp/xregexp.js1
l---------arduino_blog/static/admin/js/vendor/xregexp/xregexp.min.js1
-rw-r--r--arduino_blog/templates/activation-status.html64
-rw-r--r--arduino_blog/templates/base.html11
-rw-r--r--arduino_blog/templates/footer.html103
-rw-r--r--arduino_blog/templates/header.html45
-rw-r--r--arduino_blog/templates/home.html171
-rw-r--r--arduino_blog/templates/index.html5
-rw-r--r--arduino_blog/templates/login.html44
-rw-r--r--arduino_blog/templates/navbar.html51
-rw-r--r--arduino_blog/templates/submit-cfp.html72
-rw-r--r--arduino_blog/templates/user-register.html198
-rw-r--r--arduino_blog/tests.py3
-rw-r--r--arduino_blog/urls.py17
-rw-r--r--arduino_blog/views.py214
141 files changed, 1662 insertions, 0 deletions
diff --git a/arduino_blog/__init__.py b/arduino_blog/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/arduino_blog/__init__.py
diff --git a/arduino_blog/admin.py b/arduino_blog/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/arduino_blog/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/arduino_blog/apps.py b/arduino_blog/apps.py
new file mode 100644
index 0000000..08a2a82
--- /dev/null
+++ b/arduino_blog/apps.py
@@ -0,0 +1,5 @@
+from django.apps import AppConfig
+
+
+class ArduinoBlogConfig(AppConfig):
+ name = 'arduino_blog'
diff --git a/arduino_blog/decorators.py b/arduino_blog/decorators.py
new file mode 100644
index 0000000..ddb888c
--- /dev/null
+++ b/arduino_blog/decorators.py
@@ -0,0 +1,26 @@
+from django.shortcuts import render, redirect
+from django.conf import settings
+
+def email_verified(func):
+ """
+ This decorator is used to check if email is verified.
+ If email is not verified then redirect user for email
+ verification.
+ """
+
+ def is_email_verified(request, *args, **kwargs):
+ user = request.user
+ context = {}
+ try:
+ if user.is_authenticated:
+ if not user.profile.is_email_verified:
+ context['success'] = False
+ context['msg'] = "Your account is not verified. \
+ Please verify your account"
+ return render(
+ request, 'activation-status.html', context
+ )
+ return func(request, *args, **kwargs)
+ except:
+ return redirect('/')
+ return is_email_verified
diff --git a/arduino_blog/forms.py b/arduino_blog/forms.py
new file mode 100644
index 0000000..ee8b6b1
--- /dev/null
+++ b/arduino_blog/forms.py
@@ -0,0 +1,267 @@
+from django import forms
+
+from django.forms import ModelForm, widgets
+
+from django.contrib.auth.forms import UserCreationForm
+from django.contrib.auth.models import User
+from django.core.validators import MinLengthValidator, MinValueValidator, \
+ RegexValidator, URLValidator
+from captcha.fields import ReCaptchaField
+from string import punctuation, digits
+try:
+ from string import letters
+except ImportError:
+ from string import ascii_letters as letters
+
+#from arduino_blog.models import Proposal
+#from arduino_blog.send_mails import generate_activation_key
+from django.contrib.auth.models import User
+from django.contrib.auth import authenticate
+from django.utils import timezone
+from arduino_blog.models import (
+ Profile, User, Proposal
+)
+from .send_emails import (send_user_mail,
+ generate_activation_key)
+
+UNAME_CHARS = letters + "._" + digits
+PWD_CHARS = letters + punctuation + digits
+MY_CHOICES = (
+ ('Beginner', 'Beginner'),
+ ('Advanced', 'Advanced'),
+)
+
+ws_duration = (
+ ('2', '2'),
+ ('3', '3'),
+)
+abs_duration = (
+ ('15', '15'),
+)
+
+
+MY_CHOICES = (
+ ('Beginner', 'Beginner'),
+ ('Advanced', 'Advanced'),
+)
+rating = (
+ ('1', '1'),
+ ('2', '2'),
+ ('3', '3'),
+ ('4', '4'),
+ ('5', '5'),
+ ('6', '6'),
+ ('7', '7'),
+ ('8', '8'),
+ ('9', '9'),
+ ('10', '10'),
+)
+
+CHOICES = [('1', 'Yes'),
+ ('0', 'No')]
+
+position_choices = (
+ ("student", "Student"),
+ ("faculty", "Faculty")
+)
+
+source = (
+ ("FOSSEE website", "FOSSEE website"),
+ ("Google", "Google"),
+ ("Social Media", "Social Media"),
+ ("NMEICT Blended Workshop", "NMEICT Blended Workshop"),
+ ("From other College", "From other College"),
+)
+
+title = (
+ ("Mr", "Mr."),
+ ("Miss", "Ms."),
+ ("Professor", "Prof."),
+ ("Doctor", "Dr."),
+)
+states = (
+ ("IN-AP", "Andhra Pradesh"),
+ ("IN-AR", "Arunachal Pradesh"),
+ ("IN-AS", "Assam"),
+ ("IN-BR", "Bihar"),
+ ("IN-CT", "Chhattisgarh"),
+ ("IN-GA", "Goa"),
+ ("IN-GJ", "Gujarat"),
+ ("IN-HR", "Haryana"),
+ ("IN-HP", "Himachal Pradesh"),
+ ("IN-JK", "Jammu and Kashmir"),
+ ("IN-JH", "Jharkhand"),
+ ("IN-KA", "Karnataka"),
+ ("IN-KL", "Kerala"),
+ ("IN-MP", "Madhya Pradesh"),
+ ("IN-MH", "Maharashtra"),
+ ("IN-MN", "Manipur"),
+ ("IN-ML", "Meghalaya"),
+ ("IN-MZ", "Mizoram"),
+ ("IN-NL", "Nagaland"),
+ ("IN-OR", "Odisha"),
+ ("IN-PB", "Punjab"),
+ ("IN-RJ", "Rajasthan"),
+ ("IN-SK", "Sikkim"),
+ ("IN-TN", "Tamil Nadu"),
+ ("IN-TG", "Telangana"),
+ ("IN-TR", "Tripura"),
+ ("IN-UT", "Uttarakhand"),
+ ("IN-UP", "Uttar Pradesh"),
+ ("IN-WB", "West Bengal"),
+ ("IN-AN", "Andaman and Nicobar Islands"),
+ ("IN-CH", "Chandigarh"),
+ ("IN-DN", "Dadra and Nagar Haveli"),
+ ("IN-DD", "Daman and Diu"),
+ ("IN-DL", "Delhi"),
+ ("IN-LD", "Lakshadweep"),
+ ("IN-PY", "Puducherry")
+)
+
+
+class UserRegistrationForm(forms.Form):
+ """A Class to create new form for User's Registration.
+ It has the various fields and functions required to register
+ a new user to the system"""
+ required_css_class = 'required'
+ errorlist_css_class = 'errorlist'
+ username = forms.CharField(widget=forms.TextInput(attrs={'placeholder': 'Username'}), max_length=32, help_text='''Letters, digits,
+ period and underscore only.''',)
+ email = forms.EmailField(widget=forms.TextInput(
+ attrs={'placeholder': 'Enter valid email id'}))
+ password = forms.CharField(max_length=32, widget=forms.PasswordInput())
+ confirm_password = forms.CharField(max_length=32, widget=forms.PasswordInput())
+ title = forms.ChoiceField(choices=title)
+ first_name = forms.CharField(max_length=32, label='First name', widget=forms.TextInput(
+ attrs={'placeholder': 'First name'}))
+ last_name = forms.CharField(max_length=32, label='Last name', widget=forms.TextInput(
+ attrs={'placeholder': 'Last name'},))
+ phone = forms.CharField(widget=forms.TextInput(attrs={'maxlength': '10', 'type': 'number'}))
+ institute = forms.CharField(max_length=32,
+ label='Institute/Organization/Company', widget=forms.TextInput())
+ position = forms.ChoiceField(choices = position_choices)
+ # department = forms.ChoiceField(help_text='Department you work/study',
+ # choices=department_choices)
+ state = forms.ChoiceField(choices=states)
+ city = forms.CharField(max_length=255, help_text="Enter the city")
+ pincode = forms.CharField(max_length=6, help_text="Enter the pincode")
+ how_did_you_hear_about_us = forms.ChoiceField(
+ choices=source, label='How did you hear about us?')
+
+ def clean_username(self):
+ u_name = self.cleaned_data["username"]
+ if u_name.strip(UNAME_CHARS):
+ msg = "Only letters, digits, period are"\
+ " allowed in username"
+ raise forms.ValidationError(msg)
+ try:
+ User.objects.get(username__exact=u_name)
+ raise forms.ValidationError("Username already exists.")
+ except User.DoesNotExist:
+ return u_name
+
+ def clean_password(self):
+ pwd = self.cleaned_data['password']
+ if pwd.strip(PWD_CHARS):
+ raise forms.ValidationError("Only letters, digits and punctuation\
+ are allowed in password")
+ return pwd
+
+ def clean_confirm_password(self):
+ c_pwd = self.cleaned_data['confirm_password']
+ pwd = self.data['password']
+ if c_pwd != pwd:
+ raise forms.ValidationError("Passwords do not match")
+
+ return c_pwd
+
+ def clean_email(self):
+ user_email = self.cleaned_data['email']
+ if User.objects.filter(email=user_email).exists():
+ raise forms.ValidationError("This email already exists")
+ return user_email
+
+ def save(self):
+ u_name = self.cleaned_data["username"]
+ u_name = u_name.lower()
+ pwd = self.cleaned_data["password"]
+ email = self.cleaned_data["email"]
+ new_user = User.objects.create_user(u_name, email, pwd)
+ new_user.first_name = self.cleaned_data["first_name"]
+ new_user.last_name = self.cleaned_data["last_name"]
+ new_user.save()
+
+ cleaned_data = self.cleaned_data
+ new_profile = Profile(user=new_user)
+ new_profile.institute = cleaned_data["institute"]
+ new_profile.position = cleaned_data["position"]
+ new_profile.pincode = cleaned_data["pincode"]
+ new_profile.phone = cleaned_data["phone"]
+ new_profile.city = cleaned_data["city"]
+ new_profile.title = cleaned_data["title"]
+ new_profile.state = cleaned_data["state"]
+ new_profile.how_did_you_hear_about_us = cleaned_data["how_did_you_hear_about_us"]
+ new_profile.activation_key = generate_activation_key(
+ new_user.username)
+ new_profile.key_expiry_time = timezone.now() + timezone.timedelta(
+ minutes=60)
+ new_profile.save()
+ return u_name, pwd, new_user.email, new_profile.activation_key
+
+class UserLoginForm(forms.Form):
+ username = forms.CharField(
+ widget=forms.TextInput(
+ attrs={'class': 'form-inline', 'placeholder': 'Username'}),
+ label='User Name'
+ )
+ password = forms.CharField(
+ widget=forms.PasswordInput(
+ attrs={'class': 'form-inline', 'placeholder': 'Password'}),
+ label='Password'
+ )
+
+class AbstractProposalForm(forms.ModelForm):
+ # name_of_author = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Enter the name of first author'}),
+ # required=True,
+ # error_messages={
+ # 'required': 'Name of Author field required.'},
+ # )
+ about_the_author = forms.CharField(widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'About Me'}),
+ required=True,
+ error_messages={
+ 'required': 'About the author field required.'},
+ )
+ attachment = forms.FileField(widget=forms.ClearableFileInput(attrs={'multiple': True}),
+ label='Please upload relevant documents (if any)',
+ required=False,)
+ title_of_the_project = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Title of the Project'}),
+ required=True,
+ error_messages={
+ 'required': 'Title field required.'},
+ )
+ abstract = forms.CharField(min_length=300, widget=forms.Textarea(attrs={'class': 'form-control', 'placeholder': 'Abstract', 'onkeyup': 'countChar(this)'}),
+ required=True,
+ label='Abstract (Min. 300 char.)',
+ error_messages={
+ 'required': 'Abstract field required.'},
+ )
+ terms_and_conditions = forms.BooleanField(widget=forms.CheckboxInput(),
+ required=True, label='I agree to the terms and conditions')
+
+ class Meta:
+ model = Proposal
+ exclude = ('user','name_of_author', 'email', 'status', 'rate')
+
+ def clean_attachment(self):
+ import os
+ cleaned_data = self.cleaned_data
+ attachment = cleaned_data.get('attachment', None)
+ if attachment:
+ ext = os.path.splitext(attachment.name)[1]
+ valid_extensions = ['.pdf']
+ if not ext in valid_extensions:
+ raise forms.ValidationError(
+ u'File not supported! Only .pdf file is accepted')
+ if attachment.size > (5*1024*1024):
+ raise forms.ValidationError('File size exceeds 5MB')
+ return attachment
diff --git a/arduino_blog/migrations/0001_initial.py b/arduino_blog/migrations/0001_initial.py
new file mode 100644
index 0000000..dc883f3
--- /dev/null
+++ b/arduino_blog/migrations/0001_initial.py
@@ -0,0 +1,61 @@
+# Generated by Django 2.1 on 2020-02-20 07:10
+
+import arduino_blog.models
+from django.conf import settings
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ initial = True
+
+ dependencies = [
+ migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='Profile',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_modified', models.DateTimeField(auto_now=True)),
+ ('title', models.CharField(blank=True, choices=[('Mr', 'Mr.'), ('Miss', 'Ms.'), ('Professor', 'Prof.'), ('Doctor', 'Dr.')], max_length=32)),
+ ('institute', models.CharField(max_length=150)),
+ ('phone', models.CharField(max_length=10)),
+ ('position', models.CharField(choices=[('student', 'Student'), ('faculty', 'Faculty')], max_length=32)),
+ ('how_did_you_hear_about_us', models.CharField(blank=True, choices=[('Poster', 'Poster'), ('FOSSEE website', 'FOSSEE website'), ('Google', 'Google'), ('Social Media', 'Social Media'), ('NMEICT Blended Workshop', 'NMEICT Blended Workshop'), ('From other College', 'From other College')], max_length=255)),
+ ('state', models.CharField(blank=True, choices=[('IN-AP', 'Andhra Pradesh'), ('IN-AR', 'Arunachal Pradesh'), ('IN-AS', 'Assam'), ('IN-BR', 'Bihar'), ('IN-CT', 'Chhattisgarh'), ('IN-GA', 'Goa'), ('IN-GJ', 'Gujarat'), ('IN-HR', 'Haryana'), ('IN-HP', 'Himachal Pradesh'), ('IN-JK', 'Jammu and Kashmir'), ('IN-JH', 'Jharkhand'), ('IN-KA', 'Karnataka'), ('IN-KL', 'Kerala'), ('IN-MP', 'Madhya Pradesh'), ('IN-MH', 'Maharashtra'), ('IN-MN', 'Manipur'), ('IN-ML', 'Meghalaya'), ('IN-MZ', 'Mizoram'), ('IN-NL', 'Nagaland'), ('IN-OR', 'Odisha'), ('IN-PB', 'Punjab'), ('IN-RJ', 'Rajasthan'), ('IN-SK', 'Sikkim'), ('IN-TN', 'Tamil Nadu'), ('IN-TG', 'Telangana'), ('IN-TR', 'Tripura'), ('IN-UT', 'Uttarakhand'), ('IN-UP', 'Uttar Pradesh'), ('IN-WB', 'West Bengal'), ('IN-AN', 'Andaman and Nicobar Islands'), ('IN-CH', 'Chandigarh'), ('IN-DN', 'Dadra and Nagar Haveli'), ('IN-DD', 'Daman and Diu'), ('IN-DL', 'Delhi'), ('IN-LD', 'Lakshadweep'), ('IN-PY', 'Puducherry')], max_length=50)),
+ ('city', models.CharField(blank=True, max_length=50)),
+ ('pincode', models.CharField(blank=True, max_length=6)),
+ ('is_email_verified', models.BooleanField(default=False)),
+ ('activation_key', models.CharField(blank=True, max_length=255, null=True)),
+ ('key_expiry_time', models.DateTimeField(blank=True, null=True)),
+ ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ ),
+ migrations.CreateModel(
+ name='Proposal',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('date_created', models.DateTimeField(auto_now_add=True)),
+ ('date_modified', models.DateTimeField(auto_now=True)),
+ ('name_of_author', models.CharField(default='None', max_length=200)),
+ ('about_the_author', models.TextField(max_length=500)),
+ ('email', models.CharField(max_length=128)),
+ ('title_of_the_project', models.CharField(max_length=250)),
+ ('abstract', models.TextField(max_length=700)),
+ ('attachment', models.FileField(upload_to=arduino_blog.models.get_document_dir)),
+ ('status', models.CharField(default='Pending', max_length=100)),
+ ('terms_and_conditions', models.BooleanField(default='True')),
+ ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
+ ],
+ options={
+ 'abstract': False,
+ },
+ ),
+ ]
diff --git a/arduino_blog/migrations/__init__.py b/arduino_blog/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/arduino_blog/migrations/__init__.py
diff --git a/arduino_blog/models.py b/arduino_blog/models.py
new file mode 100644
index 0000000..4d2f36d
--- /dev/null
+++ b/arduino_blog/models.py
@@ -0,0 +1,123 @@
+from django.db import models
+from django.contrib.auth.models import User
+from social.apps.django_app.default.models import UserSocialAuth
+from django.core.validators import RegexValidator
+import os
+from datetime import datetime
+from arduino_projects_website import settings
+
+position_choices = (
+ ("student", "Student"),
+ ("faculty", "Faculty")
+)
+
+gender = (
+ ('Male', 'Male'),
+ ('Female', 'Female'),
+ ('Other', 'Other'),
+)
+
+source = (
+ ("Poster", "Poster"),
+ ("FOSSEE website", "FOSSEE website"),
+ ("Google", "Google"),
+ ("Social Media", "Social Media"),
+ ("NMEICT Blended Workshop", "NMEICT Blended Workshop"),
+ ("From other College", "From other College"),
+)
+
+title = (
+ ("Mr", "Mr."),
+ ("Miss", "Ms."),
+ ("Professor", "Prof."),
+ ("Doctor", "Dr."),
+)
+states = (
+ ("IN-AP", "Andhra Pradesh"),
+ ("IN-AR", "Arunachal Pradesh"),
+ ("IN-AS", "Assam"),
+ ("IN-BR", "Bihar"),
+ ("IN-CT", "Chhattisgarh"),
+ ("IN-GA", "Goa"),
+ ("IN-GJ", "Gujarat"),
+ ("IN-HR", "Haryana"),
+ ("IN-HP", "Himachal Pradesh"),
+ ("IN-JK", "Jammu and Kashmir"),
+ ("IN-JH", "Jharkhand"),
+ ("IN-KA", "Karnataka"),
+ ("IN-KL", "Kerala"),
+ ("IN-MP", "Madhya Pradesh"),
+ ("IN-MH", "Maharashtra"),
+ ("IN-MN", "Manipur"),
+ ("IN-ML", "Meghalaya"),
+ ("IN-MZ", "Mizoram"),
+ ("IN-NL", "Nagaland"),
+ ("IN-OR", "Odisha"),
+ ("IN-PB", "Punjab"),
+ ("IN-RJ", "Rajasthan"),
+ ("IN-SK", "Sikkim"),
+ ("IN-TN", "Tamil Nadu"),
+ ("IN-TG", "Telangana"),
+ ("IN-TR", "Tripura"),
+ ("IN-UT", "Uttarakhand"),
+ ("IN-UP", "Uttar Pradesh"),
+ ("IN-WB", "West Bengal"),
+ ("IN-AN", "Andaman and Nicobar Islands"),
+ ("IN-CH", "Chandigarh"),
+ ("IN-DN", "Dadra and Nagar Haveli"),
+ ("IN-DD", "Daman and Diu"),
+ ("IN-DL", "Delhi"),
+ ("IN-LD", "Lakshadweep"),
+ ("IN-PY", "Puducherry")
+)
+
+
+""" Base class created to collect creation date and modified date. Can be inherited in the other models """
+class BaseClass(models.Model):
+ date_created = models.DateTimeField(auto_now_add=True)
+ date_modified = models.DateTimeField(auto_now=True)
+
+ class Meta:
+ abstract = True
+
+class Profile(BaseClass):
+ """Profile for users"""
+ user = models.OneToOneField(User, on_delete=models.CASCADE)
+ title = models.CharField(max_length=32, blank=True, choices=title)
+ institute = models.CharField(max_length=150)
+ phone = models.CharField(max_length=10)
+ position = models.CharField(max_length=32, choices=position_choices)
+ how_did_you_hear_about_us = models.CharField(
+ max_length=255, blank=True, choices=source)
+ state = models.CharField(max_length=50, choices = states, blank=True)
+ city = models.CharField(max_length=50, blank= True)
+ pincode = models.CharField(max_length=6, blank =True)
+ is_email_verified = models.BooleanField(default=False)
+ activation_key = models.CharField(max_length=255, blank=True, null=True)
+ key_expiry_time = models.DateTimeField(blank=True, null=True)
+
+ def __str__(self):
+ return u"id: {0}| {1} {2} | {3} ".format(
+ self.user.id,
+ self.user.first_name,
+ self.user.last_name,
+ self.user.email
+ )
+
+def get_document_dir(instance, filename):
+ # ename, eext = instance.user.email.split("@")
+ fname, fext = os.path.splitext(filename)
+ # print "----------------->",instance.user
+ return '%s/attachment/%s/%s.%s' % (instance.user, instance.proposal_type, fname+'_'+str(instance.user), fext)
+
+class Proposal(BaseClass):
+ user = models.ForeignKey(User, on_delete=models.CASCADE,)
+ name_of_author = models.CharField(max_length=200, default='None')
+ about_the_author = models.TextField(max_length=500)
+ email = models.CharField(max_length=128)
+ title_of_the_project = models.CharField(max_length=250)
+ abstract = models.TextField(max_length=700)
+ attachment = models.FileField(upload_to=get_document_dir)
+ status = models.CharField(max_length=100, default='Pending', editable=True)
+ #tags = models.CharField(max_length=250)
+ terms_and_conditions = models.BooleanField(default= 'True') \ No newline at end of file
diff --git a/arduino_blog/send_emails.py b/arduino_blog/send_emails.py
new file mode 100644
index 0000000..59dd824
--- /dev/null
+++ b/arduino_blog/send_emails.py
@@ -0,0 +1,60 @@
+# Local imports
+try:
+ from string import letters
+except ImportError:
+ from string import ascii_letters as letters
+from string import digits, punctuation
+import hashlib
+from textwrap import dedent
+import os
+
+# Django imports
+from django.utils.crypto import get_random_string
+from django.conf import settings
+from django.core.mail import EmailMultiAlternatives, send_mail
+from django.core.files.storage import default_storage
+from django.core.files.base import ContentFile
+
+
+def generate_activation_key(username):
+ """ Generate hashed secret key for email activation """
+ chars = letters + digits + punctuation
+ secret_key = get_random_string(20, chars)
+ return hashlib.sha256((secret_key + username).encode('utf-8')).hexdigest()
+
+
+def send_user_mail(user_mail, key):
+ """ Send mail to user whose email is to be verified
+ This function should get two args i.e user_email and secret_key.
+ The activation url is generated from settings.PRODUCTION_URL and key.
+ """
+ try:
+ to = user_mail
+ subject = 'Arduino - User Registration Confirmation'
+ message = dedent("""\
+ To activate your account and verify your email address,
+ please click the following link:
+ {0}/activate/{1}
+ If clicking the link above does not work,
+ copy and paste the URL in a new browser window instead.
+ For any issue, please write us on {2}
+ Regards,
+ {3}
+ """.format(settings.PRODUCTION_URL, key, settings.REPLY_EMAIL,
+ settings.SENDER_NAME
+ )
+ )
+
+ send_mail(subject, message, settings.SENDER_EMAIL, [to])
+
+ msg = "An activation link is sent to your registered email.\
+ Please activate the link within 60 minutes."
+ success = True
+
+ except Exception as exc_msg:
+ msg = """Error: {0}. Please check your email address.\
+ If email address is correct then
+ Please contact {1}.""".format(exc_msg, settings.REPLY_EMAIL)
+ success = False
+
+ return success, msg \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/autocomplete.css b/arduino_blog/static/admin/css/autocomplete.css
new file mode 120000
index 0000000..c6722a3
--- /dev/null
+++ b/arduino_blog/static/admin/css/autocomplete.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/autocomplete.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/base.css b/arduino_blog/static/admin/css/base.css
new file mode 120000
index 0000000..fcaaecf
--- /dev/null
+++ b/arduino_blog/static/admin/css/base.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/base.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/changelists.css b/arduino_blog/static/admin/css/changelists.css
new file mode 120000
index 0000000..ee31977
--- /dev/null
+++ b/arduino_blog/static/admin/css/changelists.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/changelists.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/dashboard.css b/arduino_blog/static/admin/css/dashboard.css
new file mode 120000
index 0000000..91320f4
--- /dev/null
+++ b/arduino_blog/static/admin/css/dashboard.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/dashboard.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/fonts.css b/arduino_blog/static/admin/css/fonts.css
new file mode 120000
index 0000000..75d6950
--- /dev/null
+++ b/arduino_blog/static/admin/css/fonts.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/fonts.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/forms.css b/arduino_blog/static/admin/css/forms.css
new file mode 120000
index 0000000..88e1140
--- /dev/null
+++ b/arduino_blog/static/admin/css/forms.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/forms.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/login.css b/arduino_blog/static/admin/css/login.css
new file mode 120000
index 0000000..051ace3
--- /dev/null
+++ b/arduino_blog/static/admin/css/login.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/login.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/responsive.css b/arduino_blog/static/admin/css/responsive.css
new file mode 120000
index 0000000..bee7d1e
--- /dev/null
+++ b/arduino_blog/static/admin/css/responsive.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/responsive.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/responsive_rtl.css b/arduino_blog/static/admin/css/responsive_rtl.css
new file mode 120000
index 0000000..15e72d6
--- /dev/null
+++ b/arduino_blog/static/admin/css/responsive_rtl.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/responsive_rtl.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/rtl.css b/arduino_blog/static/admin/css/rtl.css
new file mode 120000
index 0000000..df5d711
--- /dev/null
+++ b/arduino_blog/static/admin/css/rtl.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/rtl.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/vendor/select2/LICENSE-SELECT2.md b/arduino_blog/static/admin/css/vendor/select2/LICENSE-SELECT2.md
new file mode 120000
index 0000000..ffc9877
--- /dev/null
+++ b/arduino_blog/static/admin/css/vendor/select2/LICENSE-SELECT2.md
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/vendor/select2/LICENSE-SELECT2.md \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/vendor/select2/select2.css b/arduino_blog/static/admin/css/vendor/select2/select2.css
new file mode 120000
index 0000000..5814305
--- /dev/null
+++ b/arduino_blog/static/admin/css/vendor/select2/select2.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/vendor/select2/select2.min.css b/arduino_blog/static/admin/css/vendor/select2/select2.min.css
new file mode 120000
index 0000000..8b9cade
--- /dev/null
+++ b/arduino_blog/static/admin/css/vendor/select2/select2.min.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/vendor/select2/select2.min.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/css/widgets.css b/arduino_blog/static/admin/css/widgets.css
new file mode 120000
index 0000000..1650e28
--- /dev/null
+++ b/arduino_blog/static/admin/css/widgets.css
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/css/widgets.css \ No newline at end of file
diff --git a/arduino_blog/static/admin/fonts/LICENSE.txt b/arduino_blog/static/admin/fonts/LICENSE.txt
new file mode 120000
index 0000000..5daee35
--- /dev/null
+++ b/arduino_blog/static/admin/fonts/LICENSE.txt
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/LICENSE.txt \ No newline at end of file
diff --git a/arduino_blog/static/admin/fonts/README.txt b/arduino_blog/static/admin/fonts/README.txt
new file mode 120000
index 0000000..7bce9f2
--- /dev/null
+++ b/arduino_blog/static/admin/fonts/README.txt
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/README.txt \ No newline at end of file
diff --git a/arduino_blog/static/admin/fonts/Roboto-Bold-webfont.woff b/arduino_blog/static/admin/fonts/Roboto-Bold-webfont.woff
new file mode 120000
index 0000000..b55f0e2
--- /dev/null
+++ b/arduino_blog/static/admin/fonts/Roboto-Bold-webfont.woff
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Bold-webfont.woff \ No newline at end of file
diff --git a/arduino_blog/static/admin/fonts/Roboto-Light-webfont.woff b/arduino_blog/static/admin/fonts/Roboto-Light-webfont.woff
new file mode 120000
index 0000000..34d518a
--- /dev/null
+++ b/arduino_blog/static/admin/fonts/Roboto-Light-webfont.woff
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Light-webfont.woff \ No newline at end of file
diff --git a/arduino_blog/static/admin/fonts/Roboto-Regular-webfont.woff b/arduino_blog/static/admin/fonts/Roboto-Regular-webfont.woff
new file mode 120000
index 0000000..2c1ef88
--- /dev/null
+++ b/arduino_blog/static/admin/fonts/Roboto-Regular-webfont.woff
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/fonts/Roboto-Regular-webfont.woff \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/LICENSE b/arduino_blog/static/admin/img/LICENSE
new file mode 120000
index 0000000..0f68be0
--- /dev/null
+++ b/arduino_blog/static/admin/img/LICENSE
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/LICENSE \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/README.txt b/arduino_blog/static/admin/img/README.txt
new file mode 120000
index 0000000..c3556ff
--- /dev/null
+++ b/arduino_blog/static/admin/img/README.txt
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/README.txt \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/calendar-icons.svg b/arduino_blog/static/admin/img/calendar-icons.svg
new file mode 120000
index 0000000..c5d1023
--- /dev/null
+++ b/arduino_blog/static/admin/img/calendar-icons.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/calendar-icons.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/gis/move_vertex_off.svg b/arduino_blog/static/admin/img/gis/move_vertex_off.svg
new file mode 120000
index 0000000..7359c35
--- /dev/null
+++ b/arduino_blog/static/admin/img/gis/move_vertex_off.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_off.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/gis/move_vertex_on.svg b/arduino_blog/static/admin/img/gis/move_vertex_on.svg
new file mode 120000
index 0000000..678cd75
--- /dev/null
+++ b/arduino_blog/static/admin/img/gis/move_vertex_on.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/gis/move_vertex_on.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-addlink.svg b/arduino_blog/static/admin/img/icon-addlink.svg
new file mode 120000
index 0000000..803cc06
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-addlink.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-addlink.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-alert.svg b/arduino_blog/static/admin/img/icon-alert.svg
new file mode 120000
index 0000000..60e9a7a
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-alert.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-alert.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-calendar.svg b/arduino_blog/static/admin/img/icon-calendar.svg
new file mode 120000
index 0000000..ee53d6a
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-calendar.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-calendar.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-changelink.svg b/arduino_blog/static/admin/img/icon-changelink.svg
new file mode 120000
index 0000000..79f8989
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-changelink.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-changelink.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-clock.svg b/arduino_blog/static/admin/img/icon-clock.svg
new file mode 120000
index 0000000..072133b
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-clock.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-clock.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-deletelink.svg b/arduino_blog/static/admin/img/icon-deletelink.svg
new file mode 120000
index 0000000..82be67f
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-deletelink.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-deletelink.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-no.svg b/arduino_blog/static/admin/img/icon-no.svg
new file mode 120000
index 0000000..40617b6
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-no.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-no.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-unknown-alt.svg b/arduino_blog/static/admin/img/icon-unknown-alt.svg
new file mode 120000
index 0000000..57f6db9
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-unknown-alt.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-unknown-alt.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-unknown.svg b/arduino_blog/static/admin/img/icon-unknown.svg
new file mode 120000
index 0000000..6c1be30
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-unknown.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-unknown.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-viewlink.svg b/arduino_blog/static/admin/img/icon-viewlink.svg
new file mode 120000
index 0000000..f15bea1
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-viewlink.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-viewlink.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/icon-yes.svg b/arduino_blog/static/admin/img/icon-yes.svg
new file mode 120000
index 0000000..f801a87
--- /dev/null
+++ b/arduino_blog/static/admin/img/icon-yes.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/icon-yes.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/inline-delete.svg b/arduino_blog/static/admin/img/inline-delete.svg
new file mode 120000
index 0000000..e87cc30
--- /dev/null
+++ b/arduino_blog/static/admin/img/inline-delete.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/inline-delete.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/search.svg b/arduino_blog/static/admin/img/search.svg
new file mode 120000
index 0000000..95ef51f
--- /dev/null
+++ b/arduino_blog/static/admin/img/search.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/search.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/selector-icons.svg b/arduino_blog/static/admin/img/selector-icons.svg
new file mode 120000
index 0000000..5f6ea14
--- /dev/null
+++ b/arduino_blog/static/admin/img/selector-icons.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/selector-icons.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/sorting-icons.svg b/arduino_blog/static/admin/img/sorting-icons.svg
new file mode 120000
index 0000000..48dee60
--- /dev/null
+++ b/arduino_blog/static/admin/img/sorting-icons.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/sorting-icons.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/tooltag-add.svg b/arduino_blog/static/admin/img/tooltag-add.svg
new file mode 120000
index 0000000..f61736b
--- /dev/null
+++ b/arduino_blog/static/admin/img/tooltag-add.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/tooltag-add.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/img/tooltag-arrowright.svg b/arduino_blog/static/admin/img/tooltag-arrowright.svg
new file mode 120000
index 0000000..d270c1a
--- /dev/null
+++ b/arduino_blog/static/admin/img/tooltag-arrowright.svg
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/img/tooltag-arrowright.svg \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/SelectBox.js b/arduino_blog/static/admin/js/SelectBox.js
new file mode 120000
index 0000000..ab65f37
--- /dev/null
+++ b/arduino_blog/static/admin/js/SelectBox.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/SelectBox.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/SelectFilter2.js b/arduino_blog/static/admin/js/SelectFilter2.js
new file mode 120000
index 0000000..e12a890
--- /dev/null
+++ b/arduino_blog/static/admin/js/SelectFilter2.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/SelectFilter2.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/actions.js b/arduino_blog/static/admin/js/actions.js
new file mode 120000
index 0000000..3942179
--- /dev/null
+++ b/arduino_blog/static/admin/js/actions.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/actions.min.js b/arduino_blog/static/admin/js/actions.min.js
new file mode 120000
index 0000000..ea033f4
--- /dev/null
+++ b/arduino_blog/static/admin/js/actions.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/actions.min.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/admin/DateTimeShortcuts.js b/arduino_blog/static/admin/js/admin/DateTimeShortcuts.js
new file mode 120000
index 0000000..b29a4f9
--- /dev/null
+++ b/arduino_blog/static/admin/js/admin/DateTimeShortcuts.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/admin/DateTimeShortcuts.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/admin/RelatedObjectLookups.js b/arduino_blog/static/admin/js/admin/RelatedObjectLookups.js
new file mode 120000
index 0000000..395a176
--- /dev/null
+++ b/arduino_blog/static/admin/js/admin/RelatedObjectLookups.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/admin/RelatedObjectLookups.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/autocomplete.js b/arduino_blog/static/admin/js/autocomplete.js
new file mode 120000
index 0000000..d641e00
--- /dev/null
+++ b/arduino_blog/static/admin/js/autocomplete.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/autocomplete.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/calendar.js b/arduino_blog/static/admin/js/calendar.js
new file mode 120000
index 0000000..2459bd0
--- /dev/null
+++ b/arduino_blog/static/admin/js/calendar.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/calendar.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/cancel.js b/arduino_blog/static/admin/js/cancel.js
new file mode 120000
index 0000000..921aa44
--- /dev/null
+++ b/arduino_blog/static/admin/js/cancel.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/cancel.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/change_form.js b/arduino_blog/static/admin/js/change_form.js
new file mode 120000
index 0000000..db883c2
--- /dev/null
+++ b/arduino_blog/static/admin/js/change_form.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/change_form.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/collapse.js b/arduino_blog/static/admin/js/collapse.js
new file mode 120000
index 0000000..b183553
--- /dev/null
+++ b/arduino_blog/static/admin/js/collapse.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/collapse.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/collapse.min.js b/arduino_blog/static/admin/js/collapse.min.js
new file mode 120000
index 0000000..b9a412c
--- /dev/null
+++ b/arduino_blog/static/admin/js/collapse.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/collapse.min.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/core.js b/arduino_blog/static/admin/js/core.js
new file mode 120000
index 0000000..7a949f6
--- /dev/null
+++ b/arduino_blog/static/admin/js/core.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/core.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/inlines.js b/arduino_blog/static/admin/js/inlines.js
new file mode 120000
index 0000000..3e5921f
--- /dev/null
+++ b/arduino_blog/static/admin/js/inlines.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/inlines.min.js b/arduino_blog/static/admin/js/inlines.min.js
new file mode 120000
index 0000000..ed04bc0
--- /dev/null
+++ b/arduino_blog/static/admin/js/inlines.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/inlines.min.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/jquery.init.js b/arduino_blog/static/admin/js/jquery.init.js
new file mode 120000
index 0000000..b7ddcb1
--- /dev/null
+++ b/arduino_blog/static/admin/js/jquery.init.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/jquery.init.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/popup_response.js b/arduino_blog/static/admin/js/popup_response.js
new file mode 120000
index 0000000..791e38f
--- /dev/null
+++ b/arduino_blog/static/admin/js/popup_response.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/popup_response.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/prepopulate.js b/arduino_blog/static/admin/js/prepopulate.js
new file mode 120000
index 0000000..567d78f
--- /dev/null
+++ b/arduino_blog/static/admin/js/prepopulate.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/prepopulate.min.js b/arduino_blog/static/admin/js/prepopulate.min.js
new file mode 120000
index 0000000..250fffc
--- /dev/null
+++ b/arduino_blog/static/admin/js/prepopulate.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate.min.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/prepopulate_init.js b/arduino_blog/static/admin/js/prepopulate_init.js
new file mode 120000
index 0000000..4ce01b2
--- /dev/null
+++ b/arduino_blog/static/admin/js/prepopulate_init.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/prepopulate_init.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/timeparse.js b/arduino_blog/static/admin/js/timeparse.js
new file mode 120000
index 0000000..ddaafd8
--- /dev/null
+++ b/arduino_blog/static/admin/js/timeparse.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/timeparse.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/urlify.js b/arduino_blog/static/admin/js/urlify.js
new file mode 120000
index 0000000..e438bbc
--- /dev/null
+++ b/arduino_blog/static/admin/js/urlify.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/urlify.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/jquery/LICENSE.txt b/arduino_blog/static/admin/js/vendor/jquery/LICENSE.txt
new file mode 120000
index 0000000..6bd3c2f
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/jquery/LICENSE.txt
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/LICENSE.txt \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/jquery/jquery.js b/arduino_blog/static/admin/js/vendor/jquery/jquery.js
new file mode 120000
index 0000000..6731dc1
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/jquery/jquery.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/jquery/jquery.min.js b/arduino_blog/static/admin/js/vendor/jquery/jquery.min.js
new file mode 120000
index 0000000..6bdae27
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/jquery/jquery.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/jquery/jquery.min.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/LICENSE.md b/arduino_blog/static/admin/js/vendor/select2/LICENSE.md
new file mode 120000
index 0000000..94d7e86
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/LICENSE.md
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/LICENSE.md \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ar.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ar.js
new file mode 120000
index 0000000..1ec5c64
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ar.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ar.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/az.js b/arduino_blog/static/admin/js/vendor/select2/i18n/az.js
new file mode 120000
index 0000000..c5dfc2b
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/az.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/az.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/bg.js b/arduino_blog/static/admin/js/vendor/select2/i18n/bg.js
new file mode 120000
index 0000000..736ac6a
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/bg.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/bg.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ca.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ca.js
new file mode 120000
index 0000000..1bdd610
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ca.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ca.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/cs.js b/arduino_blog/static/admin/js/vendor/select2/i18n/cs.js
new file mode 120000
index 0000000..c739b36
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/cs.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/cs.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/da.js b/arduino_blog/static/admin/js/vendor/select2/i18n/da.js
new file mode 120000
index 0000000..b8777eb
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/da.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/da.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/de.js b/arduino_blog/static/admin/js/vendor/select2/i18n/de.js
new file mode 120000
index 0000000..d28f1af
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/de.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/de.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/el.js b/arduino_blog/static/admin/js/vendor/select2/i18n/el.js
new file mode 120000
index 0000000..f21f5d1
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/el.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/el.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/en.js b/arduino_blog/static/admin/js/vendor/select2/i18n/en.js
new file mode 120000
index 0000000..2d4274e
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/en.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/en.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/es.js b/arduino_blog/static/admin/js/vendor/select2/i18n/es.js
new file mode 120000
index 0000000..cd221ed
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/es.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/es.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/et.js b/arduino_blog/static/admin/js/vendor/select2/i18n/et.js
new file mode 120000
index 0000000..d84fb1f
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/et.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/et.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/eu.js b/arduino_blog/static/admin/js/vendor/select2/i18n/eu.js
new file mode 120000
index 0000000..8cc6ad7
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/eu.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/eu.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/fa.js b/arduino_blog/static/admin/js/vendor/select2/i18n/fa.js
new file mode 120000
index 0000000..c07b160
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/fa.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fa.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/fi.js b/arduino_blog/static/admin/js/vendor/select2/i18n/fi.js
new file mode 120000
index 0000000..a998079
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/fi.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fi.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/fr.js b/arduino_blog/static/admin/js/vendor/select2/i18n/fr.js
new file mode 120000
index 0000000..8944c08
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/fr.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/fr.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/gl.js b/arduino_blog/static/admin/js/vendor/select2/i18n/gl.js
new file mode 120000
index 0000000..cc34dbe
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/gl.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/gl.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/he.js b/arduino_blog/static/admin/js/vendor/select2/i18n/he.js
new file mode 120000
index 0000000..506f347
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/he.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/he.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/hi.js b/arduino_blog/static/admin/js/vendor/select2/i18n/hi.js
new file mode 120000
index 0000000..e9e1a87
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/hi.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hi.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/hr.js b/arduino_blog/static/admin/js/vendor/select2/i18n/hr.js
new file mode 120000
index 0000000..5ec30e2
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/hr.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hr.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/hu.js b/arduino_blog/static/admin/js/vendor/select2/i18n/hu.js
new file mode 120000
index 0000000..99e66d7
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/hu.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/hu.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/id.js b/arduino_blog/static/admin/js/vendor/select2/i18n/id.js
new file mode 120000
index 0000000..c65e954
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/id.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/id.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/is.js b/arduino_blog/static/admin/js/vendor/select2/i18n/is.js
new file mode 120000
index 0000000..835ed2b
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/is.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/is.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/it.js b/arduino_blog/static/admin/js/vendor/select2/i18n/it.js
new file mode 120000
index 0000000..41503d1
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/it.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/it.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ja.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ja.js
new file mode 120000
index 0000000..6bfdfaf
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ja.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ja.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/km.js b/arduino_blog/static/admin/js/vendor/select2/i18n/km.js
new file mode 120000
index 0000000..1ea3e3e
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/km.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/km.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ko.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ko.js
new file mode 120000
index 0000000..8da1af9
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ko.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ko.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/lt.js b/arduino_blog/static/admin/js/vendor/select2/i18n/lt.js
new file mode 120000
index 0000000..140fb02
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/lt.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lt.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/lv.js b/arduino_blog/static/admin/js/vendor/select2/i18n/lv.js
new file mode 120000
index 0000000..f166b18
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/lv.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/lv.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/mk.js b/arduino_blog/static/admin/js/vendor/select2/i18n/mk.js
new file mode 120000
index 0000000..777d63e
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/mk.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/mk.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ms.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ms.js
new file mode 120000
index 0000000..1344685
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ms.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ms.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/nb.js b/arduino_blog/static/admin/js/vendor/select2/i18n/nb.js
new file mode 120000
index 0000000..8b885e0
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/nb.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nb.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/nl.js b/arduino_blog/static/admin/js/vendor/select2/i18n/nl.js
new file mode 120000
index 0000000..43cb517
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/nl.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/nl.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/pl.js b/arduino_blog/static/admin/js/vendor/select2/i18n/pl.js
new file mode 120000
index 0000000..d096ccd
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/pl.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pl.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/pt-BR.js b/arduino_blog/static/admin/js/vendor/select2/i18n/pt-BR.js
new file mode 120000
index 0000000..8d16c0d
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/pt-BR.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt-BR.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/pt.js b/arduino_blog/static/admin/js/vendor/select2/i18n/pt.js
new file mode 120000
index 0000000..61811fe
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/pt.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/pt.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ro.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ro.js
new file mode 120000
index 0000000..a0b808e
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ro.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ro.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/ru.js b/arduino_blog/static/admin/js/vendor/select2/i18n/ru.js
new file mode 120000
index 0000000..31d6de7
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/ru.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/ru.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/sk.js b/arduino_blog/static/admin/js/vendor/select2/i18n/sk.js
new file mode 120000
index 0000000..52d7c85
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/sk.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sk.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/sr-Cyrl.js b/arduino_blog/static/admin/js/vendor/select2/i18n/sr-Cyrl.js
new file mode 120000
index 0000000..6373eea
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/sr-Cyrl.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr-Cyrl.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/sr.js b/arduino_blog/static/admin/js/vendor/select2/i18n/sr.js
new file mode 120000
index 0000000..706ad71
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/sr.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sr.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/sv.js b/arduino_blog/static/admin/js/vendor/select2/i18n/sv.js
new file mode 120000
index 0000000..29b24ca
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/sv.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/sv.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/th.js b/arduino_blog/static/admin/js/vendor/select2/i18n/th.js
new file mode 120000
index 0000000..53c8555
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/th.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/th.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/tr.js b/arduino_blog/static/admin/js/vendor/select2/i18n/tr.js
new file mode 120000
index 0000000..c0f0efe
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/tr.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/tr.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/uk.js b/arduino_blog/static/admin/js/vendor/select2/i18n/uk.js
new file mode 120000
index 0000000..8982ed5
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/uk.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/uk.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/vi.js b/arduino_blog/static/admin/js/vendor/select2/i18n/vi.js
new file mode 120000
index 0000000..ea9c8a1
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/vi.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/vi.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/zh-CN.js b/arduino_blog/static/admin/js/vendor/select2/i18n/zh-CN.js
new file mode 120000
index 0000000..21ec8de
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/zh-CN.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-CN.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/i18n/zh-TW.js b/arduino_blog/static/admin/js/vendor/select2/i18n/zh-TW.js
new file mode 120000
index 0000000..273186d
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/i18n/zh-TW.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/i18n/zh-TW.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/select2.full.js b/arduino_blog/static/admin/js/vendor/select2/select2.full.js
new file mode 120000
index 0000000..986189c
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/select2.full.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/select2/select2.full.min.js b/arduino_blog/static/admin/js/vendor/select2/select2.full.min.js
new file mode 120000
index 0000000..47d6ea4
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/select2/select2.full.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/select2/select2.full.min.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/xregexp/LICENSE.txt b/arduino_blog/static/admin/js/vendor/xregexp/LICENSE.txt
new file mode 120000
index 0000000..73210dd
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/xregexp/LICENSE.txt
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/LICENSE.txt \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/xregexp/xregexp.js b/arduino_blog/static/admin/js/vendor/xregexp/xregexp.js
new file mode 120000
index 0000000..dbf7595
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/xregexp/xregexp.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.js \ No newline at end of file
diff --git a/arduino_blog/static/admin/js/vendor/xregexp/xregexp.min.js b/arduino_blog/static/admin/js/vendor/xregexp/xregexp.min.js
new file mode 120000
index 0000000..59674e4
--- /dev/null
+++ b/arduino_blog/static/admin/js/vendor/xregexp/xregexp.min.js
@@ -0,0 +1 @@
+/home/prashant/www/html/python/python_3.x/arduino-hosting/env-arduino/lib/python3.6/site-packages/django/contrib/admin/static/admin/js/vendor/xregexp/xregexp.min.js \ No newline at end of file
diff --git a/arduino_blog/templates/activation-status.html b/arduino_blog/templates/activation-status.html
new file mode 100644
index 0000000..a9764cb
--- /dev/null
+++ b/arduino_blog/templates/activation-status.html
@@ -0,0 +1,64 @@
+{% extends "base.html" %}
+
+{% block css%}
+ <link rel="stylesheet" href="{{ URL_ROOT }}/static/yaksh/css/dashboard.css" type="text/css" />
+{% endblock %}
+{% block content %}
+{% if success %}
+ <center>
+ <div class="alert alert-success" role="alert">
+ <strong> {{ msg }} </strong>
+ </div>
+ <!-- <a href="{{URL_ROOT}}/exam/"> Home </a> -->
+ </center>
+{% else %}
+ {% if msg %}
+ <center>
+ <div class="alert alert-warning" role="alert">
+ <strong> {{ msg }} </strong>
+ </div>
+ </center>
+ <form action="{% url 'arduino_blog:new_activation' %}" method="post">
+ {% csrf_token %}
+ <center>
+ Enter Email Address for verification: <input type="email" name="email" required><br><br>
+ <button class="btn" type="submit">Send Email</button>
+ </center>
+ </form>
+ {% endif %}
+{% endif %}
+<br/>
+{% if activation_msg %}
+ <center>
+ <div class="alert alert-info" role="alert">
+ <strong> {{ activation_msg }} </strong>
+ </div>
+ <!-- <a href="{{URL_ROOT}}"> Home </a> -->
+ </center>
+{% endif %}
+
+{% if email_err_msg %}
+ <center>
+ <div class="alert alert-warning" role="alert">
+ <strong> {{ email_err_msg }} </strong>
+ </div>
+ </center>
+ <form action="{{ URL_ROOT }}/exam/update_email/" method="post">
+ {% csrf_token %}
+ <center>
+ <table>
+ <tr>
+ <td>Enter Username:</td>
+ <td><input type="text" name="username" required></td>
+ </tr>
+ <tr>
+ <td>Enter New Email Address:</td>
+ <td><input type="email" name="email" required></td>
+ </tr>
+ </table>
+ <br>
+ <button class="btn" type="submit">Submit</button>
+ </center>
+ </form>
+{% endif %}
+{% endblock content %}
diff --git a/arduino_blog/templates/base.html b/arduino_blog/templates/base.html
new file mode 100644
index 0000000..253f3a2
--- /dev/null
+++ b/arduino_blog/templates/base.html
@@ -0,0 +1,11 @@
+{% load static %}
+<!DOCTYPE html>
+<html lang="en">
+ {% include 'header.html' %}
+ <body>
+ {% include 'navbar.html' %}
+ {% block content %}{% endblock content %}
+ {% include 'footer.html' %}
+ </body>
+</html>
+
diff --git a/arduino_blog/templates/footer.html b/arduino_blog/templates/footer.html
new file mode 100644
index 0000000..6f6845d
--- /dev/null
+++ b/arduino_blog/templates/footer.html
@@ -0,0 +1,103 @@
+
+{% load static %}
+<!-- Footer -->
+{% block footer %}
+<!-- Footer -->
+<footer class="page-footer font-small blue pt-4 bg-dark text-white">
+
+ <!-- Footer Links -->
+ <div class="container-fluid text-center text-md-left">
+
+ <!-- Grid row -->
+ <div class="row">
+
+ <!-- Grid column -->
+ <div id="contact-us" class="col-md-6 mt-md-0 mt-3">
+
+ <!-- Content -->
+ <h3 class="text-uppercase">CONTACT</h3>
+ <address>
+ <p>
+ <i class="fa fa-home pr-10"></i>FOSSEE, IIT Bombay
+ </p>
+ <p>
+ <i class="fa fa-globe pr-10"></i>Mumbai, India
+ </p>
+ <p>
+ <i class="fa fa-phone pr-10"></i>Phone : (+91) 22 25764133
+ </p>
+ <p>
+ <i class="fa fa-envelope pr-10"></i>Email : info [at] fossee [dot] in
+ </p>
+ </address>
+
+ </div>
+ <!-- Grid column -->
+
+ <hr class="clearfix w-100 d-md-none pb-3">
+
+ <!-- Grid column -->
+ <!-- <div class="col-md-3 mb-md-0 mb-3">
+
+
+ <h5 class="text-uppercase">Links</h5>
+
+ <ul class="list-unstyled">
+ <li>
+ <a href="#!">Link 1</a>
+ </li>
+ <li>
+ <a href="#!">Link 2</a>
+ </li>
+ <li>
+ <a href="#!">Link 3</a>
+ </li>
+ <li>
+ <a href="#!">Link 4</a>
+ </li>
+ </ul>
+
+ </div> -->
+ <!-- Grid column -->
+
+ <!-- Grid column -->
+ <div class="col-md-3 mb-md-0 mb-3">
+
+ <!-- Links -->
+ <h5 class="text-uppercase">Other Links</h5>
+
+ <ul class="list-styled">
+ <li>
+ <a class="text-white" href="https://fossee.in" target="_blank">FOSSEE</a>
+ </li>
+ <li>
+ <a class="text-white" href="https://scilab.in" target="_blank">Scilab</a>
+ </li>
+ <li>
+ <a class="text-white" href="https://esim.fossee.in" target="_blank">eSim</a>
+ </li>
+ <li>
+ <a class="text-white" href="https://openplc.fossee.in" target="_blank">OpenPlc</a>
+ </li>
+ </ul>
+
+ </div>
+ <!-- Grid column -->
+
+ </div>
+ <!-- Grid row -->
+
+ </div>
+ <!-- Footer Links -->
+
+ <!-- Copyright -->
+ <span class="text-muted">
+ <center>
+ <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by/4.0/">Creative Commons Attribution 4.0 International License</a>.
+ </center>
+ </span>
+ <!-- Copyright -->
+
+</footer>
+<!-- Footer -->
+{% endblock %} \ No newline at end of file
diff --git a/arduino_blog/templates/header.html b/arduino_blog/templates/header.html
new file mode 100644
index 0000000..12964d4
--- /dev/null
+++ b/arduino_blog/templates/header.html
@@ -0,0 +1,45 @@
+{% load static %}
+<!-- Header-->
+{% block header %}
+<head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta name="title" content="Arduino Projects">
+ <meta name="description" content="Arduino Projects">
+ <meta name="keywords" content="Arduino, projects, github">
+ <link rel="icon" href="{% static 'website/bootstrap-css/assets/images/logo.png' %}" type="icon">
+ <title>Arduino Projects</title>
+ <!-- <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script> -->
+ <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
+ <script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
+<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
+<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
+ <script>
+ function countChar(val) {
+ var len = val.value.length;
+ var count = $('#charNum').text(0 + len);
+ };
+ </script>
+<style>
+
+ /* Stackoverflow preview fix, please ignore */
+ .navbar-nav {
+ flex-direction: row;
+ }
+ .nav-link {
+ padding-right: .5rem !important;
+ padding-left: .5rem !important;
+ }
+
+ /* Fixes dropdown menus placed on the right side */
+ .ml-auto .dropdown-menu {
+ left: auto !important;
+ right: 0px;
+ }
+ </style>
+</head>
+
+{% endblock %} \ No newline at end of file
diff --git a/arduino_blog/templates/home.html b/arduino_blog/templates/home.html
new file mode 100644
index 0000000..9b79a08
--- /dev/null
+++ b/arduino_blog/templates/home.html
@@ -0,0 +1,171 @@
+
+{% load widget_tweaks %}
+{% load static %}
+<!-- Navigation -->
+{% block home %}
+
+<main role="main">
+
+ <section class="jumbotron text-center">
+ <div class="container">
+ <h1>Open Source Hardware Project</h1>
+ <p class="lead text-muted text-justify">
+ Back in 2005, a group of students envisaged a world where they have affordable access to digital devices, that they can interact with the environment using sensors and microcontrollers. Fast forward 15 years and Arduino has become a household name in the community of not just students, but also novices, professionals and DIY makers. The formidable headway that was brought about has given courage and vision to all the opensource hardware projects henceforth. We at FOSSEE also became a part by adopting the platform, and using it to teach Electronics across India. The learning resources, both hardware and lectures, put together by the Opensource-hardware team of FOSSEE and Spoken-tutorial has already demonstrated effective learning.
+ Here, we are here providing you a platform for showcasing your ambitious projects, forming a community around the users and become part of our opensource-hardware activities. We are inviting proposals from you, those who have implemented projects using Arduino or are in the process, to contribute the documentation/DIY instructions of their projects. We promise to put together a well presented, shareable documentation of your project in our website. Every contributor can thus build an online portfolio which they can take pride in and may also land them a job one day!
+ Please signup and make a profile for proposal submission right away and become one of the first contributors!
+ </p>
+ <p>
+ <a href="{% url 'arduino_blog:submitabstract' %}" class="btn btn-primary my-2">Contribute first</a>
+ <!-- <a href="#" class="btn btn-secondary my-2">View exisitng</a> -->
+ </p>
+ </div>
+ </section>
+<!--
+ <div class="album py-5 bg-light">
+ <div class="container">
+
+ <div class="row">
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="col-md-4">
+ <div class="card mb-4 shadow-sm">
+ <svg class="bd-placeholder-img card-img-top" width="100%" height="225" xmlns="http://www.w3.org/2000/svg" preserveAspectRatio="xMidYMid slice" focusable="false" role="img" aria-label="Placeholder: Thumbnail"><title>Placeholder</title><rect width="100%" height="100%" fill="#55595c"/><text x="50%" y="50%" fill="#eceeef" dy=".3em">Thumbnail</text></svg>
+ <div class="card-body">
+ <p class="card-text">This is a wider card with supporting text below as a natural lead-in to additional content. This content is a little bit longer.</p>
+ <div class="d-flex justify-content-between align-items-center">
+ <div class="btn-group">
+ <button type="button" class="btn btn-sm btn-outline-secondary">View</button>
+ <button type="button" class="btn btn-sm btn-outline-secondary">Edit</button>
+ </div>
+ <small class="text-muted">9 mins</small>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ -->
+</main>
+
+{% endblock %} \ No newline at end of file
diff --git a/arduino_blog/templates/index.html b/arduino_blog/templates/index.html
new file mode 100644
index 0000000..cc7f0ab
--- /dev/null
+++ b/arduino_blog/templates/index.html
@@ -0,0 +1,5 @@
+{% extends "base.html" %}
+{% load static %}
+ {% block content %}
+ {% include 'home.html' %}
+ {% endblock %} \ No newline at end of file
diff --git a/arduino_blog/templates/login.html b/arduino_blog/templates/login.html
new file mode 100644
index 0000000..7c9bfc2
--- /dev/null
+++ b/arduino_blog/templates/login.html
@@ -0,0 +1,44 @@
+{% extends "base.html" %}
+
+{% load widget_tweaks %}
+{% load static %}
+{% block content %}
+ <section id="cfp" class="section cfp">
+ <div class="container">
+ <p>
+ <center>
+ {% if user and not user.is_anonymous %}
+ <h2>Submit Proposal </h2>
+ {% else %}
+ <h2>Login</h2>
+ {% endif %}
+ </center>
+ </p>
+ {% if registration_complete %}
+ <center>
+ <p>Thank You for your registration. You can now log in by clicking
+ <a href="{% url 'arduino_blog:user_login' %}">here!</a>
+ </p>
+ <br/>
+ <br/>
+ </center>
+ {% endif %}
+ <form action="" method="POST">
+ {% csrf_token %}
+ {{ form.as_p }}
+ <button type="button" class="btn btn-success" name ="login" type="submit">Login</button>
+ <br/>
+ <br/>
+ <a style="padding-right : 20px;" href="{% url 'arduino_blog:user_register' %}" class="btn btn btn-primary">Create an Account
+ </a>
+ <!-- <br><br>
+ <a href="/2019/forgotpassword/" class="btn btn-primary">Forgot Password?</a> -->
+ </form>
+ </p>
+ <br>
+ </div>
+
+ </section>
+ {% endblock %}
+
+
diff --git a/arduino_blog/templates/navbar.html b/arduino_blog/templates/navbar.html
new file mode 100644
index 0000000..3dd68b4
--- /dev/null
+++ b/arduino_blog/templates/navbar.html
@@ -0,0 +1,51 @@
+{% load static %}
+<!-- Navigation -->
+{% block nav %}
+<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
+ <a class="navbar-brand" href="/">Open Source Hardware Project </a>
+ <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
+ <span class="navbar-toggler-icon"></span>
+ </button>
+ <div class="collapse navbar-collapse" id="navbarNavDropdown">
+ <ul class="navbar-nav ml-auto">
+ <li class="nav-item active">
+ <a class="nav-link" href="/">Home <span class="sr-only">(current)</span></a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{{SITE_URL}}/#about">About</a>
+ </li>
+ <li class="nav-item">
+ <a class="nav-link" href="{{SITE_URL}}/#contact-us">Contact</a>
+ </li>
+ {% if user.is_authenticated %}
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'arduino_blog:submitabstract' %}">Submit Abstract</a>
+ </li>
+ <li class="nav-item dropdown">
+ <a class="nav-link dropdown-toggle" id="navbarDropdownMenuLink" data-toggle="dropdown" href="{% url 'auth:login' %}" aria-haspopup="true" aria-expanded="false">
+ <i class="fa fa-user" aria-hidden="true"></i>
+ {{ user.username }}!<span class="caret"></span>
+ </a>
+ <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
+ {% if user.profile.is_email_verified %}
+
+
+ <a href="{% url 'arduino_blog:user_logout' %}"><i class="fa fa-sign-out"></i>&nbsp;Logout</a>
+
+ {% else %}
+ <a href="{% url 'arduino_blog:user_logout' %}"><i class="fa fa-sign-out"></i>&nbsp;Logout</a>
+
+
+ {% endif %}
+ </div>
+ </li>
+ {% else %}
+ <li class="nav-item">
+ <a class="nav-link" href="{% url 'arduino_blog:user_login' %}">Login</a>
+ </li>
+ {% endif %}
+ </ul>
+ </div>
+</nav>
+
+{% endblock %} \ No newline at end of file
diff --git a/arduino_blog/templates/submit-cfp.html b/arduino_blog/templates/submit-cfp.html
new file mode 100644
index 0000000..f30b465
--- /dev/null
+++ b/arduino_blog/templates/submit-cfp.html
@@ -0,0 +1,72 @@
+{% extends "base.html" %}
+
+{% load widget_tweaks %}
+{% load static %}
+{% block content %}
+
+<section id="view_proposal" class="section view_proposal">
+ <div class="container">
+ <br>
+ <center>
+ <h1>Submit Proposal</h1>
+ </center>
+ <hr>
+ <div class="row">
+ <div class="col-sm-12">
+ <form action="" method=POST enctype="multipart/form-data">
+ <div class="form-group">
+ <label for="name_of_author">Name of the author
+ <span style="color:red;">*</span>:
+ </label>
+ <input class="form-control" id="your_name" type="text" name="your_name" value="{{ user.first_name }} {{ user.last_name }}" disabled>
+
+ </div>
+ <div class="form-group">
+ <label for="about_the_author">About the author
+ <span style="color:red;">*</span>:
+ </label>
+ {% render_field proposal_form.about_the_author %}
+ </div>
+ <div class="form-group">
+ <label for="title_of_the_project">Title of the Project
+ <span style="color:red;">*</span>:
+ </label>
+ {% render_field proposal_form.title_of_the_project %}
+ </div>
+ <div class="form-group">
+ <label for="abstract">Abstract (Min. 300 char.)
+
+ <span style="color:red;">*</span>:
+
+ </label>
+ {% render_field proposal_form.abstract %}
+ <label>Charater count:
+ <div id="charNum"></div>
+ </label>
+ </div>
+ <div class="form-group">
+ <label for="attachment">Attachments:</label>
+ {% render_field proposal_form.attachment %}
+ </div>
+ <div class="form-inline">
+ <div class="form-check">
+ {% render_field proposal_form.terms_and_conditions %}
+ <label for="terms_and_conditions"> &nbsp; I agree to the terms and conditions
+ <span style="color:red;">*</span>
+ </label>
+
+ </div>
+ </div>
+
+ {% csrf_token %}
+ <center>
+ <button id="subbtn" class="btn btn-info" type="submit" >Submit</button>
+ <a href="#" class="btn btn-info" role="button">Back</a>
+ </center>
+ </form>
+ </div>
+ </div>
+ </div>
+ </section>
+ </br>
+{% endblock %}
diff --git a/arduino_blog/templates/user-register.html b/arduino_blog/templates/user-register.html
new file mode 100644
index 0000000..a5282d6
--- /dev/null
+++ b/arduino_blog/templates/user-register.html
@@ -0,0 +1,198 @@
+{% extends "base.html" %}
+
+{% load widget_tweaks %}
+{% load static %}
+
+{% block content %}
+ <section id="register" class="section register">
+ <div class="container">
+ <center>
+ <h2>Sign Up</h2>
+ </center>
+{% if form.errors %}
+ {% for field in form %}
+ {% for error in field.errors %}
+ <div class="alert alert-danger">
+ <strong>{{ error|escape }}</strong>
+ </div>
+ {% endfor %}
+ {% endfor %}
+{% endif %}
+ <form action="" method=POST>
+ {% csrf_token %}
+ <!-- <a style="color:red; ">{{ render_field.errors }}</a>-->
+ <div class="row">
+ <div class="col-12">
+ <table class="table table-bordered table-responsive table-striped">
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="username">Username:</label>
+ <span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.username %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="username">Email:</label>
+ <span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.email %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="pwd">Password:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.password %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="cnfpwd">Confirm Password:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.confirm_password %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="name">Full Name:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.title %}{% render_field form.first_name %} {% render_field form.last_name %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="contact">Contact:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.phone %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline" style="word-wrap: break-word;">
+ <label for="institute">Institue/ Organization/ Company:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline" style="word-wrap: break-word;">
+ {% render_field form.institute %}<br><span style="font-size: 12px;">Enter your institute/ organisation/ company</span>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline" style="word-wrap: break-word;">
+ <label for="position">Position:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline" style="word-wrap: break-word;">
+ {% render_field form.position %}<br><span style="font-size: 12px;"></span>
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="state" style="word-wrap: break-word;">State:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.state %}
+ </div>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="state" style="word-wrap: break-word;">City:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.city %}
+ </div>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="state" style="word-wrap: break-word;">Pincode:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.pincode %}
+ </div>
+ </tr>
+ <tr>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <label for="how_did_you_hear_about_us" style="word-wrap: break-word;">How did you hear about us:</label><span style="color:red;">*</span>
+ </div>
+ </td>
+ <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ {% render_field form.how_did_you_hear_about_us %}
+ </div>
+ </td>
+ </tr>
+ <tr>
+ <!-- <td style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ </div>
+ </td> -->
+ <td colspan="2" style="vertical-align:bottom;border-top:none;!important">
+ <div class="align-baseline">
+ <span style="color:red;">*</span> marked fields are mandatory. Please enter the correct information. It will help us to solve your issues in short timespan.
+ </div>
+ </td>
+ </tr>
+ </table>
+ </div>
+ </div>
+ <center>
+ <div class="btn-group" role="group" aria-label="Third group">
+ <button class="btn btn btn-success" type="submit">Sign Up</button>
+ </div>
+ <div class="btn-group" role="group" aria-label="Third group">
+ <a class="btn btn btn-warning" href="{% url 'arduino_blog:user_login' %}">I have an account</a>
+ </div>
+ </center>
+ <!-- </div> -->
+ </form>
+ <br>
+ </div>
+ <!--</div>-->
+ </section>
+{% endblock %} \ No newline at end of file
diff --git a/arduino_blog/tests.py b/arduino_blog/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/arduino_blog/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/arduino_blog/urls.py b/arduino_blog/urls.py
new file mode 100644
index 0000000..0ef6a92
--- /dev/null
+++ b/arduino_blog/urls.py
@@ -0,0 +1,17 @@
+from django.urls import path, re_path
+from django.conf.urls.static import static
+from django.conf import settings
+from django.conf.urls import url
+
+from . import views
+
+app_name = 'arduino_blog'
+urlpatterns = [
+ url(r'^accounts/logout/$', views.user_logout, name="user_logout"),
+ url(r'^activate/(?P<key>.+)$', views.activate_user, name="activate"),
+ url(r'^new_activation/$', views.new_activation, name='new_activation'),
+ url(r'^submit-abstract/$', views.submitabstract, name='submitabstract'),
+ url(r'^accounts/register/$', views.user_register, name='user_register'),
+ url(r'^accounts/login/$', views.user_login, name='user_login'),
+ url(r'^$', views.index, name='index'),
+] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
diff --git a/arduino_blog/views.py b/arduino_blog/views.py
new file mode 100644
index 0000000..b2dc9f4
--- /dev/null
+++ b/arduino_blog/views.py
@@ -0,0 +1,214 @@
+from django.http import HttpResponse
+from django.shortcuts import render_to_response, render, redirect, get_object_or_404
+from django.template import loader
+from django.template import RequestContext
+from django.contrib.auth.forms import UserCreationForm
+from django.views.decorators.cache import cache_page
+from django.views.decorators.csrf import (csrf_exempt, csrf_protect,
+ ensure_csrf_cookie,
+ requires_csrf_token)
+from django.contrib.auth.decorators import login_required
+from django.contrib.auth.models import User
+from arduino_blog.forms import UserRegistrationForm, AbstractProposalForm, UserLoginForm
+from django.contrib.auth import authenticate, login, logout
+from arduino_blog.models import Proposal, Profile
+from .send_emails import (send_user_mail,
+ generate_activation_key)
+from django.utils import timezone
+from arduino_projects_website.settings import URL_ROOT
+from .decorators import email_verified
+
+
+def my_redirect(url):
+ """An overridden redirect to deal with URL_ROOT-ing. See settings.py
+ for details."""
+ return redirect(URL_ROOT + url)
+
+def my_render_to_response(request, template, context=None, **kwargs):
+ """Overridden render_to_response.
+ """
+ if context is None:
+ context = {'URL_ROOT': URL_ROOT}
+ else:
+ context['URL_ROOT'] = URL_ROOT
+ return render(request, template, context, **kwargs)
+
+
+def user_logout(request):
+ """Show a page to inform user that the quiz has been compeleted."""
+ logout(request)
+ return redirect('/')
+
+#view to landing page
+def index(request):
+ context = {}
+ template = loader.get_template('index.html')
+ return HttpResponse(template.render(context, request))
+
+@csrf_protect
+def user_register(request):
+ '''User Registration form'''
+ user = request.user
+ if user.is_authenticated:
+ return my_redirect("/submit-abstract")
+ context = {}
+ if request.method == "POST":
+ form = UserRegistrationForm(request.POST)
+ if form.is_valid():
+ u_name, pwd, user_email, key = form.save()
+ new_user = authenticate(username=u_name, password=pwd)
+ login(request, new_user)
+ if user_email and key:
+ success, msg = send_user_mail(user_email, key)
+ #msg = 'Hello'
+ context = {'activation_msg': msg}
+ return my_render_to_response(
+ request,
+ 'activation-status.html', context
+ )
+ return index(request)
+ else:
+ return my_render_to_response(
+ request, 'user-register.html', {'form': form}
+ )
+ else:
+ form = UserRegistrationForm()
+ return my_render_to_response(
+ request, 'user-register.html', {'form': form}
+ )
+
+@requires_csrf_token
+def user_login(request):
+ user = request.user
+ context = {}
+ if request.user.is_authenticated:
+ return render(request, 'index.html', context)
+ else:
+ if request.method == "POST":
+ context = {}
+ username = request.POST.get('username', None)
+ password = request.POST.get('password', None)
+ user = authenticate(username=username, password=password)
+ if user is not None:
+ login(request, user)
+ proposals = Proposal.objects.filter(user=request.user).count()
+ context['user'] = user
+ #context['cfp_dates'] = 'August 20'
+ return redirect('/submit-abstract')
+ #template = loader.get_template('index.html')
+ #return render(request, 'index.html', context)
+ else:
+ context['invalid'] = True
+ context['form'] = UserLoginForm
+ context['user'] = user
+ #context['cfp_dates'] = 'August 20'
+ #context['proposals_a'] = proposals_a
+ return render(request, 'login.html', context)
+ else:
+ form = UserLoginForm()
+ context = {'request': request,
+ 'user': request.user,
+ 'form': form,
+ }
+ template = loader.get_template('login.html')
+ return HttpResponse(template.render(context, request))
+
+def activate_user(request, key):
+ profile = get_object_or_404(Profile, activation_key=key)
+ context = {}
+ context['success'] = False
+ if profile.is_email_verified:
+ context['activation_msg'] = "Your account is already verified"
+ return my_render_to_response(
+ request, 'activation-status.html', context
+ )
+
+ if timezone.now() > profile.key_expiry_time:
+ context['msg'] = dedent("""
+ Your activation time expired.
+ Please try again.
+ """)
+ else:
+ context['success'] = True
+ profile.is_email_verified = True
+ profile.save()
+ context['msg'] = "Your account is activated"
+ return my_render_to_response(
+ request, 'activation-status.html', context
+ )
+
+
+def new_activation(request, email=None):
+ context = {}
+ if request.method == "POST":
+ email = request.POST.get('email')
+
+ try:
+ user = User.objects.get(email=email)
+ except MultipleObjectsReturned:
+ context['email_err_msg'] = "Multiple entries found for this email"\
+ "Please change your email"
+ return my_render_to_response(
+ request, 'activation-status.html', context
+ )
+ except ObjectDoesNotExist:
+ context['success'] = False
+ context['msg'] = "Your account is not verified. \
+ Please verify your account"
+ return my_render_to_response(
+ request, 'activation-status.html', context
+ )
+
+ if not user.profile.is_email_verified:
+ user.profile.activation_key = generate_activation_key(user.username)
+ user.profile.key_expiry_time = timezone.now() + \
+ timezone.timedelta(minutes=60)
+ user.profile.save()
+ new_user_data = User.objects.get(email=email)
+ success, msg = send_user_mail(new_user_data.email,
+ new_user_data.profile.activation_key
+ )
+ if success:
+ context['activation_msg'] = msg
+ else:
+ context['msg'] = msg
+ else:
+ context['activation_msg'] = "Your account is already verified"
+
+ return my_render_to_response(
+ request, 'activation-status.html', context
+ )
+
+
+@csrf_protect
+@login_required
+@email_verified
+def submitabstract(request):
+ context = {}
+ if request.user.is_authenticated:
+ social_user = request.user
+ django_user = User.objects.get(username=social_user)
+ context['user'] = django_user
+ if request.method == 'POST':
+ form = AbstractProposalForm(request.POST, request.FILES)
+ if form.is_valid():
+ data = form.save(commit=False)
+ data.user = django_user
+ data.name_of_author = social_user.first_name + ' ' + social_user.last_name
+ data.email = social_user.email
+ data.attachment = request.FILES
+ data.save()
+ context['proposal_submit'] = True
+ #mail function
+ return render_to_response('index.html', context)
+ else:
+ context['proposal_form'] = form
+ #context['proposals_a'] = proposals_a
+ template = loader.get_template('submit-cfp.html')
+ return HttpResponse(template.render(context, request))
+ else:
+ form = AbstractProposalForm()
+ return render(request, 'submit-cfp.html', {'proposal_form': form})
+ else:
+ context['login_required'] = True
+ return render_to_response('login.html', context)