Add autocomplete widget and fix some errors
This commit is contained in:
+7
-1
@@ -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."""
|
||||
|
||||
|
||||
@@ -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 %}
|
||||
|
||||
@@ -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',
|
||||
),
|
||||
|
||||
]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'])
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -26,3 +26,4 @@ django-modeltranslation==0.12.1
|
||||
django-auditlog==0.4.3
|
||||
django-phonenumber-field==1.3.0
|
||||
paho-mqtt==1.3.0
|
||||
django-autocomplete-light==3.2.10
|
||||
|
||||
@@ -64,6 +64,8 @@ LOGGING = {
|
||||
|
||||
INSTALLED_APPS = [
|
||||
'modeltranslation', # has to be before admin for translation admin to work
|
||||
'dal',
|
||||
'dal_select2',
|
||||
'django.contrib.admin',
|
||||
'django.contrib.auth',
|
||||
'django.contrib.contenttypes',
|
||||
|
||||
Reference in New Issue
Block a user