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
|
||||
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
|
||||
@@ -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'),
|
||||
)
|
||||
@@ -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.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,3 +1,4 @@
|
||||
Django==1.4.10
|
||||
MySQL-python==1.2.4
|
||||
Pillow==2.2.1
|
||||
django-widget-tweaks==1.3
|
||||
@@ -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() {
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -21,6 +21,7 @@ body {
|
||||
padding-top: 10px;
|
||||
text-align: center;
|
||||
width: 79px;
|
||||
overflow: hidden;
|
||||
|
||||
&:hover {
|
||||
background-color: #dddddd;
|
||||
|
||||
+2201
-2211
File diff suppressed because it is too large.
Load diff
+30
-9
@@ -1,4 +1,5 @@
|
||||
{% extends "base.html" %}
|
||||
{% load widget_tweaks %}
|
||||
{% block header %}
|
||||
{% include "nav.html" with active="deposit" %}
|
||||
{% endblock %}
|
||||
@@ -16,13 +17,22 @@
|
||||
{% endif %}
|
||||
<form id="order" method="post" class="form-stacked" autocomplete="off">
|
||||
{% csrf_token %}
|
||||
<fieldset>
|
||||
<section id="customer" class="row">
|
||||
<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 -->
|
||||
<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) -->
|
||||
<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">
|
||||
@@ -37,16 +47,27 @@
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
<section id="amount">
|
||||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
<h2>Hvor mye?</h2>
|
||||
{{form.amount}}
|
||||
{{form.amount.errors}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
{{form.amount|add_class:"form-control"}}
|
||||
{{form.amount.errors}}<br />
|
||||
</div>
|
||||
</div>
|
||||
</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>
|
||||
<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>
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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