Adds create user view, minor fixes
This commit is contained in:
1 parent
7f84c936ab
commit
b7b0238871
13 files changed
+2331
-2228
No files matched your search
@@ -1,9 +1,12 @@
|
|||||||
# coding: utf-8
|
# coding: utf-8
|
||||||
from django import forms
|
from django import forms
|
||||||
|
from django.contrib.auth.models import User
|
||||||
from django.utils.translation import ugettext as _
|
from django.utils.translation import ugettext as _
|
||||||
|
|
||||||
from models import *
|
from models import *
|
||||||
|
|
||||||
|
import utils
|
||||||
|
|
||||||
class OrderForm(forms.ModelForm):
|
class OrderForm(forms.ModelForm):
|
||||||
def clean_customer(self):
|
def clean_customer(self):
|
||||||
if self.cleaned_data['customer'].get_profile().balance <= 0:
|
if self.cleaned_data['customer'].get_profile().balance <= 0:
|
||||||
@@ -24,3 +27,27 @@ class DepositForm(forms.ModelForm):
|
|||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = Transaction
|
model = Transaction
|
||||||
|
|
||||||
|
class SimpleCreateUserForm(forms.Form):
|
||||||
|
first_name = forms.CharField(required=True, label="Fornavn")
|
||||||
|
last_name = forms.CharField(required=True, label="Etternavn")
|
||||||
|
email = forms.EmailField(required=True, label="E-post")
|
||||||
|
facebook_username = forms.CharField(required=False, label="Facebook-brukernavn")
|
||||||
|
|
||||||
|
def _get_facebook_url(self, facebook_username):
|
||||||
|
return "https://graph.facebook.com/{0}/picture".format(facebook_username)
|
||||||
|
|
||||||
|
def save(self, commit=True):
|
||||||
|
username = utils.format_username(self.cleaned_data['first_name'], self.cleaned_data['last_name'])
|
||||||
|
user = User.objects.create_user(username, email=self.cleaned_data['email'])
|
||||||
|
user.first_name = self.cleaned_data['first_name']
|
||||||
|
user.last_name = self.cleaned_data['last_name']
|
||||||
|
|
||||||
|
profile = user.get_profile()
|
||||||
|
profile.image = self._get_facebook_url(self.cleaned_data['facebook_username'])
|
||||||
|
|
||||||
|
if commit:
|
||||||
|
user.save()
|
||||||
|
profile.save()
|
||||||
|
|
||||||
|
return user
|
||||||
@@ -13,4 +13,5 @@ urlpatterns = patterns('main.views',
|
|||||||
url(r'^stats/products/(?P<product>[0-9]+)/$', 'stats_products', name='stats-product'),
|
url(r'^stats/products/(?P<product>[0-9]+)/$', 'stats_products', name='stats-product'),
|
||||||
url(r'^products/(?P<product_id>[0-9]+)/$', 'products', name='json-product'),
|
url(r'^products/(?P<product_id>[0-9]+)/$', 'products', name='json-product'),
|
||||||
url(r'^products/$', 'products', name='json-products'),
|
url(r'^products/$', 'products', name='json-products'),
|
||||||
|
url(r'^user/create/$', 'create_user', name='create-user'),
|
||||||
)
|
)
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
def format_username(firstname, lastname):
|
||||||
|
first = firstname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
||||||
|
last = lastname.lower().strip().replace(" ", "")[:6].encode('ascii', 'ignore')
|
||||||
|
|
||||||
|
return "{}{}".format(first, last)
|
||||||
+17
-1
@@ -10,7 +10,7 @@ from django.contrib.auth.decorators import login_required
|
|||||||
from django.contrib.auth.forms import AuthenticationForm
|
from django.contrib.auth.forms import AuthenticationForm
|
||||||
from django.core.urlresolvers import reverse
|
from django.core.urlresolvers import reverse
|
||||||
from django.http import HttpResponse, HttpResponseRedirect
|
from django.http import HttpResponse, HttpResponseRedirect
|
||||||
from django.shortcuts import render_to_response, get_object_or_404
|
from django.shortcuts import render_to_response, render, get_object_or_404, redirect
|
||||||
from django.template import RequestContext
|
from django.template import RequestContext
|
||||||
from django.forms.formsets import formset_factory
|
from django.forms.formsets import formset_factory
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
@@ -267,3 +267,19 @@ def users_format_js(users):
|
|||||||
users_js = u"[{0}]".format(u",".join(users_js))
|
users_js = u"[{0}]".format(u",".join(users_js))
|
||||||
return users_js
|
return users_js
|
||||||
|
|
||||||
|
def create_user(request):
|
||||||
|
if request.method == "POST":
|
||||||
|
form = SimpleCreateUserForm(data=request.POST)
|
||||||
|
if form.is_valid():
|
||||||
|
user = form.save()
|
||||||
|
|
||||||
|
messages.success(request, "Hurra! {0} {1} er lagt til".format(user.first_name, user.last_name))
|
||||||
|
return redirect('create-user')
|
||||||
|
|
||||||
|
else:
|
||||||
|
messages.error(request, '')
|
||||||
|
form = SimpleCreateUserForm(data=request.POST)
|
||||||
|
else:
|
||||||
|
form = SimpleCreateUserForm()
|
||||||
|
|
||||||
|
return render(request, 'registration/create_user.html', locals())
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
Django==1.4.10
|
Django==1.4.10
|
||||||
MySQL-python==1.2.4
|
MySQL-python==1.2.4
|
||||||
Pillow==2.2.1
|
Pillow==2.2.1
|
||||||
|
django-widget-tweaks==1.3
|
||||||
@@ -32,7 +32,7 @@ $(document).ready(function() {
|
|||||||
/* Customer search */
|
/* Customer search */
|
||||||
//$('.typeahead').typeahead();
|
//$('.typeahead').typeahead();
|
||||||
$('#id_customer_typeahead').keyup(function(event) {
|
$('#id_customer_typeahead').keyup(function(event) {
|
||||||
filter_customers(event.srcElement.value);
|
filter_customers(event.target.value);
|
||||||
});
|
});
|
||||||
/* Customer selection */
|
/* Customer selection */
|
||||||
$("li.customer").click( function() {
|
$("li.customer").click( function() {
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ $(document).ready(function() {
|
|||||||
/* Customer search */
|
/* Customer search */
|
||||||
//$('.typeahead').typeahead();
|
//$('.typeahead').typeahead();
|
||||||
$('#id_customer_typeahead').keyup(function(event) {
|
$('#id_customer_typeahead').keyup(function(event) {
|
||||||
filter_customers(event.srcElement.value);
|
filter_customers(event.target.value);
|
||||||
});
|
});
|
||||||
/* Customer selection */
|
/* Customer selection */
|
||||||
$("li.customer").click( function() {
|
$("li.customer").click( function() {
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ body {
|
|||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
text-align: center;
|
text-align: center;
|
||||||
width: 79px;
|
width: 79px;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: #dddddd;
|
background-color: #dddddd;
|
||||||
|
|||||||
+2201
-2211
File diff suppressed because it is too large.
Load diff
+30
-9
@@ -1,4 +1,5 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
{% block header %}
|
{% block header %}
|
||||||
{% include "nav.html" with active="deposit" %}
|
{% include "nav.html" with active="deposit" %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
@@ -16,13 +17,22 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
<form id="order" method="post" class="form-stacked" autocomplete="off">
|
<form id="order" method="post" class="form-stacked" autocomplete="off">
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
<fieldset>
|
<section id="customer">
|
||||||
<section id="customer" class="row">
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
<h2>Hvem skal sette inn penger?</h2>
|
<h2>Hvem skal sette inn penger?</h2>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
<!-- Typeahead customer field -->
|
<!-- Typeahead customer field -->
|
||||||
<input name="customer_name" id="id_customer_typeahead" type="text" value="" data-provide="typeahead" data-source="{{users_js}}" />
|
<div class="col-md-3">
|
||||||
|
<input name="customer_name" id="id_customer_typeahead" type="text" value="" data-provide="typeahead" data-source="{{users_js}}" class="form-control" /><br />
|
||||||
<!-- Actual customer select field (hidden) -->
|
<!-- Actual customer select field (hidden) -->
|
||||||
<div style="display:none;">{{form.user }}</div>
|
<div style="display:none;">{{form.user }}</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
<ul class="well">
|
<ul class="well">
|
||||||
{% for user in users %}
|
{% for user in users %}
|
||||||
<li class="customer">
|
<li class="customer">
|
||||||
@@ -37,16 +47,27 @@
|
|||||||
</li>
|
</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
<section id="amount">
|
<section id="amount">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12">
|
||||||
<h2>Hvor mye?</h2>
|
<h2>Hvor mye?</h2>
|
||||||
{{form.amount}}
|
</div>
|
||||||
{{form.amount.errors}}
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
{{form.amount|add_class:"form-control"}}
|
||||||
|
{{form.amount.errors}}<br />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
</fieldset>
|
<div class="row">
|
||||||
<div class="form-actions">
|
<div class="col-md-12">
|
||||||
<button type="submit" class="btn btn-lg btn-primary" name="submit_order">Sett inn</button>
|
<button type="submit" class="btn btn-lg btn-primary" name="submit_order">Sett inn</button>
|
||||||
<a href="{% url register %}" class="btn">Avbryt</a>
|
<a href="{% url register %}" class="btn btn-default">Avbryt</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</section>
|
</section>
|
||||||
|
|||||||
@@ -18,6 +18,7 @@
|
|||||||
<li class="{% if active = "log" %}active{% endif %}"><a href="/log"> Vis logg</a></li>
|
<li class="{% if active = "log" %}active{% endif %}"><a href="/log"> Vis logg</a></li>
|
||||||
<li class="{% if active = "stats" %}active{% endif %}"><a href="/stats"> Vis statistikk</a></li>
|
<li class="{% if active = "stats" %}active{% endif %}"><a href="/stats"> Vis statistikk</a></li>
|
||||||
{% if request.user.is_superuser %}
|
{% if request.user.is_superuser %}
|
||||||
|
<li class="{% if active = "create_user" %}active{% endif %}"><a href="{% url create-user %}">Ny bruker</a></li>
|
||||||
<li><a href="/admin">Administrasjon</a></li>
|
<li><a href="/admin">Administrasjon</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
|
|||||||
@@ -25,12 +25,12 @@
|
|||||||
<section id="customer">
|
<section id="customer">
|
||||||
{% if users %}
|
{% if users %}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12">
|
<div class="col-md-12">
|
||||||
<h2 title="Sortert etter hvem som kjøpte noe sist.">Hvem kjøper?</h2>
|
<h2 title="Sortert etter hvem som kjøpte noe sist.">Hvem kjøper?</h2>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-3">
|
<div class="col-md-3">
|
||||||
<!-- Typeahead customer field -->
|
<!-- Typeahead customer field -->
|
||||||
<input name="customer_name" type="text" id="id_customer_typeahead" value="" data-provide="typeahead" data-source="{{users_js}}" class="form-control" />
|
<input name="customer_name" type="text" id="id_customer_typeahead" value="" data-provide="typeahead" data-source="{{users_js}}" class="form-control" />
|
||||||
<!-- Actual customer select field (hidden) -->
|
<!-- Actual customer select field (hidden) -->
|
||||||
@@ -39,7 +39,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12">
|
<div class="col-md-12">
|
||||||
<ul class="well">
|
<ul class="well">
|
||||||
{% for user in users %}<li class="customer{% if user.get_profile.last_purchase_date < half_a_year_ago %} infrequent hidden{% endif %}">
|
{% for user in users %}<li class="customer{% if user.get_profile.last_purchase_date < half_a_year_ago %} infrequent hidden{% endif %}">
|
||||||
{% if user.get_profile.image %}
|
{% if user.get_profile.image %}
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
</div>
|
</div>
|
||||||
{%else%}
|
{%else%}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-3">
|
<div class="col-md-3">
|
||||||
<h2>Hvem kjøper?</h2>
|
<h2>Hvem kjøper?</h2>
|
||||||
<div class="alert alert-error">Ingen har positiv saldo i BBS.</div><a href="{% url deposit %}" class="btn">Sett inn penger</a>
|
<div class="alert alert-error">Ingen har positiv saldo i BBS.</div><a href="{% url deposit %}" class="btn">Sett inn penger</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -68,7 +68,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section id="products" class="row">
|
<section id="products" class="row">
|
||||||
<div class="col-xs-12">
|
<div class="col-md-12">
|
||||||
<h2>Kjøper hva?</h2>
|
<h2>Kjøper hva?</h2>
|
||||||
<ul class="well">
|
<ul class="well">
|
||||||
{% for product in products %}
|
{% for product in products %}
|
||||||
|
|||||||
@@ -0,0 +1,40 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
{% load widget_tweaks %}
|
||||||
|
|
||||||
|
{% block title %}Lag ny bruker {% endblock %}
|
||||||
|
|
||||||
|
{% block header %}
|
||||||
|
{% include "nav.html" with active="create_user" %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
<section class="row">
|
||||||
|
<div class="col-md-4">
|
||||||
|
{% for message in messages %}
|
||||||
|
<div {% if message.tags %} class="alert alert-{{ message.tags }}"{% endif %}>{{ message }}<a class="close" data-dismiss="alert">×</a></div>
|
||||||
|
{% endfor %}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<section class="row">
|
||||||
|
<div class="col-md-5">
|
||||||
|
<h1>Legg til ny bruker</h1>
|
||||||
|
{% if form.errors %}
|
||||||
|
<p>{{ form.errors }}.</p>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
|
<form method="post" role="form">
|
||||||
|
{% csrf_token %}
|
||||||
|
|
||||||
|
<div class="form-group">
|
||||||
|
<label for="id_first_name">{{ form.first_name.label }}</label>{{ form.first_name|add_class:"form-control"}}
|
||||||
|
<label for="id_last_name">{{ form.last_name.label }}</label>{{ form.last_name|add_class:"form-control"}}
|
||||||
|
<label for="id_email">{{ form.email.label }}</label>{{ form.email|add_class:"form-control"}}
|
||||||
|
<label for="id_facebook_username">{{ form.facebook_username.label }}</label>{{ form.facebook_username|add_class:"form-control"|attr:"placeholder: F.eks simbras"}}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<input type="submit" value="Legg til" class="btn btn-primary btn-lg" />
|
||||||
|
<a href="{% url register %}" class="btn btn-default" />Tilbake</a>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
{% endblock %}
|
||||||
Reference in new issue
Block a user