Passage en mode API pour les views caldav
This commit is contained in:
@@ -85,7 +85,7 @@ class cls_caldav():
|
||||
for event in events:
|
||||
item = _caldav_item()
|
||||
item.name = event["SUMMARY"]
|
||||
item.uiid = event["UID"]
|
||||
item.uuid = f"{event['UID']}"
|
||||
if Key_separator in item.name:
|
||||
arr = item.name.split(Key_separator)
|
||||
item.key = arr[0]
|
||||
@@ -107,13 +107,15 @@ class cls_caldav():
|
||||
item.team_2_chef = True
|
||||
item.team_2 = item.team_2.replace("#", "")
|
||||
|
||||
|
||||
if "DESCRIPTION" in event.keys():
|
||||
item.desc = event["DESCRIPTION"]
|
||||
if "#" in item.desc:
|
||||
item.done = True
|
||||
item.desc = f"{event['DESCRIPTION']}"
|
||||
|
||||
if "#Fait" in item.desc:
|
||||
item.done = True
|
||||
item.desc = item.desc.replace("#Fait", "")
|
||||
|
||||
|
||||
if '{href=' in item.desc:
|
||||
temp_str = item.desc.split('{href=')[1]
|
||||
temp_str = temp_str.split('}')[0]
|
||||
@@ -395,25 +397,30 @@ class cls_caldav_client():
|
||||
|
||||
|
||||
class _caldav_item():
|
||||
key = ""
|
||||
name = ""
|
||||
desc = ""
|
||||
dtstart = None
|
||||
str_start_date = ""
|
||||
str_start_time = ""
|
||||
dtend = None
|
||||
str_end_date = ""
|
||||
str_end_time = ""
|
||||
dtstamp = None
|
||||
done = False
|
||||
href = ""
|
||||
uiid = ""
|
||||
team_1 = ""
|
||||
team_2 = ""
|
||||
team_1_chef = False
|
||||
team_2_chef = False
|
||||
team_transfert = False
|
||||
team_manif = False
|
||||
def __init__(self, key="", name="", desc="", dtstart=None, str_start_date="",
|
||||
str_start_time="", dtend=None, str_end_date="", str_end_time="",
|
||||
dtstamp=None, done=False, href="", uuid="", team_1="",
|
||||
team_2="", team_1_chef=False, team_2_chef=False,
|
||||
team_transfert=False, team_manif=False):
|
||||
self.key = key
|
||||
self.name = name
|
||||
self.desc = desc
|
||||
self.dtstart = dtstart
|
||||
self.str_start_date = str_start_date
|
||||
self.str_start_time = str_start_time
|
||||
self.dtend = dtend
|
||||
self.str_end_date = str_end_date
|
||||
self.str_end_time = str_end_time
|
||||
self.dtstamp = dtstamp
|
||||
self.done = done
|
||||
self.href = href
|
||||
self.uuid = uuid
|
||||
self.team_1 = team_1
|
||||
self.team_2 = team_2
|
||||
self.team_1_chef = team_1_chef
|
||||
self.team_2_chef = team_2_chef
|
||||
self.team_transfert = team_transfert
|
||||
self.team_manif = team_manif
|
||||
|
||||
def format_str_date(self):
|
||||
self.str_start_date = datetime.strptime(self.dtstart,"%d.%m.%Y %H:%M").strftime("%d.%m")
|
||||
@@ -424,3 +431,24 @@ class _caldav_item():
|
||||
|
||||
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
class CalDavItemSerializer(serializers.Serializer):
|
||||
key = serializers.CharField()
|
||||
name = serializers.CharField()
|
||||
desc = serializers.CharField(allow_blank=True)
|
||||
dtstart = serializers.CharField()
|
||||
str_start_date = serializers.CharField()
|
||||
str_start_time = serializers.CharField()
|
||||
dtend = serializers.CharField()
|
||||
str_end_date = serializers.CharField()
|
||||
str_end_time = serializers.CharField()
|
||||
done = serializers.BooleanField()
|
||||
href = serializers.CharField(allow_blank=True)
|
||||
uuid = serializers.CharField()
|
||||
team_1 = serializers.CharField(allow_blank=True)
|
||||
team_2 = serializers.CharField(allow_blank=True)
|
||||
team_1_chef = serializers.BooleanField()
|
||||
team_2_chef = serializers.BooleanField()
|
||||
team_transfert = serializers.BooleanField()
|
||||
team_manif = serializers.BooleanField()
|
@@ -1,4 +1,6 @@
|
||||
from django.http import HttpResponse
|
||||
import json
|
||||
|
||||
from django.http import HttpResponse, JsonResponse
|
||||
from django.http import FileResponse
|
||||
from django.shortcuts import render
|
||||
from django.views import generic
|
||||
@@ -18,30 +20,92 @@ from mycaldav.settings import *
|
||||
from mycaldav.export_team_pdf import *
|
||||
from comm_op.models import comm_opMessage
|
||||
|
||||
class caldav_item:
|
||||
def __init__(self):
|
||||
self.uuid = ""
|
||||
self.name = ""
|
||||
self.desc = ""
|
||||
self.key = ""
|
||||
self.done = False
|
||||
self.href = "#"
|
||||
self.str_start_date = ""
|
||||
self.str_end_date = ""
|
||||
|
||||
from rest_framework.response import Response
|
||||
from rest_framework import status
|
||||
from rest_framework.decorators import api_view
|
||||
|
||||
from mycaldav.models import CalDavItemSerializer, _caldav_item
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def to_json(caldav_items):
|
||||
items_as_dicts = [
|
||||
{
|
||||
'key': item.key,
|
||||
'name': item.name,
|
||||
'desc': item.desc,
|
||||
'str_start_date': item.str_start_date,
|
||||
'str_start_time': item.str_start_time,
|
||||
'str_end_date': item.str_end_date,
|
||||
'str_end_time': item.str_end_time,
|
||||
'done': item.done,
|
||||
'href': item.href,
|
||||
'uuid': item.uuid,
|
||||
'team_1': item.team_1,
|
||||
'team_2': item.team_2,
|
||||
'team_1_chef': item.team_1_chef,
|
||||
'team_2_chef': item.team_2_chef,
|
||||
'team_transfert': item.team_transfert,
|
||||
'team_manif': item.team_manif,
|
||||
}
|
||||
for item in caldav_items
|
||||
]
|
||||
|
||||
return items_as_dicts
|
||||
def serialize_item(caldav_items):
|
||||
json_data = to_json(caldav_items)
|
||||
return json.dumps(json_data)
|
||||
|
||||
|
||||
@xframe_options_exempt
|
||||
def formatResponseArray(o_caldav, inverted=False):
|
||||
print(o_caldav.items)
|
||||
try:
|
||||
if inverted:
|
||||
o_caldav.items.reverse()
|
||||
o_caldav.day.reverse()
|
||||
o_caldav.night.reverse()
|
||||
|
||||
# Serialize data
|
||||
serializer_items = CalDavItemSerializer(data=[item.__dict__ for item in o_caldav.items], many=True)
|
||||
serializer_day = CalDavItemSerializer(data=[item.__dict__ for item in o_caldav.day], many=True)
|
||||
serializer_night = CalDavItemSerializer(data=[item.__dict__ for item in o_caldav.night], many=True)
|
||||
|
||||
# Check validation and print errors
|
||||
validate_and_log(serializer_items, "items")
|
||||
validate_and_log(serializer_day, "day")
|
||||
validate_and_log(serializer_night, "night")
|
||||
|
||||
response_data = {
|
||||
"items": serializer_items.data,
|
||||
"day": serializer_day.data,
|
||||
"night": serializer_night.data,
|
||||
}
|
||||
response_status = status.HTTP_200_OK
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {e}")
|
||||
response_data = {"error": "An error occurred while processing the request."}
|
||||
response_status = status.HTTP_500_INTERNAL_SERVER_ERROR
|
||||
|
||||
return {"data":response_data, "status": response_status}
|
||||
def validate_and_log(serializer, label):
|
||||
if not serializer.is_valid():
|
||||
print(f"Validation Error {label}: {serializer.errors}")
|
||||
@api_view(['GET'])
|
||||
def view_task_caldav(request):
|
||||
o_caldav = cls_caldav(url=caldav_cfg["task"])
|
||||
o_caldav.get_caldav_data()
|
||||
template = loader.get_template("task/task.html")
|
||||
context = {'latest_task_list':o_caldav.day, 'night_task_list': o_caldav.night}
|
||||
|
||||
if (datetime.today().day == 1) or 2==1:
|
||||
myClient = cls_caldav_client()
|
||||
myClient.init_task_management()
|
||||
return HttpResponse(template.render(context,request))
|
||||
|
||||
response = formatResponseArray(o_caldav)
|
||||
return Response(response["data"], status=response["status"])
|
||||
|
||||
@xframe_options_exempt
|
||||
def view_task_edit_caldav(request, uuid):
|
||||
@@ -64,36 +128,38 @@ def view_vhc_edit_caldav(request, uuid):
|
||||
myClient.mark_as_done_task(calandar=myClient.a_vhc,uuid=uuid)
|
||||
return view_vhc_caldav(request)
|
||||
|
||||
@xframe_options_exempt
|
||||
@api_view(['GET'])
|
||||
def view_vhc_caldav(request):
|
||||
o_caldav = cls_caldav(url=caldav_cfg["vhc"])
|
||||
o_caldav.get_caldav_data(periode=2)
|
||||
template = loader.get_template("vhc/vhc_view.html")
|
||||
context = {'latest_task_list': o_caldav.items}
|
||||
return HttpResponse(template.render(context, request))
|
||||
|
||||
@xframe_options_exempt
|
||||
response = formatResponseArray(o_caldav)
|
||||
return Response(response["data"], status=response["status"])
|
||||
|
||||
@api_view(['GET'])
|
||||
def view_rh_caldav(request):
|
||||
o_caldav = cls_caldav(url=caldav_cfg["rh"])
|
||||
o_caldav.get_caldav_data(periode=2)
|
||||
template = loader.get_template("rh/rh_view.html")
|
||||
context = {'latest_task_list': o_caldav.items[::-1], 'today': datetime.today().strftime('%d.%m')}
|
||||
return HttpResponse(template.render(context, request))
|
||||
|
||||
@xframe_options_exempt
|
||||
response = formatResponseArray(o_caldav,inverted=True)
|
||||
return Response(response["data"], status=response["status"])
|
||||
|
||||
|
||||
|
||||
@api_view(['GET'])
|
||||
def view_road_caldav(request):
|
||||
o_caldav = cls_caldav(url=caldav_cfg["road"])
|
||||
o_caldav.get_caldav_data(periode=2)
|
||||
template = loader.get_template("road/road_view.html")
|
||||
context = {'latest_task_list': o_caldav.items[::-1]}
|
||||
return HttpResponse(template.render(context, request))
|
||||
@xframe_options_exempt
|
||||
response = formatResponseArray(o_caldav, inverted=True)
|
||||
return Response(response["data"], status=response["status"])
|
||||
|
||||
@api_view(['GET'])
|
||||
def view_op_caldav(request):
|
||||
o_items = comm_opMessage.objects.filter(bDone=False, dtStart__lte= datetime.today() + timedelta(days=1))
|
||||
all_items = []
|
||||
for item in o_items:
|
||||
temp_item = caldav_item()
|
||||
temp_item.uuid = item.uuid
|
||||
temp_item = _caldav_item()
|
||||
temp_item.uuid = f"{item.uuid}"
|
||||
temp_item.name = item.sTitle
|
||||
temp_item.desc = item.sDesc
|
||||
temp_item.key = item.sKey
|
||||
@@ -104,11 +170,20 @@ def view_op_caldav(request):
|
||||
temp_item.str_end_date = None
|
||||
all_items.append(temp_item)
|
||||
|
||||
template = loader.get_template("op/op_view.html")
|
||||
context = {'latest_task_list': all_items}
|
||||
return HttpResponse(template.render(context, request))
|
||||
try:
|
||||
serializer = CalDavItemSerializer(data=all_items, many=True)
|
||||
if serializer.is_valid():
|
||||
print("Serialized Data:", serializer.data)
|
||||
else:
|
||||
print("Validation Error:", serializer.errors)
|
||||
|
||||
@xframe_options_exempt
|
||||
except Exception as e:
|
||||
logger.error(f"An error occurred: {e}")
|
||||
return Response({"error": "An error occurred while processing the request."},
|
||||
status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
return Response(serializer.data)
|
||||
|
||||
@api_view(['GET'])
|
||||
def view_team_caldav(request):
|
||||
#Change timezone
|
||||
myclient = cls_caldav_client()
|
||||
@@ -122,17 +197,25 @@ def view_team_caldav(request):
|
||||
template = loader.get_template("team/team_view.html")
|
||||
o_caldav.sort_array_by_key(True)
|
||||
|
||||
context = {'latest_task_list': o_caldav.day, 'night_task_list': o_caldav.night, 'today': datetime.today().strftime('%d.%m'),'yesterday': (datetime.today() + timedelta(days=-1)).strftime('%d.%m'),'tomorow': (datetime.today() + timedelta(days=+1)).strftime('%d.%m')}
|
||||
return HttpResponse(template.render(context, request))
|
||||
response = formatResponseArray(o_caldav)
|
||||
additional_data = {
|
||||
'today': datetime.today().strftime('%d.%m'),
|
||||
'yesterday': (datetime.today() + timedelta(days=-1)).strftime('%d.%m'),
|
||||
'tomorrow': (datetime.today() + timedelta(days=1)).strftime('%d.%m')
|
||||
}
|
||||
response["data"].update(additional_data)
|
||||
return Response(response["data"], status=response["status"])
|
||||
|
||||
@xframe_options_exempt
|
||||
|
||||
@api_view(['GET'])
|
||||
def view_manif_caldav(request):
|
||||
o_caldav = cls_caldav(url=caldav_cfg["manif"])
|
||||
o_caldav.get_caldav_data(periode=1)
|
||||
template = loader.get_template("manif/manif_view.html")
|
||||
o_caldav.sort_array_by_key(True)
|
||||
context = {'latest_task_list': o_caldav.items, 'night_task_list': o_caldav.night, 'today': datetime.today().strftime('%d.%m')}
|
||||
return HttpResponse(template.render(context, request))
|
||||
|
||||
response = formatResponseArray(o_caldav)
|
||||
return Response(response["data"], status=response["status"])
|
||||
|
||||
|
||||
@xframe_options_exempt
|
||||
def view_team_pdf_caldav(request):
|
||||
|
Reference in New Issue
Block a user