update member and job api
This commit is contained in:
@@ -20,12 +20,15 @@ from django.conf import settings
|
||||
from django.views.generic import RedirectView
|
||||
from . import views
|
||||
from posts.views import PostViewSet
|
||||
from members.views import MemberViewSet
|
||||
from members.views import MemberViewSet, JobViewSet, JobGroupViewSet, JobMemberViewSet
|
||||
from rest_framework import routers
|
||||
|
||||
router = routers.DefaultRouter()
|
||||
router.register(r'posts', PostViewSet)
|
||||
router.register(r'members', MemberViewSet)
|
||||
router.register(r'jobgroups', JobGroupViewSet)
|
||||
router.register(r'jobs', JobViewSet)
|
||||
router.register(r'jobmembers', JobMemberViewSet)
|
||||
|
||||
urlpatterns = [
|
||||
path('posts/', include('posts.urls')),
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -121,7 +121,11 @@ class Post(models.Model):
|
||||
request_logger.info("AGENDA KEY: %s " % self.agenda_key)
|
||||
request_logger.info("VALUE: %s " % value)
|
||||
if self.agenda_key:
|
||||
setPadHTML(self.agenda_key, value)
|
||||
try:
|
||||
setPadHTML(self.agenda_key, value)
|
||||
except Exception as e:
|
||||
request_logger.info("Es konnte kein Pad von der Agenda '{}' erzeugt werden. Error: {}".format(self.agenda_key, e))
|
||||
|
||||
request_logger.info("set etherpad!")
|
||||
return value
|
||||
|
||||
@@ -132,10 +136,7 @@ class Post(models.Model):
|
||||
try:
|
||||
agenda_key = createPadifNotExists(self.slug + "-agenda")
|
||||
except Exception as e:
|
||||
raise ValidationError(
|
||||
_('Die Agenda konnte nicht erstellt werden. Error: %(error)s'),
|
||||
params={'error': str(e)},
|
||||
)
|
||||
request_logger.info("Die Agenda konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e))
|
||||
return None
|
||||
|
||||
return agenda_key
|
||||
@@ -147,10 +148,7 @@ class Post(models.Model):
|
||||
try:
|
||||
protocol_key = createPadifNotExists(self.slug + "-protocol")
|
||||
except Exception as e:
|
||||
raise ValidationError(
|
||||
_('Das Protokoll konnte nicht erstellt werden. Error: %(error)s'),
|
||||
params={'error': str(e)},
|
||||
)
|
||||
request_logger.info("Das Protokoll konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e))
|
||||
return None
|
||||
|
||||
return protocol_key
|
||||
@@ -272,6 +270,36 @@ class FetMeeting(Event):
|
||||
|
||||
return slug
|
||||
|
||||
def __get_agenda_key(self):
|
||||
if not self.slug:
|
||||
return None
|
||||
|
||||
try:
|
||||
agenda_key = createPadifNotExists(self.slug + "-agenda")
|
||||
except Exception as e:
|
||||
raise ValidationError(
|
||||
_('Die Agenda konnte nicht erstellt werden. Error: %(error)s'),
|
||||
params={'error': str(e)},
|
||||
)
|
||||
return None
|
||||
|
||||
return agenda_key
|
||||
|
||||
def __get_protocol_key(self):
|
||||
if not self.slug:
|
||||
return None
|
||||
|
||||
try:
|
||||
protocol_key = createPadifNotExists(self.slug + "-protocol")
|
||||
except Exception as e:
|
||||
raise ValidationError(
|
||||
_('Das Protokoll konnte nicht erstellt werden. Error: %(error)s'),
|
||||
params={'error': str(e)},
|
||||
)
|
||||
return None
|
||||
|
||||
return protocol_key
|
||||
|
||||
def clean(self):
|
||||
if self.event_start is None:
|
||||
raise ValidationError(_('Das Datum des Events fehlt.'))
|
||||
@@ -282,10 +310,10 @@ class FetMeeting(Event):
|
||||
self.slug = self.__get_slug()
|
||||
|
||||
if self.has_agenda:
|
||||
self.agenda_key = self.get_agenda_key()
|
||||
self.agenda_key = self.__get_agenda_key()
|
||||
|
||||
if self.has_protocol:
|
||||
self.protocol_key = self.get_protocol_key()
|
||||
self.protocol_key = self.__get_protocol_key()
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
self.title = "Fachschaftssitzung"
|
||||
|
||||
Reference in New Issue
Block a user