Skip to content
Snippets Groups Projects
Commit a9ff5941 authored by Carlos Vega's avatar Carlos Vega
Browse files

added API methods add_worker_availability and add_worker_extra_availability

parent 6e90c8b4
No related branches found
No related tags found
1 merge request!206Improvement/interface changes
......@@ -57,6 +57,13 @@ urlpatterns = [
# workers
url(r'^workers/(?P<worker_role>[A-z]+)/$', worker.get_workers, name='web.api.workers'),
url(r'^workers/add_availability/(?P<worker_id>\d+)/(?P<weekday>[0-9])/(?P<start_hour>\d{2}:\d{2})/(?P<end_hour>\d{2}:\d{2})/$',
worker.add_worker_availability, name='web.api.workers.add_availability'),
url(r'^workers/add_extra_availability/(?P<worker_id>\d+)/(?P<start_str_date>\d{4}-\d{2}-\d{2}-\d{2}-\d{2})/(?P<end_str_date>\d{4}-\d{2}-\d{2}-\d{2}-\d{2})/$',
worker.add_worker_extra_availability, name='web.api.workers.add_extra_availability'),
# daily planning data
url(r'^daily_planning/workers/$', worker.workers_for_daily_planning, name='web.api.workers.daily_planning'),
url(r'^daily_planning/workers/availabilities$', worker.availabilities,
......
......@@ -7,7 +7,8 @@ from django.utils import timezone
from django.shortcuts import get_object_or_404
from web.models.constants import GLOBAL_STUDY_ID
from web.api_views.daily_planning import get_workers_for_daily_planning, get_availabilities
from ..models import Worker
from ..models import Worker, Availability, Holiday
from web.models.constants import AVAILABILITY_EXTRA
logger = logging.getLogger(__name__)
......@@ -95,6 +96,43 @@ def serialize_worker(worker):
}
return result
def add_worker_availability(request, worker_id, weekday, start_hour, end_hour):
if worker_id is None or weekday is None or start_hour is None or end_hour is None:
context = {
'status': '400', 'reason': 'Either worker_id, weekday, start_hour, end_hour or all of them are invalid.'
}
response = HttpResponse(json.dumps(context), content_type='application/json')
response.status_code = 400
return response
worker = get_object_or_404(Worker, id=int(worker_id))
availability, _ = Availability.objects.update_or_create(person=worker, day_number=weekday,
defaults={'available_from': start_hour, 'available_till': end_hour})
availability.save()
return JsonResponse({}, status=200)
def add_worker_extra_availability(request, worker_id, start_str_date, end_str_date):
if start_str_date is None or end_str_date is None or worker_id is None:
context = {
'status': '400', 'reason': 'Either start_date, end_str_date, worker_id or all of them are invalid.'
}
response = HttpResponse(json.dumps(context), content_type='application/json')
response.status_code = 400
return response
start_date = datetime.datetime.strptime(start_str_date, "%Y-%m-%d-%H-%M").replace(tzinfo=timezone.now().tzinfo)
end_date = datetime.datetime.strptime(end_str_date, "%Y-%m-%d-%H-%M").replace(tzinfo=timezone.now().tzinfo)
worker = get_object_or_404(Worker, id=int(worker_id))
extra_availability, _ = Holiday.objects.update_or_create(person=worker, datetime_start=start_date, datetime_end=end_date, kind=AVAILABILITY_EXTRA)
extra_availability.save()
return JsonResponse({}, status=200)
def get_worker_availability(request):
start_str_date = request.GET.get("start_date")
end_str_date = request.GET.get("end_date")
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment