diff options
-rw-r--r-- | website/forms.py | 29 | ||||
-rw-r--r-- | website/static/css/bootstrap.css | 7 | ||||
-rw-r--r-- | website/templates/cfp.html | 5 | ||||
-rw-r--r-- | website/templates/user-login.html | 52 | ||||
-rw-r--r-- | website/templates/user-register.html | 43 | ||||
-rw-r--r-- | website/urls.py | 6 | ||||
-rw-r--r-- | website/views.py | 44 |
7 files changed, 177 insertions, 9 deletions
diff --git a/website/forms.py b/website/forms.py index 3617a93..da48647 100644 --- a/website/forms.py +++ b/website/forms.py @@ -1,8 +1,9 @@ from django import forms from django.db import models from django.contrib.auth.models import User +from django.contrib.auth import login, logout, authenticate from django.core.validators import validate_email - +from django.contrib.auth.forms import UserCreationForm from website.models import Proposal @@ -21,3 +22,29 @@ class ProposalForm(forms.ModelForm): elif attachment.size > (5*1024*1024): raise forms.ValidationError('File size exceeds 5MB') return attachment + + +class UserRegisterForm(UserCreationForm): + class Meta: + model = User + fields = ('first_name', 'last_name', 'email', 'username', 'password1', + 'password2') + + +class UserLoginForm(forms.Form): + username = forms.CharField( + widget=forms.TextInput(attrs={'class': 'form-control', 'placeholder': 'Username'}), + label='' + ) + password = forms.CharField( + widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': 'Password'}), + label='' + ) + def clean(self): + super(UserLoginForm, self).clean() + u_name, pwd = self.cleaned_data["username"],\ + self.cleaned_data["password"] + user = authenticate(username=u_name, password=pwd) + if not user: + raise forms.ValidationError("Invalid username/password") + return user diff --git a/website/static/css/bootstrap.css b/website/static/css/bootstrap.css index 5fd35bb..c1515c1 100644 --- a/website/static/css/bootstrap.css +++ b/website/static/css/bootstrap.css @@ -3758,7 +3758,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { float: left; height: 20px; padding: 15px 15px; - font-size: 18px; + font-size: 15px; line-height: 20px; } .navbar-brand:hover, @@ -3770,8 +3770,8 @@ select[multiple].input-group-sm > .input-group-btn > .btn { .navbar > .container-fluid .navbar-brand { margin-left: -15px; color: #3676ab; - font-size:35px; - font-weight: 400; + font-size:30px; + font-weight: 300; } } .navbar-toggle { @@ -4056,6 +4056,7 @@ select[multiple].input-group-sm > .input-group-btn > .btn { } .navbar-inverse .navbar-nav > li > a { color: #3676ab; + font-size: 18px; } .navbar-inverse .navbar-nav > li > a:hover, .navbar-inverse .navbar-nav > li > a:focus { diff --git a/website/templates/cfp.html b/website/templates/cfp.html index c584cc5..22b481e 100644 --- a/website/templates/cfp.html +++ b/website/templates/cfp.html @@ -17,7 +17,7 @@ <li class="dropdown"> <a href="#" class="dropdown-toggle" data-toggle="dropdown">{{ user.get_full_name|default:user.username }}<b class="caret"></b></a> <ul class="dropdown-menu"> - <li><a href="{% url 'auth:logout' %}?next={{ request.path }}">Logout</a></li> + <li><a href="{% url 'auth:logout' %}?next=/2015/cfp">Logout</a></li> </ul> {% endif %} </ul> @@ -77,7 +77,8 @@ {% else %} To Submit a Talk Login with: <p><a href="{% url 'social:begin' 'google-oauth2' %}?next={{ request.path }}" class="btn btn btn-primary">Google</a> or - <a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}" class="btn btn btn-primary">Facebook</a> + <a href="{% url 'social:begin' 'facebook' %}?next={{ request.path }}" class="btn btn btn-primary">Facebook</a> or + <a href="{% url 'website:userlogin' %}" class="btn btn btn-primary">Login/SignUp</a> {% endif %} </div> </div> diff --git a/website/templates/user-login.html b/website/templates/user-login.html new file mode 100644 index 0000000..0020e34 --- /dev/null +++ b/website/templates/user-login.html @@ -0,0 +1,52 @@ +{% extends 'base.html' %} +{% load static %} + +{% block navbar %} +<div id="navbar-main"> + <!-- Fixed navbar --> + <div class="navbar navbar-inverse navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> + <a class="navbar-brand" href="{% url 'website:home' %}">SciPy India 2015 </a> + </div> + <div class="navbar-collapse collapse"> + <ul class="nav navbar-nav navbar-right"> + <li><a href="{% url 'website:home' %}">Home</a></li> + <li><a href="{% url 'website:userregister' %}">Sign Up</a></li> + </ul> + </div> + <!--/.nav-collapse --> + </div> + </div> +</div> +{% endblock %} + +{% block content %} +<div id="contact" name="contact"> + <div class="container"> + <div class="row white"> + {% if login_required %} + <div class="alert alert-success" role="alert"> + <button type="button" class="close" data-dismiss="alert" aria-label="Close"> + <span aria-hidden="true">×</span> + </button> + <p>Successfully Registered ! Kindly login to proceed.</p> + </div> + {% endif %} + <h2 class="centered">Login</h2> + <hr> + <div class="col-md-4"> + </div> + <div class="col-md-4"> + <form action="" method="POST"> + {{ form.as_p }} + <button class="btn btn btn-primary" type="submit">Login</button> + <a href="{% url 'website:userregister' %}" class="btn btn btn-primary">Sign Up</a> + {% csrf_token %} + </form> + </div> + </div> + </div> +</div> +{% endblock %} diff --git a/website/templates/user-register.html b/website/templates/user-register.html new file mode 100644 index 0000000..53cf8a6 --- /dev/null +++ b/website/templates/user-register.html @@ -0,0 +1,43 @@ +{% extends 'base.html' %} +{% load static %} + +{% block navbar %} +<div id="navbar-main"> + <!-- Fixed navbar --> + <div class="navbar navbar-inverse navbar-fixed-top"> + <div class="container"> + <div class="navbar-header"> + <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> + <a class="navbar-brand" href="{% url 'website:home' %}">SciPy India 2015 </a> + </div> + <div class="navbar-collapse collapse"> + <ul class="nav navbar-nav navbar-right"> + <li><a href="{% url 'website:home' %}">Home</a></li> + <li><a href="{% url 'website:userlogin' %}">Login</a></li> + </ul> + </div> + <!--/.nav-collapse --> + </div> + </div> +</div> +{% endblock %} + +{% block content %} +<div id="contact" name="contact"> + <div class="container"> + <div class="row white"> + <h2 class="centered">Sign Up</h2> + <hr> + <div class="col-md-4"> + </div> + <div class="col-md-4"> + <form action="" method="POST"> + {{ form.as_p }} + <button class="btn btn btn-primary" type="submit">SignUp</button> + {% csrf_token %} + </form> + </div> + </div> + </div> +</div> +{% endblock %} diff --git a/website/urls.py b/website/urls.py index d3e2508..324befe 100644 --- a/website/urls.py +++ b/website/urls.py @@ -3,6 +3,8 @@ from django.conf.urls import patterns, include, url urlpatterns = patterns('', url(r'^$', 'website.views.home', name='home'), - url(r'^cfp$', 'website.views.cfp', name='cfp'), - url(r'^submit-cfp$', 'website.views.submitcfp', name='submitcfp'), + url(r'^cfp/$', 'website.views.cfp', name='cfp'), + url(r'^submit-cfp/$', 'website.views.submitcfp', name='submitcfp'), + url(r'^accounts/register/$', 'website.views.userregister', name='userregister'), + url(r'^accounts/login/$', 'website.views.userlogin', name='userlogin'), ) diff --git a/website/views.py b/website/views.py index c793c09..a85536d 100644 --- a/website/views.py +++ b/website/views.py @@ -13,11 +13,53 @@ from django.contrib.auth.decorators import login_required from django.core.mail import send_mail -from website.forms import ProposalForm +from website.forms import ProposalForm, UserRegisterForm, UserLoginForm from website.models import Proposal, Comments from social.apps.django_app.default.models import UserSocialAuth +def userregister(request): + context = {} + context.update(csrf(request)) + if request.user.is_anonymous(): + if request.method == 'POST': + form = UserRegisterForm(request.POST) + if form.is_valid(): + form.save() + return HttpResponseRedirect('/accounts/login') + else: + context.update(csrf(request)) + context['form'] = form + return render_to_response('user-register.html', context) + else: + form = UserRegisterForm() + context.update(csrf(request)) + context['form'] = form + return render_to_response('user-register.html', context) + else: + context['user'] = request.user + return HttpResponseRedirect('/cfp') + + +def userlogin(request): + context = {} + context.update(csrf(request)) + if request.method == "POST": + form = UserLoginForm(request.POST) + if form.is_valid(): + user = form.cleaned_data + login(request, user) + context['user'] = user + return render_to_response('cfp.html', context) + else: + context['form'] = form + return render_to_response('user-login.html', context) + else: + form = UserLoginForm() + context['form'] = form + return render_to_response('user-login.html', context) + + def home(request): context = {} context.update(csrf(request)) |