blechreiz-website/eventplanner_gcal/views.py

64 lines
2.2 KiB
Python
Raw Normal View History

2019-01-05 13:04:20 +01:00
from django.shortcuts import redirect
from eventplanner_gcal.google_sync import sync_from_google_to_local, sync_from_local_to_google
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
2019-01-05 13:04:20 +01:00
from eventplanner_gcal.google_sync import check_if_google_callback_is_valid
from eventplanner_gcal.models import UserGCalCoupling
from django.shortcuts import render
import logging
2019-01-05 13:04:20 +01:00
logger = logging.getLogger(__name__)
2014-03-08 22:36:25 +01:00
2019-01-05 13:04:20 +01:00
def run_sync(request):
sync_from_local_to_google()
2014-03-08 22:36:25 +01:00
return redirect("/")
2019-01-05 13:04:20 +01:00
def manage(request):
if request.method == 'POST':
if request.POST['activate'] == "1":
2019-01-05 13:04:20 +01:00
UserGCalCoupling.objects.filter(user=request.user).delete()
c = UserGCalCoupling(user=request.user, email=request.POST['email'])
c.save()
2019-01-05 13:04:20 +01:00
sync_from_local_to_google()
else:
2019-01-05 13:04:20 +01:00
UserGCalCoupling.objects.filter(user=request.user).delete()
sync_from_local_to_google()
context = {}
2019-01-05 13:04:20 +01:00
user_coupling = UserGCalCoupling.objects.filter(user=request.user)
context['enabled'] = len(user_coupling)
assert (len(user_coupling) < 2)
if len(user_coupling) == 1:
context['mail'] = user_coupling[0].email
2019-01-05 13:04:20 +01:00
return render(request, 'eventplanner_gcal/management.html', context)
@csrf_exempt
2019-01-05 13:04:20 +01:00
def gcal_api_callback(request):
token = ""
2019-01-05 13:04:20 +01:00
if 'HTTP_X_GOOG_CHANNEL_TOKEN' in request.META:
token = request.META['HTTP_X_GOOG_CHANNEL_TOKEN']
channel_id = ""
if 'HTTP_X_GOOG_CHANNEL_ID' in request.META:
channel_id = request.META['HTTP_X_GOOG_CHANNEL_ID']
2019-01-05 13:04:20 +01:00
resource_id = ""
if 'HTTP_X_GOOG_RESOURCE_ID' in request.META:
resource_id = request.META['HTTP_X_GOOG_RESOURCE_ID']
valid = check_if_google_callback_is_valid(token, channel_id, resource_id)
if not valid:
return HttpResponse('<h1>Old Channel - no update triggered</h1>')
2019-01-05 13:04:20 +01:00
logger.info("Received Google Callback with the following headers Token: "
"%s ID %s ResID %s " % (token, channel_id, resource_id))
result = sync_from_google_to_local()
logger.info("Finished processing callback from GCal - New Information present: %d " % (result,))
return HttpResponse('<h1>Callback successful</h1>')