diff --git a/apps/profile/views.py b/apps/profile/views.py index 748fe5743..7b85727a4 100644 --- a/apps/profile/views.py +++ b/apps/profile/views.py @@ -2,7 +2,9 @@ import stripe import datetime from django.contrib.auth.decorators import login_required from django.views.decorators.http import require_POST +from django.views.decorators.csrf import csrf_protect from django.contrib.auth import logout as logout_user +from django.contrib.auth import login as login_user from django.http import HttpResponse, HttpResponseRedirect from django.contrib.sites.models import Site from django.contrib.auth.models import User @@ -16,6 +18,7 @@ from apps.profile.models import Profile, PaymentHistory, RNewUserQueue from apps.reader.models import UserSubscription, UserSubscriptionFolders from apps.profile.forms import StripePlusPaymentForm, PLANS, DeleteAccountForm from apps.profile.forms import ForgotPasswordForm, ForgotPasswordReturnForm, AccountSettingsForm +from apps.reader.forms import SignupForm from apps.social.models import MSocialServices, MActivity, MSocialProfile from utils import json_functions as json from utils.user_functions import ajax_login_required @@ -76,6 +79,24 @@ def get_preference(request): response = dict(code=code, payload=payload) return response + +@csrf_protect +def signup(request): + form = SignupForm() + + if request.method == "POST": + form = SignupForm(data=request.POST) + if form.is_valid(): + new_user = form.save() + login_user(request, new_user) + logging.user(new_user, "~FG~SB~BBNEW SIGNUP~FW") + new_user.profile.activate_free() + return HttpResponseRedirect(request.POST['next']) + + return render_to_response('accounts/signup.html', { + 'form': form, + 'next': request.REQUEST.get('next', "") + }, context_instance=RequestContext(request)) @ajax_login_required @require_POST diff --git a/apps/reader/forms.py b/apps/reader/forms.py index dea7ae689..98c61aba0 100644 --- a/apps/reader/forms.py +++ b/apps/reader/forms.py @@ -77,7 +77,7 @@ class SignupForm(forms.Form): 'invalid': "Your username may only contain letters and numbers." }) email = forms.EmailField(widget=forms.TextInput(attrs={'maxlength': 75, 'class': 'NB-input'}), - label=_(u'email address'), + label=_(u'email'), required=True, error_messages={'required': 'Please enter an email.'}) password = forms.CharField(widget=forms.PasswordInput(attrs={'class': 'NB-input'}), diff --git a/media/css/reader.css b/media/css/reader.css index 38056c436..60a68fb6f 100644 --- a/media/css/reader.css +++ b/media/css/reader.css @@ -10225,7 +10225,7 @@ form.opml_import_form input { margin: 24px auto; } .NB-static-login .NB-static-form { - width: 360px; + width: 320px; } .NB-static-oauth .NB-static-form-label label { width: 120px; @@ -10259,7 +10259,11 @@ form.opml_import_form input { font-weight: bold; clear: both; } - +.NB-static-form-alttext { + margin: 24px 0 0 120px; + padding-top: 12px; + border-top: 1px solid rgba(0, 0, 0, .1); +} /* ======================== */ /* = Feed Options Popover = */ diff --git a/templates/accounts/login.html b/templates/accounts/login.html index bc078ba88..0752526d3 100644 --- a/templates/accounts/login.html +++ b/templates/accounts/login.html @@ -38,6 +38,7 @@ +

Create an account diff --git a/templates/accounts/signup.html b/templates/accounts/signup.html new file mode 100644 index 000000000..c009e8cc3 --- /dev/null +++ b/templates/accounts/signup.html @@ -0,0 +1,55 @@ +{% extends 'base.html' %} + +{% load typogrify_tags utils_tags zebra_tags %} + +{% block bodyclass %}NB-static NB-static-oauth NB-static-login{% endblock %} +{% block extra_head_js %} + + + + {% include_stylesheets "common" %} +{% endblock %} + +{% block title %}Create an Account{% endblock %} + +{% block content %} + +

+ Create an Account +
+ +
+
+ {% if form.errors %} + {% if form.errors.username %} +

{{ form.errors.username.as_text }}

+ {% else %}{% if form.errors.email %} +

{{ form.errors.email.as_text }}

+ {% else %} +

{{ form.non_field_errors.as_text }}

+ {% endif %}{% endif %} + {% else %}{% if next %} +

Please create an account to continue.

+ {% endif %}{% endif %} + + {% csrf_token %} +
{{ form.username.label_tag }}
+
{{ form.username }}
+
{{ form.password.label_tag }}
+
{{ form.password }}
+
{{ form.email.label_tag }}
+
{{ form.email }}
+ + + +

Login to your account + +

+ +
+ +{% endblock %} \ No newline at end of file diff --git a/urls.py b/urls.py index 05aadff97..e73d1ed77 100644 --- a/urls.py +++ b/urls.py @@ -3,6 +3,7 @@ from django.conf import settings from apps.reader import views as reader_views from apps.social import views as social_views from apps.static import views as static_views +from apps.profile import views as profile_views from django.contrib import admin admin.autodiscover() @@ -53,6 +54,7 @@ urlpatterns = patterns('', url(r'^account/login/?$', 'django.contrib.auth.views.login', {'template_name': 'accounts/login.html'}, name='login'), + url(r'^account/signup/?$', profile_views.signup, name='signup'), url(r'^account/logout/?$', 'django.contrib.auth.views.logout', {'next_page': '/'}, name='logout'),