update member and job api

This commit is contained in:
2020-10-28 20:52:53 +00:00
parent 8f252734fc
commit 428d0072ad
5 changed files with 135 additions and 15 deletions

View File

@@ -119,6 +119,7 @@ class Member(models.Model):
date_created = models.DateTimeField(auto_now_add=True)
# Managers
objects = models.Manager()
all_members = MemberManager()
class Meta:
@@ -149,6 +150,7 @@ class JobGroup(models.Model):
is_pinned = models.BooleanField(verbose_name="ANGEHEFTET", default=False)
# Managers
objects = models.Manager()
all_jobgroups = JobGroupManager()
class Meta:
@@ -177,6 +179,9 @@ class Job(models.Model):
verbose_name="Job Gruppe",
)
# Managers
objects = models.Manager()
class Meta:
verbose_name = "Tätigkeit"
verbose_name_plural = "Tätigkeiten"
@@ -216,6 +221,7 @@ class JobMember(models.Model):
job_role = models.CharField(max_length=2, choices=JobRole.choices, default=JobRole.MEMBER)
objects = models.Manager()
members = JobMemberManager()
active_member = ActiveJobMemberManager()
inactive_member = InactiveJobMemberManager()

View File

@@ -1,4 +1,4 @@
from .models import Member
from .models import Member, Job, JobGroup, JobMember
from rest_framework import serializers
@@ -14,4 +14,61 @@ class MemberSerializer(serializers.HyperlinkedModelSerializer):
'role',
'description',
'image',
'birthday',
]
class JobGroupSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = JobGroup
fields = [
'name',
'shortterm',
]
class JobSerializer(serializers.HyperlinkedModelSerializer):
job_group = JobGroupSerializer()
class Meta:
model = Job
fields = [
'name',
'shortterm',
'job_group',
]
def create(self, validated_data):
job_groups_data = validated_data.pop('job_group')
jobgroup = JobGroup.objects.get(**job_groups_data)
if not jobgroup:
jobgroup = JobGroup.objects.create(**job_groups_data)
job = Job.objects.create(job_group=jobgroup, **validated_data)
return job
class JobMemberSerializer(serializers.HyperlinkedModelSerializer):
member = MemberSerializer()
job = JobSerializer()
class Meta:
model = JobMember
fields = [
'job_start',
'job_end',
'member',
'job',
]
def create(self, validated_data):
member_data = validated_data.pop('member')
print(member_data)
member = Member.objects.get(firstname=member_data['firstname'], surname=member_data['surname'])
job_data = validated_data.pop('job')
print(job_data)
job = Job.objects.get(name=job_data['name'])
jobmember = JobMember.objects.create(member=member, job=job, **validated_data)
return jobmember

View File

@@ -3,8 +3,8 @@ from django.shortcuts import render
from collections import deque
from .models import Member, JobMember, JobGroup
from .serializers import MemberSerializer
from .models import Member, JobMember, JobGroup, Job
from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer
from rest_framework import viewsets
#from rest_framework import permissions
@@ -103,3 +103,29 @@ class MemberViewSet(viewsets.ModelViewSet):
def pre_save(self, obj):
obj.image = self.request.FILES.get('image')
class JobGroupViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = JobGroup.all_jobgroups.all()
serializer_class = JobGroupSerializer
lookup_field = 'name'
class JobViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = Job.objects.all()
serializer_class = JobSerializer
class JobMemberViewSet(viewsets.ModelViewSet):
"""
API endpoint that allows users to be viewed or edited.
"""
queryset = JobMember.objects.all()
serializer_class = JobMemberSerializer