signals.post_save.connect(auto_appform, sender=App) def copy_form(sender, source_app, new_app, **kwargs): if source_app.editor != 'appstore.contrib.form_designer_appeditor': return new_app.appform.form.verbose_name = source_app.appform.form.verbose_name new_app.appform.form.author = source_app.appform.form.author for tab in source_app.appform.form.tab_set.all(): new_tab = copy.deepcopy(tab) new_tab.pk = None new_tab.form = new_app.appform.form new_tab.save() for widget in tab.widget_set.all().select_subclasses(): widget.pk = None widget.id = None widget.tab = new_tab widget.save() empty = new_app.appform.form.tab_set.annotate(widget_count=Count('widget') ).filter(widget_count=0) if empty.count() == new_app.appform.form.tab_set.all().count(): empty.exclude(pk=new_app.appform.form.tab_set.all()[0].pk).delete() else: empty.delete() post_app_copy.connect(copy_form)
def copy_form(sender, source_app, new_app, **kwargs): if source_app.editor != 'appstore.contrib.form_designer_appeditor': return new_app.appform.form.verbose_name = source_app.appform.form.verbose_name new_app.appform.form.author = source_app.appform.form.author for tab in source_app.appform.form.tab_set.all(): new_tab = copy.deepcopy(tab) new_tab.pk = None new_tab.form = new_app.appform.form new_tab.save() for widget in tab.widget_set.all().select_subclasses(): widget.pk = None widget.id = None widget.tab = new_tab widget.save() empty = new_app.appform.form.tab_set.annotate( widget_count=Count('widget')).filter(widget_count=0) if empty.count() == new_app.appform.form.tab_set.all().count(): empty.exclude(pk=new_app.appform.form.tab_set.all()[0].pk).delete() else: empty.delete() post_app_copy.connect(copy_form)
class DummyApp(models.Model): app = models.OneToOneField('appstore.app') sound = models.TextField() def __unicode__(self): return u'Sound for %s' % self.app def auto_dummyapp(sender, instance, created, **kwargs): if not created: return if instance.editor != 'appstore.contrib.dummy_app': return DummyApp(app=instance).save() signals.post_save.connect(auto_dummyapp, sender=App) def copy_dummyapp(sender, source_app, new_app, **kwargs): if new_app.editor != 'appstore.contrib.dummy_app': return DummyApp(app=new_app, sound=source_app.dummyapp.sound).save() post_app_copy.connect(copy_dummyapp)
from appstore.models import App from appstore.signals import post_app_copy class DummyApp(models.Model): app = models.OneToOneField('appstore.app') sound = models.TextField() def __unicode__(self): return u'Sound for %s' % self.app def auto_dummyapp(sender, instance, created, **kwargs): if not created: return if instance.editor != 'appstore.contrib.dummy_app': return DummyApp(app=instance).save() signals.post_save.connect(auto_dummyapp, sender=App) def copy_dummyapp(sender, source_app, new_app, **kwargs): if new_app.editor != 'appstore.contrib.dummy_app': return DummyApp(app=new_app, sound=source_app.dummyapp.sound).save() post_app_copy.connect(copy_dummyapp)