Passage en mode API pour les views caldav
This commit is contained in:
@@ -85,7 +85,7 @@ class cls_caldav():
|
|||||||
for event in events:
|
for event in events:
|
||||||
item = _caldav_item()
|
item = _caldav_item()
|
||||||
item.name = event["SUMMARY"]
|
item.name = event["SUMMARY"]
|
||||||
item.uiid = event["UID"]
|
item.uuid = f"{event['UID']}"
|
||||||
if Key_separator in item.name:
|
if Key_separator in item.name:
|
||||||
arr = item.name.split(Key_separator)
|
arr = item.name.split(Key_separator)
|
||||||
item.key = arr[0]
|
item.key = arr[0]
|
||||||
@@ -107,12 +107,14 @@ class cls_caldav():
|
|||||||
item.team_2_chef = True
|
item.team_2_chef = True
|
||||||
item.team_2 = item.team_2.replace("#", "")
|
item.team_2 = item.team_2.replace("#", "")
|
||||||
|
|
||||||
|
|
||||||
if "DESCRIPTION" in event.keys():
|
if "DESCRIPTION" in event.keys():
|
||||||
item.desc = event["DESCRIPTION"]
|
item.desc = f"{event['DESCRIPTION']}"
|
||||||
if "#" in item.desc:
|
|
||||||
|
if "#Fait" in item.desc:
|
||||||
item.done = True
|
item.done = True
|
||||||
if "#Fait" in item.desc:
|
item.desc = item.desc.replace("#Fait", "")
|
||||||
item.desc = item.desc.replace("#Fait", "")
|
|
||||||
|
|
||||||
if '{href=' in item.desc:
|
if '{href=' in item.desc:
|
||||||
temp_str = item.desc.split('{href=')[1]
|
temp_str = item.desc.split('{href=')[1]
|
||||||
@@ -395,25 +397,30 @@ class cls_caldav_client():
|
|||||||
|
|
||||||
|
|
||||||
class _caldav_item():
|
class _caldav_item():
|
||||||
key = ""
|
def __init__(self, key="", name="", desc="", dtstart=None, str_start_date="",
|
||||||
name = ""
|
str_start_time="", dtend=None, str_end_date="", str_end_time="",
|
||||||
desc = ""
|
dtstamp=None, done=False, href="", uuid="", team_1="",
|
||||||
dtstart = None
|
team_2="", team_1_chef=False, team_2_chef=False,
|
||||||
str_start_date = ""
|
team_transfert=False, team_manif=False):
|
||||||
str_start_time = ""
|
self.key = key
|
||||||
dtend = None
|
self.name = name
|
||||||
str_end_date = ""
|
self.desc = desc
|
||||||
str_end_time = ""
|
self.dtstart = dtstart
|
||||||
dtstamp = None
|
self.str_start_date = str_start_date
|
||||||
done = False
|
self.str_start_time = str_start_time
|
||||||
href = ""
|
self.dtend = dtend
|
||||||
uiid = ""
|
self.str_end_date = str_end_date
|
||||||
team_1 = ""
|
self.str_end_time = str_end_time
|
||||||
team_2 = ""
|
self.dtstamp = dtstamp
|
||||||
team_1_chef = False
|
self.done = done
|
||||||
team_2_chef = False
|
self.href = href
|
||||||
team_transfert = False
|
self.uuid = uuid
|
||||||
team_manif = False
|
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):
|
def format_str_date(self):
|
||||||
self.str_start_date = datetime.strptime(self.dtstart,"%d.%m.%Y %H:%M").strftime("%d.%m")
|
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.http import FileResponse
|
||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
@@ -18,30 +20,92 @@ from mycaldav.settings import *
|
|||||||
from mycaldav.export_team_pdf import *
|
from mycaldav.export_team_pdf import *
|
||||||
from comm_op.models import comm_opMessage
|
from comm_op.models import comm_opMessage
|
||||||
|
|
||||||
class caldav_item:
|
|
||||||
def __init__(self):
|
from rest_framework.response import Response
|
||||||
self.uuid = ""
|
from rest_framework import status
|
||||||
self.name = ""
|
from rest_framework.decorators import api_view
|
||||||
self.desc = ""
|
|
||||||
self.key = ""
|
from mycaldav.models import CalDavItemSerializer, _caldav_item
|
||||||
self.done = False
|
|
||||||
self.href = "#"
|
import logging
|
||||||
self.str_start_date = ""
|
|
||||||
self.str_end_date = ""
|
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):
|
def view_task_caldav(request):
|
||||||
o_caldav = cls_caldav(url=caldav_cfg["task"])
|
o_caldav = cls_caldav(url=caldav_cfg["task"])
|
||||||
o_caldav.get_caldav_data()
|
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:
|
if (datetime.today().day == 1) or 2==1:
|
||||||
myClient = cls_caldav_client()
|
myClient = cls_caldav_client()
|
||||||
myClient.init_task_management()
|
myClient.init_task_management()
|
||||||
return HttpResponse(template.render(context,request))
|
|
||||||
|
response = formatResponseArray(o_caldav)
|
||||||
|
return Response(response["data"], status=response["status"])
|
||||||
|
|
||||||
@xframe_options_exempt
|
@xframe_options_exempt
|
||||||
def view_task_edit_caldav(request, uuid):
|
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)
|
myClient.mark_as_done_task(calandar=myClient.a_vhc,uuid=uuid)
|
||||||
return view_vhc_caldav(request)
|
return view_vhc_caldav(request)
|
||||||
|
|
||||||
@xframe_options_exempt
|
@api_view(['GET'])
|
||||||
def view_vhc_caldav(request):
|
def view_vhc_caldav(request):
|
||||||
o_caldav = cls_caldav(url=caldav_cfg["vhc"])
|
o_caldav = cls_caldav(url=caldav_cfg["vhc"])
|
||||||
o_caldav.get_caldav_data(periode=2)
|
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):
|
def view_rh_caldav(request):
|
||||||
o_caldav = cls_caldav(url=caldav_cfg["rh"])
|
o_caldav = cls_caldav(url=caldav_cfg["rh"])
|
||||||
o_caldav.get_caldav_data(periode=2)
|
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):
|
def view_road_caldav(request):
|
||||||
o_caldav = cls_caldav(url=caldav_cfg["road"])
|
o_caldav = cls_caldav(url=caldav_cfg["road"])
|
||||||
o_caldav.get_caldav_data(periode=2)
|
o_caldav.get_caldav_data(periode=2)
|
||||||
template = loader.get_template("road/road_view.html")
|
response = formatResponseArray(o_caldav, inverted=True)
|
||||||
context = {'latest_task_list': o_caldav.items[::-1]}
|
return Response(response["data"], status=response["status"])
|
||||||
return HttpResponse(template.render(context, request))
|
|
||||||
@xframe_options_exempt
|
@api_view(['GET'])
|
||||||
def view_op_caldav(request):
|
def view_op_caldav(request):
|
||||||
o_items = comm_opMessage.objects.filter(bDone=False, dtStart__lte= datetime.today() + timedelta(days=1))
|
o_items = comm_opMessage.objects.filter(bDone=False, dtStart__lte= datetime.today() + timedelta(days=1))
|
||||||
all_items = []
|
all_items = []
|
||||||
for item in o_items:
|
for item in o_items:
|
||||||
temp_item = caldav_item()
|
temp_item = _caldav_item()
|
||||||
temp_item.uuid = item.uuid
|
temp_item.uuid = f"{item.uuid}"
|
||||||
temp_item.name = item.sTitle
|
temp_item.name = item.sTitle
|
||||||
temp_item.desc = item.sDesc
|
temp_item.desc = item.sDesc
|
||||||
temp_item.key = item.sKey
|
temp_item.key = item.sKey
|
||||||
@@ -104,11 +170,20 @@ def view_op_caldav(request):
|
|||||||
temp_item.str_end_date = None
|
temp_item.str_end_date = None
|
||||||
all_items.append(temp_item)
|
all_items.append(temp_item)
|
||||||
|
|
||||||
template = loader.get_template("op/op_view.html")
|
try:
|
||||||
context = {'latest_task_list': all_items}
|
serializer = CalDavItemSerializer(data=all_items, many=True)
|
||||||
return HttpResponse(template.render(context, request))
|
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):
|
def view_team_caldav(request):
|
||||||
#Change timezone
|
#Change timezone
|
||||||
myclient = cls_caldav_client()
|
myclient = cls_caldav_client()
|
||||||
@@ -122,17 +197,25 @@ def view_team_caldav(request):
|
|||||||
template = loader.get_template("team/team_view.html")
|
template = loader.get_template("team/team_view.html")
|
||||||
o_caldav.sort_array_by_key(True)
|
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')}
|
response = formatResponseArray(o_caldav)
|
||||||
return HttpResponse(template.render(context, request))
|
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):
|
def view_manif_caldav(request):
|
||||||
o_caldav = cls_caldav(url=caldav_cfg["manif"])
|
o_caldav = cls_caldav(url=caldav_cfg["manif"])
|
||||||
o_caldav.get_caldav_data(periode=1)
|
o_caldav.get_caldav_data(periode=1)
|
||||||
template = loader.get_template("manif/manif_view.html")
|
|
||||||
o_caldav.sort_array_by_key(True)
|
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
|
@xframe_options_exempt
|
||||||
def view_team_pdf_caldav(request):
|
def view_team_pdf_caldav(request):
|
||||||
|
Reference in New Issue
Block a user