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 django.views.generic import RedirectView
|
||||||
from . import views
|
from . import views
|
||||||
from posts.views import PostViewSet
|
from posts.views import PostViewSet
|
||||||
from members.views import MemberViewSet
|
from members.views import MemberViewSet, JobViewSet, JobGroupViewSet, JobMemberViewSet
|
||||||
from rest_framework import routers
|
from rest_framework import routers
|
||||||
|
|
||||||
router = routers.DefaultRouter()
|
router = routers.DefaultRouter()
|
||||||
router.register(r'posts', PostViewSet)
|
router.register(r'posts', PostViewSet)
|
||||||
router.register(r'members', MemberViewSet)
|
router.register(r'members', MemberViewSet)
|
||||||
|
router.register(r'jobgroups', JobGroupViewSet)
|
||||||
|
router.register(r'jobs', JobViewSet)
|
||||||
|
router.register(r'jobmembers', JobMemberViewSet)
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('posts/', include('posts.urls')),
|
path('posts/', include('posts.urls')),
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ class Member(models.Model):
|
|||||||
date_created = models.DateTimeField(auto_now_add=True)
|
date_created = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
# Managers
|
# Managers
|
||||||
|
objects = models.Manager()
|
||||||
all_members = MemberManager()
|
all_members = MemberManager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -149,6 +150,7 @@ class JobGroup(models.Model):
|
|||||||
is_pinned = models.BooleanField(verbose_name="ANGEHEFTET", default=False)
|
is_pinned = models.BooleanField(verbose_name="ANGEHEFTET", default=False)
|
||||||
|
|
||||||
# Managers
|
# Managers
|
||||||
|
objects = models.Manager()
|
||||||
all_jobgroups = JobGroupManager()
|
all_jobgroups = JobGroupManager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
@@ -177,6 +179,9 @@ class Job(models.Model):
|
|||||||
verbose_name="Job Gruppe",
|
verbose_name="Job Gruppe",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Managers
|
||||||
|
objects = models.Manager()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = "Tätigkeit"
|
verbose_name = "Tätigkeit"
|
||||||
verbose_name_plural = "Tätigkeiten"
|
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)
|
job_role = models.CharField(max_length=2, choices=JobRole.choices, default=JobRole.MEMBER)
|
||||||
|
|
||||||
|
objects = models.Manager()
|
||||||
members = JobMemberManager()
|
members = JobMemberManager()
|
||||||
active_member = ActiveJobMemberManager()
|
active_member = ActiveJobMemberManager()
|
||||||
inactive_member = InactiveJobMemberManager()
|
inactive_member = InactiveJobMemberManager()
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
from .models import Member
|
from .models import Member, Job, JobGroup, JobMember
|
||||||
|
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
@@ -14,4 +14,61 @@ class MemberSerializer(serializers.HyperlinkedModelSerializer):
|
|||||||
'role',
|
'role',
|
||||||
'description',
|
'description',
|
||||||
'image',
|
'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 collections import deque
|
||||||
|
|
||||||
from .models import Member, JobMember, JobGroup
|
from .models import Member, JobMember, JobGroup, Job
|
||||||
from .serializers import MemberSerializer
|
from .serializers import MemberSerializer, JobSerializer, JobGroupSerializer, JobMemberSerializer
|
||||||
|
|
||||||
from rest_framework import viewsets
|
from rest_framework import viewsets
|
||||||
#from rest_framework import permissions
|
#from rest_framework import permissions
|
||||||
@@ -103,3 +103,29 @@ class MemberViewSet(viewsets.ModelViewSet):
|
|||||||
|
|
||||||
def pre_save(self, obj):
|
def pre_save(self, obj):
|
||||||
obj.image = self.request.FILES.get('image')
|
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("AGENDA KEY: %s " % self.agenda_key)
|
||||||
request_logger.info("VALUE: %s " % value)
|
request_logger.info("VALUE: %s " % value)
|
||||||
if self.agenda_key:
|
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!")
|
request_logger.info("set etherpad!")
|
||||||
return value
|
return value
|
||||||
|
|
||||||
@@ -132,10 +136,7 @@ class Post(models.Model):
|
|||||||
try:
|
try:
|
||||||
agenda_key = createPadifNotExists(self.slug + "-agenda")
|
agenda_key = createPadifNotExists(self.slug + "-agenda")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValidationError(
|
request_logger.info("Die Agenda konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e))
|
||||||
_('Die Agenda konnte nicht erstellt werden. Error: %(error)s'),
|
|
||||||
params={'error': str(e)},
|
|
||||||
)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return agenda_key
|
return agenda_key
|
||||||
@@ -147,10 +148,7 @@ class Post(models.Model):
|
|||||||
try:
|
try:
|
||||||
protocol_key = createPadifNotExists(self.slug + "-protocol")
|
protocol_key = createPadifNotExists(self.slug + "-protocol")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
raise ValidationError(
|
request_logger.info("Das Protokoll konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e))
|
||||||
_('Das Protokoll konnte nicht erstellt werden. Error: %(error)s'),
|
|
||||||
params={'error': str(e)},
|
|
||||||
)
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
return protocol_key
|
return protocol_key
|
||||||
@@ -272,6 +270,36 @@ class FetMeeting(Event):
|
|||||||
|
|
||||||
return slug
|
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):
|
def clean(self):
|
||||||
if self.event_start is None:
|
if self.event_start is None:
|
||||||
raise ValidationError(_('Das Datum des Events fehlt.'))
|
raise ValidationError(_('Das Datum des Events fehlt.'))
|
||||||
@@ -282,10 +310,10 @@ class FetMeeting(Event):
|
|||||||
self.slug = self.__get_slug()
|
self.slug = self.__get_slug()
|
||||||
|
|
||||||
if self.has_agenda:
|
if self.has_agenda:
|
||||||
self.agenda_key = self.get_agenda_key()
|
self.agenda_key = self.__get_agenda_key()
|
||||||
|
|
||||||
if self.has_protocol:
|
if self.has_protocol:
|
||||||
self.protocol_key = self.get_protocol_key()
|
self.protocol_key = self.__get_protocol_key()
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
self.title = "Fachschaftssitzung"
|
self.title = "Fachschaftssitzung"
|
||||||
|
|||||||
Reference in New Issue
Block a user