Add autocomplete widget and fix some errors

This commit is contained in:
Jan Tuomi
2017-09-25 20:45:13 +03:00
parent 91a0694ae5
commit 7ce28c3a48
9 changed files with 55 additions and 3 deletions
+7 -1
View File
@@ -1,13 +1,14 @@
"""File containing member forms."""
from django import forms
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
from members.models import Member, Payment, Request
import csv
from django.utils import timezone
import logging
from dal import autocomplete
class CSVValidationError(Exception):
@@ -88,6 +89,11 @@ class MemberForm(forms.ModelForm):
class PaymentForm(forms.ModelForm):
"""Payment model form."""
member = forms.ModelChoiceField(
queryset=Member.objects.all(),
widget=autocomplete.ModelSelect2(url='member-autocomplete')
)
class Meta:
"""Meta for Payment model form."""
+8
View File
@@ -4,6 +4,11 @@
{% load i18n %}
{% block content %}
<script
src="https://code.jquery.com/jquery-3.2.1.min.js"
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
crossorigin="anonymous"></script>
<div>
<h3>{% trans "Add payment" %}</h3>
@@ -18,4 +23,7 @@
</form>
</div>
</div>
{{ form.media }}
{% endblock content %}
+11
View File
@@ -1,6 +1,7 @@
"""File containing Member application URLs."""
from django.conf.urls import url
from django.contrib.auth.decorators import login_required, permission_required
from django.views.generic.base import RedirectView
# members
@@ -20,6 +21,9 @@ from members.views import member_delete
from members.views import payment_list
from members.views import add_many_confirm
# autocomplete view
from members.views import MemberAutoComplete
# rest api
from members.views import MemberDetail
@@ -110,4 +114,11 @@ urlpatterns = [
# rest api url
url(r'^api/members/(?P<pk>\d+)$', MemberDetail.as_view()),
# member select autocomplete view
url(
r'^member-autocomplete/$',
permission_required('members.change_member')(MemberAutoComplete.as_view()),
name='member-autocomplete',
),
]
+3
View File
@@ -8,6 +8,9 @@ from django.conf import settings
from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict
import logging
import html
from members.views.utils import *
from members.tables import RequestTable
from members.forms import ApplicationForm
+17 -1
View File
@@ -7,6 +7,10 @@ from django.core.mail import send_mail
from django.conf import settings
from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict
from dal import autocomplete
import logging
import html
from members.models import Member, Request, Payment
from members.forms import MemberForm, CSVValidationError
@@ -102,7 +106,7 @@ def member_submit(request, *args, **kwargs):
if form.is_valid():
form.save()
logging.info("Saved new member to member register"
"with the following info: {}".format(form))
"with the following info: {}".format(form.cleaned_data))
notification = "{} {} {}.".format(_("Successfully added member"),
form.cleaned_data['last_name'],
form.cleaned_data['first_name'])
@@ -180,3 +184,15 @@ def member_edit(request, *args, **kwargs):
form = MemberForm(instance=member)
return render(
request, 'member_edit.html', {'member_id': i, 'form': form})
class MemberAutoComplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
qs = Member.objects.all()
if self.q:
firsts = qs.filter(first_name__istartswith=self.q)
lasts = qs.filter(last_name__istartswith=self.q)
qs = firsts.union(lasts)
return qs
+4 -1
View File
@@ -8,6 +8,9 @@ from django.conf import settings
from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict
import logging
import html
from members.views.utils import *
from members.tables import PaymentTable
from members.forms import PaymentForm
@@ -55,7 +58,7 @@ def payment_submit(request, *args, **kwargs):
form.save()
logging.info(
"Saved new payment to member register with the following info: {}"
.format(form))
.format(form.cleaned_data))
notification = "{} {}.".format(
_("Successfully added payment for member"),
form.cleaned_data['member'])
+2
View File
@@ -8,6 +8,8 @@ from django.conf import settings
from django.utils.translation import ugettext as _
from django.forms.models import model_to_dict
import logging
# REST framework
from members.serializers import MemberSerializer
from rest_framework import generics