Check for shadowcalls on user registration, copy data if necessary

This commit is contained in:
Sebastian Lohff 2017-01-28 17:06:05 +01:00
parent ee7b1a8df8
commit 8018706715
2 changed files with 21 additions and 1 deletions

View File

@ -5,9 +5,10 @@ import datetime
from django.db import models from django.db import models
from django.contrib.auth.models import AbstractUser from django.contrib.auth.models import AbstractUser
from django.core.validators import RegexValidator from django.core.validators import RegexValidator
from django.db.models import Q from django.db.models import Q, signals
from .validators import CallUsernameValidator from .validators import CallUsernameValidator
from .signals import checkForShadowCall
class Contest(models.Model): class Contest(models.Model):
name = models.CharField(max_length=20) name = models.CharField(max_length=20)
@ -63,6 +64,7 @@ class User(AbstractUser):
def getCfmdRefCount(self): def getCfmdRefCount(self):
return len(set(map(lambda _x: _x["refStr"], self.qso_set.filter(ref__isnull=False).values("ref", "refStr")))) return len(set(map(lambda _x: _x["refStr"], self.qso_set.filter(ref__isnull=False).values("ref", "refStr"))))
signals.post_save.connect(checkForShadowCall, sender=User)
class Band(models.Model): class Band(models.Model):
name = models.CharField(max_length=10) name = models.CharField(max_length=10)

18
contest/signals.py Normal file
View File

@ -0,0 +1,18 @@
def checkForShadowCall(sender, instance, created, raw, **kwargs):
""" Check for existing shadow call. If present copy it's data and delete it. """
if created:
# to prevent circular imports we import ShadowCall here
from .models import ShadowCall
try:
shadow = ShadowCall.objects.get(username=instance.username)
instance.ref = shadow.ref
instance.location = shadow.location
instance.opName = shadow.opName
instance.regTime = shadow.regTime
instance.save()
shadow.delete()
except ShadowCall.DoesNotExist:
pass