mirror of
https://github.com/fspc/workstand.git
synced 2026-09-16 16:41:38 -04:00
Refactor member list to be searchable (#27)
Trigger! * Added members API endpoint. * Stubbed out member table. Search is broken. * Better, faster member search! * Add add member button.
This commit is contained in:
@@ -0,0 +1,13 @@
|
||||
from rest_framework import serializers
|
||||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
from .models import Member
|
||||
|
||||
|
||||
class MemberSerializer(ModelSerializer):
|
||||
first_name = serializers.CharField(allow_blank=True, required=False)
|
||||
last_name = serializers.CharField(allow_blank=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Member
|
||||
fields = ('first_name', 'last_name', 'email', 'id')
|
||||
@@ -1,22 +1,7 @@
|
||||
{% extends 'dashboard.html' %}
|
||||
{% load render_bundle from webpack_loader %}
|
||||
|
||||
{% block content %}
|
||||
<div class="mdl-cell mdl-cell--6-col">
|
||||
<ul class="demo-list-three mdl-list">
|
||||
{% for member in members %}
|
||||
<li class="mdl-list__item mdl-list__item--three-line">
|
||||
<span class="mdl-list__item-primary-content">
|
||||
<i class="material-icons mdl-list__item-avatar">person</i>
|
||||
<span>{{ member.full_name }}</span>
|
||||
<span class="mdl-list__item-text-body">
|
||||
{{ member.email }}
|
||||
</span>
|
||||
</span>
|
||||
<span class="mdl-list__item-secondary-content">
|
||||
<a class="mdl-list__item-secondary-action" href="{% url 'member_edit' member_id=member.id %}"><i class="material-icons">edit</i></a>
|
||||
</span>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<div id="root"></div>
|
||||
{% render_bundle 'members' %}
|
||||
{% endblock %}
|
||||
@@ -1,6 +1,11 @@
|
||||
from django.conf.urls import url
|
||||
|
||||
from .views import MemberFormView, MemberSearchView, MemberSignIn, Members
|
||||
from .views import MemberFormView, MemberSearchView, MemberSignIn, Members, MemberViewSet
|
||||
|
||||
apiRoutes = (
|
||||
(r'members', MemberViewSet),
|
||||
)
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^new/$', MemberFormView.as_view(), name='member_new'),
|
||||
url(r'^search/(?P<query>[\w@\.\+]+)/$', MemberSearchView.as_view(), name='member_search'),
|
||||
|
||||
@@ -9,12 +9,13 @@ from django.utils.decorators import method_decorator
|
||||
from django.views.decorators.csrf import csrf_exempt
|
||||
from django.views.generic import TemplateView, View
|
||||
from haystack.query import SearchQuerySet
|
||||
from rest_framework import serializers
|
||||
from rest_framework import viewsets
|
||||
from rest_framework.renderers import JSONRenderer
|
||||
from rest_framework.serializers import ModelSerializer
|
||||
|
||||
from core.models import Visit
|
||||
from registration.utils import signin_member, get_signed_in_members
|
||||
from .serializers import MemberSerializer
|
||||
from .forms import MemberForm
|
||||
from .models import Member
|
||||
|
||||
@@ -64,15 +65,6 @@ class MemberSearchView(View):
|
||||
return HttpResponse(data, content_type='application/json')
|
||||
|
||||
|
||||
class MemberSerializer(ModelSerializer):
|
||||
first_name = serializers.CharField(allow_blank=True, required=False)
|
||||
last_name = serializers.CharField(allow_blank=True, required=False)
|
||||
|
||||
class Meta:
|
||||
model = Member
|
||||
fields = ('first_name', 'last_name', 'email', 'id')
|
||||
|
||||
|
||||
class VisitSerializer(ModelSerializer):
|
||||
member = MemberSerializer()
|
||||
|
||||
@@ -109,3 +101,8 @@ class Members(TemplateView):
|
||||
def get(self, request):
|
||||
members = Member.objects.all()
|
||||
return self.render_to_response(dict(members=members))
|
||||
|
||||
|
||||
class MemberViewSet(viewsets.ModelViewSet):
|
||||
queryset = Member.objects.all()
|
||||
serializer_class = MemberSerializer
|
||||
|
||||
Reference in New Issue
Block a user