зеркало из https://github.com/mozilla/FlightDeck.git
signals needs to reside in models.py
This commit is contained in:
Родитель
e232ff8754
Коммит
b5e32be1e8
|
@ -1,74 +0,0 @@
|
|||
from django.db.models.signals import pre_save, post_save
|
||||
|
||||
from jetpack import settings
|
||||
from jetpack.models import Jetpack, Version
|
||||
|
||||
|
||||
# ------------------------------------------
|
||||
# Jetpack signals
|
||||
|
||||
def make_slug_on_create(instance, **kwargs):
|
||||
if kwargs.get('raw',False): return
|
||||
if not instance.id and not instance.slug:
|
||||
instance.set_slug()
|
||||
pre_save.connect(make_slug_on_create, sender=Jetpack)
|
||||
|
||||
# ------------------------------------------
|
||||
# Version signals
|
||||
|
||||
def default_name(instance, **kwargs):
|
||||
"""
|
||||
If name not given set from Jetpack
|
||||
"""
|
||||
if kwargs.get('raw', False): return
|
||||
if not instance.name:
|
||||
instance.name = instance.jetpack.name
|
||||
pre_save.connect(default_name, sender=Version)
|
||||
|
||||
|
||||
def first_is_base(instance, **kwargs):
|
||||
"""
|
||||
There is always a base version
|
||||
"""
|
||||
if kwargs.get('raw', False): return
|
||||
if not instance.is_base:
|
||||
try:
|
||||
base_version = Version.objects.get(jetpack__id=instance.jetpack.id, is_base=True)
|
||||
return
|
||||
except:
|
||||
instance.is_base = True
|
||||
pre_save.connect(first_is_base, sender=Version)
|
||||
|
||||
|
||||
def new_is_base(instance, **kwargs):
|
||||
"""
|
||||
Depending on settings new option has to be a base one one automatically
|
||||
"""
|
||||
if kwargs.get('raw', False): return
|
||||
if instance.is_base: return
|
||||
if not settings.JETPACK_NEW_IS_BASE: return
|
||||
# TODO: something is bad here
|
||||
instance.is_base = True
|
||||
pre_save.connect(new_is_base, sender=Version)
|
||||
|
||||
|
||||
def unbase_other_base_version(instance, **kwargs):
|
||||
"""
|
||||
There may be only one base version
|
||||
"""
|
||||
if kwargs.get('raw', False): return
|
||||
if instance.is_base:
|
||||
try:
|
||||
base_versions = Version.objects.filter(jetpack__id=instance.jetpack.id, is_base=True)
|
||||
except:
|
||||
return
|
||||
for base_version in base_versions:
|
||||
try:
|
||||
if instance.id and base_version.id == instance.id: return
|
||||
base_version.is_base = False
|
||||
base_version.save()
|
||||
except:
|
||||
return
|
||||
pre_save.connect(unbase_other_base_version, sender=Version)
|
||||
|
||||
|
Загрузка…
Ссылка в новой задаче