Moved expenses claim development to its own feature branch
This commit is contained in:
@@ -1,3 +0,0 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
@@ -1,5 +0,0 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class ExpensesClaimConfig(AppConfig):
|
||||
name = 'expenses_claim'
|
||||
@@ -1,30 +0,0 @@
|
||||
"""Expenses claim form."""
|
||||
|
||||
from django import forms
|
||||
from string import ascii_uppercase
|
||||
|
||||
|
||||
class ExpensesClaim(forms.Form):
|
||||
"""Expenses claim form"""
|
||||
|
||||
name = forms.CharField(label='Nimi', max_length=100)
|
||||
iban = forms.CharField(label='IBAN', max_length=100)
|
||||
amount = forms.DecimalField(label="Summa", decimal_places=2)
|
||||
|
||||
def clean_iban(self):
|
||||
"""Validate IBAN."""
|
||||
data = self.cleaned_data['iban']
|
||||
# Remove spaces.
|
||||
data = data.replace(" ", "")
|
||||
# Move first 4 symbols to the end of the string.
|
||||
data = data[4:] + data[0:4]
|
||||
LETTERS = {letter: str(index) for index,
|
||||
letter in enumerate(ascii_uppercase, start=10)}
|
||||
data = data.upper()
|
||||
# Replace all letters with numbers, so that A=10, B=11, ..., Z=35.
|
||||
data = [LETTERS[char] if char in LETTERS else char for char in data]
|
||||
data = ''.join(data)
|
||||
# If data modulo 97 != 1 the IBAN number is invalid.
|
||||
if int(data) % 97 != 1:
|
||||
raise forms.ValidationError("Invalid IBAN number!")
|
||||
return data
|
||||
@@ -1,3 +0,0 @@
|
||||
from django.db import models
|
||||
|
||||
# Create your models here.
|
||||
@@ -1,7 +0,0 @@
|
||||
Dis is claim
|
||||
|
||||
<form action="" method="post">
|
||||
{{ form }}
|
||||
<input type="submit" value="Submit">
|
||||
{% csrf_token %}
|
||||
</form>
|
||||
@@ -1,54 +0,0 @@
|
||||
from django.test import TestCase
|
||||
from .forms import ExpensesClaim
|
||||
|
||||
|
||||
class ExpensesClaimTest(TestCase):
|
||||
"""Test expenses claim form."""
|
||||
|
||||
def test_valid_data1(self):
|
||||
form = ExpensesClaim({
|
||||
'name': "John Doe",
|
||||
'iban': "FI37 1590 3000 0007 76",
|
||||
'amount': 12.54
|
||||
})
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_valid_data2(self):
|
||||
form = ExpensesClaim({
|
||||
'name': "John Cena",
|
||||
'iban': "AL35202111090000000001234567",
|
||||
'amount': 12
|
||||
})
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_valid_data3(self):
|
||||
form = ExpensesClaim({
|
||||
'name': "John Wayne",
|
||||
'iban': "BR1500000000000010932840814P2",
|
||||
'amount': 12.0
|
||||
})
|
||||
self.assertTrue(form.is_valid())
|
||||
|
||||
def test_invalid_iban(self):
|
||||
form = ExpensesClaim({
|
||||
'name': "John Lennon",
|
||||
'iban': "FI3734 1590 3000 0007 76",
|
||||
'amount': 12.54
|
||||
})
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_invalid_amount(self):
|
||||
form = ExpensesClaim({
|
||||
'name': "John Kenedy",
|
||||
'iban': "FI37 1590 3000 0007 76",
|
||||
'amount': "asd"
|
||||
})
|
||||
self.assertFalse(form.is_valid())
|
||||
|
||||
def test_invalid_amount_decimal_places(self):
|
||||
form = ExpensesClaim({
|
||||
'name': "John Travolta",
|
||||
'iban': "FI37 1590 3000 0007 76",
|
||||
'amount': 12.544
|
||||
})
|
||||
self.assertFalse(form.is_valid())
|
||||
@@ -1,9 +0,0 @@
|
||||
"""Expenses claim urls."""
|
||||
|
||||
from django.conf.urls import url
|
||||
from .views import claim
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^new', claim)
|
||||
]
|
||||
@@ -1,22 +0,0 @@
|
||||
"""Expenses claim views."""
|
||||
|
||||
from django.shortcuts import render
|
||||
from django.views.decorators.http import require_http_methods
|
||||
from django.http import HttpResponse
|
||||
from .forms import ExpensesClaim
|
||||
|
||||
|
||||
# Allow only GET or POST
|
||||
@require_http_methods(["GET", "POST"])
|
||||
def claim(request):
|
||||
"""Render expenses claim form."""
|
||||
|
||||
if request.method == 'POST':
|
||||
form = ExpensesClaim(request.POST)
|
||||
if form.is_valid():
|
||||
return HttpResponse()
|
||||
|
||||
elif request.method == 'GET':
|
||||
form = ExpensesClaim()
|
||||
|
||||
return render(request, 'claim.html', {'form': form})
|
||||
@@ -105,7 +105,6 @@ INSTALLED_APPS = [
|
||||
'phonenumber_field',
|
||||
'import_export',
|
||||
'django_filters',
|
||||
'expenses_claim',
|
||||
]
|
||||
|
||||
IMPORT_EXPORT_USE_TRANSACTIONS = True
|
||||
|
||||
@@ -27,7 +27,6 @@ import webapp.urls
|
||||
import infoscreen.urls
|
||||
import members.urls
|
||||
import coffee_scale.urls
|
||||
import expenses_claim.urls
|
||||
|
||||
favicon_view = RedirectView.as_view(
|
||||
url='static/img/favicon.png', permanent=True)
|
||||
@@ -40,7 +39,6 @@ urlpatterns = [
|
||||
url(r'^coffee/', include('coffee_scale.urls')),
|
||||
url(r'^kaehmy/', include('kaehmy.urls')),
|
||||
url(r'^ohlhafv/', include('ohlhafv.urls')),
|
||||
url(r'^expenses/', include('expenses_claim.urls')),
|
||||
|
||||
# favourite icon
|
||||
url(r'^favicon\.ico$', favicon_view),
|
||||
|
||||
Reference in New Issue
Block a user