Adds create user view, minor fixes

This commit is contained in:
nikolark committed 2014-02-02 16:52:15 +01:00
1 parent 7f84c936ab
commit b7b0238871
13 files changed
+2331 -2228

No files matched your search

+27
View File
@@ -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
+1
View File
@@ -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'),
) )
+5
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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() {
+1 -1
View File
@@ -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() {
+1
View File
@@ -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
View File
File diff suppressed because it is too large. Load diff
+30 -9
View File
@@ -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>
+1
View File
@@ -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>
+5 -5
View File
@@ -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 %}
+40
View File
@@ -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 %}