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
+2354 -2251

No files matched your search

+27
View File
@@ -1,9 +1,12 @@
# coding: utf-8
from django import forms
from django.contrib.auth.models import User
from django.utils.translation import ugettext as _
from models import *
import utils
class OrderForm(forms.ModelForm):
def clean_customer(self):
if self.cleaned_data['customer'].get_profile().balance <= 0:
@@ -24,3 +27,27 @@ class DepositForm(forms.ModelForm):
class Meta:
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'^products/(?P<product_id>[0-9]+)/$', 'products', name='json-product'),
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.core.urlresolvers import reverse
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.forms.formsets import formset_factory
from django.contrib import messages
@@ -267,3 +267,19 @@ def users_format_js(users):
users_js = u"[{0}]".format(u",".join(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
MySQL-python==1.2.4
Pillow==2.2.1
django-widget-tweaks==1.3
+1 -1
View File
@@ -32,7 +32,7 @@ $(document).ready(function() {
/* Customer search */
//$('.typeahead').typeahead();
$('#id_customer_typeahead').keyup(function(event) {
filter_customers(event.srcElement.value);
filter_customers(event.target.value);
});
/* Customer selection */
$("li.customer").click( function() {
+1 -1
View File
@@ -47,7 +47,7 @@ $(document).ready(function() {
/* Customer search */
//$('.typeahead').typeahead();
$('#id_customer_typeahead').keyup(function(event) {
filter_customers(event.srcElement.value);
filter_customers(event.target.value);
});
/* Customer selection */
$("li.customer").click( function() {
+1
View File
@@ -21,6 +21,7 @@ body {
padding-top: 10px;
text-align: center;
width: 79px;
overflow: hidden;
&:hover {
background-color: #dddddd;
+2202 -2212
View File
File diff suppressed because it is too large. Load diff
+52 -31
View File
@@ -1,4 +1,5 @@
{% extends "base.html" %}
{% load widget_tweaks %}
{% block header %}
{% include "nav.html" with active="deposit" %}
{% endblock %}
@@ -16,37 +17,57 @@
{% endif %}
<form id="order" method="post" class="form-stacked" autocomplete="off">
{% csrf_token %}
<fieldset>
<section id="customer" class="row">
<h2>Hvem skal sette inn penger?</h2>
<!-- Typeahead customer field -->
<input name="customer_name" id="id_customer_typeahead" type="text" value="" data-provide="typeahead" data-source="{{users_js}}" />
<!-- Actual customer select field (hidden) -->
<div style="display:none;">{{form.user }}</div>
<ul class="well">
{% for user in users %}
<li class="customer">
{% if user.get_profile.image %}
  <img class="profile" src="{{ user.get_profile.image }}" alt="Profile picture"/><br />
{% else %}
  <img class="profile" src="{{ STATIC_URL }}img/unknown_person.png" alt="Profile picture" /><br />
{% endif %}
<span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span><br />
<span class="balance">{{ user.get_profile.balance }}</span>
<span class="id" style="display:none;">{{ user.id }}</span>
</li>
{% endfor %}
</ul>
</section>
<section id="amount">
<h2>Hvor mye?</h2>
{{form.amount}}
{{form.amount.errors}}
</section>
</fieldset>
<div class="form-actions">
  <button type="submit" class="btn btn-lg btn-primary" name="submit_order">Sett inn</button>
  <a href="{% url register %}" class="btn">Avbryt</a>
<section id="customer">
<div class="row">
<div class="col-md-12">
<h2>Hvem skal sette inn penger?</h2>
</div>
</div>
<div class="row">
<!-- Typeahead customer field -->
<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) -->
<div style="display:none;">{{form.user }}</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<ul class="well">
{% for user in users %}
<li class="customer">
{% if user.get_profile.image %}
  <img class="profile" src="{{ user.get_profile.image }}" alt="Profile picture"/><br />
{% else %}
  <img class="profile" src="{{ STATIC_URL }}img/unknown_person.png" alt="Profile picture" /><br />
{% endif %}
<span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span><br />
<span class="balance">{{ user.get_profile.balance }}</span>
<span class="id" style="display:none;">{{ user.id }}</span>
</li>
{% endfor %}
</ul>
</div>
</div>
</section>
<section id="amount">
<div class="row">
<div class="col-md-12">
<h2>Hvor mye?</h2>
</div>
</div>
<div class="row">
<div class="col-md-4">
{{form.amount|add_class:"form-control"}}
{{form.amount.errors}}<br />
</div>
</div>
</section>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-lg btn-primary" name="submit_order">Sett inn</button>
  <a href="{% url register %}" class="btn btn-default">Avbryt</a>
</div>
</div>
</form>
</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 = "stats" %}active{% endif %}"><a href="/stats"> Vis statistikk</a></li>
{% 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>
{% endif %}
</ul>
+5 -5
View File
@@ -25,12 +25,12 @@
<section id="customer">
{% if users %}
<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>
</div>
</div>
<div class="row">
<div class="col-xs-3">
<div class="col-md-3">
<!-- Typeahead customer field -->
<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) -->
@@ -39,7 +39,7 @@
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="col-md-12">
<ul class="well">
{% 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 %}
@@ -59,7 +59,7 @@
</div>
{%else%}
<div class="row">
<div class="col-xs-3">
<div class="col-md-3">
<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>
@@ -68,7 +68,7 @@
</section>
<section id="products" class="row">
<div class="col-xs-12">
<div class="col-md-12">
<h2>Kjøper hva?</h2>
<ul class="well">
{% 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 %}