GCal Mapping: Callback mechanism using channels

This commit is contained in:
Martin Bauer
2014-04-19 20:36:01 +02:00
committed by Martin Bauer
parent ba0cde09c1
commit fcb04058b5
16 changed files with 185 additions and 45 deletions

View File

@@ -1,10 +1,10 @@
from django.db.models.signals import post_save,pre_delete
from django.dispatch import receiver
from eventplanner.models import Event, EventParticipation, before_read
from eventplanner.models import Event, EventParticipation
from django.contrib.auth.models import User
from eventplanner_gcal.models import createGCalEvent, updateGCalEvent
from eventplanner_gcal.models import deleteGCalEvent, syncParticipationFromGoogleToLocal
import eventplanner_gcal.models
class SignalLock:
def __init__(self):
@@ -25,6 +25,12 @@ class SignalLock:
signalLock = SignalLock()
@receiver( post_save, sender=User )
def user_changed( **kwargs ):
if not signalLock.isLocked():
with signalLock:
eventplanner_gcal.models.syncGCalEvents()
@receiver( post_save,sender= Event)
def event_post_save_handler( **kwargs):
@@ -34,10 +40,10 @@ def event_post_save_handler( **kwargs):
created = kwargs['created']
if created:
print("Creating Gcal event")
createGCalEvent( event ).execute()
eventplanner_gcal.models.createGCalEvent( event ).execute()
else:
print( "Updating Gcal event")
updateGCalEvent( event ).execute()
eventplanner_gcal.models.updateGCalEvent( event ).execute()
@@ -47,7 +53,7 @@ def event_pre_delete_handler( **kwargs):
with signalLock:
event = kwargs['instance']
print ("Deleting GCAL event")
deleteGCalEvent( event ).execute()
eventplanner_gcal.models.deleteGCalEvent( event ).execute()
@receiver( post_save, sender=EventParticipation )
@@ -56,12 +62,32 @@ def participation_post_save_handler( **kwargs):
with signalLock:
participation = kwargs['instance']
print("Participation post save -> update gcal")
updateGCalEvent( participation.event ).execute()
eventplanner_gcal.models.updateGCalEvent( participation.event ).execute()
@receiver( before_read, sender=EventParticipation )
def participation_before_read_handler( **kwargs):
# -------------- For management commands ------------------------
def stopAllGCalSubscriptions():
if not signalLock.isLocked():
with signalLock:
print("SyncParticipation from google")
syncParticipationFromGoogleToLocal()
eventplanner_gcal.models.stopAllGCalSubscriptions()
def checkGCalSubscription():
if not signalLock.isLocked():
with signalLock:
eventplanner_gcal.models.checkGCalSubscription()
def deleteAllGCalEvents():
if not signalLock.isLocked():
with signalLock:
eventplanner_gcal.models.deleteAllGCalEvents()
def syncGCalEvents():
if not signalLock.isLocked():
with signalLock:
eventplanner_gcal.models.syncGCalEvents()