mirror of https://github.com/jumpserver/jumpserver
				
				
				
			pref: 修改 migrations
							parent
							
								
									651228795e
								
							
						
					
					
						commit
						8f88b898d0
					
				| 
						 | 
				
			
			@ -10,6 +10,8 @@ class CommonConfig(AppConfig):
 | 
			
		|||
    def ready(self):
 | 
			
		||||
        from . import signal_handlers
 | 
			
		||||
        from .signals import django_ready
 | 
			
		||||
        if 'migrate' in sys.argv or 'compilemessages' in sys.argv:
 | 
			
		||||
            return
 | 
			
		||||
        excludes = ['migrate', 'compilemessages', 'makemigrations']
 | 
			
		||||
        for i in excludes:
 | 
			
		||||
            if i in sys.argv:
 | 
			
		||||
                return
 | 
			
		||||
        django_ready.send(CommonConfig)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -11,6 +11,14 @@ class Migration(migrations.Migration):
 | 
			
		|||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.DeleteModel(name='CeleryTask'),
 | 
			
		||||
        migrations.CreateModel(
 | 
			
		||||
            name='CeleryTask',
 | 
			
		||||
            fields=[
 | 
			
		||||
                ('id', models.UUIDField(default=uuid.uuid4, primary_key=True, serialize=False)),
 | 
			
		||||
                ('name', models.CharField(max_length=1024)),
 | 
			
		||||
            ]
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.CreateModel(
 | 
			
		||||
            name='CeleryTaskExecution',
 | 
			
		||||
            fields=[
 | 
			
		||||
| 
						 | 
				
			
			@ -25,28 +33,4 @@ class Migration(migrations.Migration):
 | 
			
		|||
                ('date_finished', models.DateTimeField(null=True)),
 | 
			
		||||
            ],
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='celerytask',
 | 
			
		||||
            name='args',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='celerytask',
 | 
			
		||||
            name='date_published',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='celerytask',
 | 
			
		||||
            name='date_start',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='celerytask',
 | 
			
		||||
            name='is_finished',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='celerytask',
 | 
			
		||||
            name='kwargs',
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.RemoveField(
 | 
			
		||||
            model_name='celerytask',
 | 
			
		||||
            name='state',
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -20,16 +20,17 @@ TASK_LANG_CACHE_TTL = 1800
 | 
			
		|||
@receiver(django_ready)
 | 
			
		||||
def sync_registered_tasks(*args, **kwargs):
 | 
			
		||||
    with transaction.atomic():
 | 
			
		||||
        db_tasks = CeleryTask.objects.all()
 | 
			
		||||
        try:
 | 
			
		||||
            db_tasks = CeleryTask.objects.all()
 | 
			
		||||
        except Exception as e:
 | 
			
		||||
            return
 | 
			
		||||
        celery_task_names = [key for key in app.tasks]
 | 
			
		||||
        db_task_names = [task.name for task in db_tasks]
 | 
			
		||||
        db_task_names = db_tasks.values_list('name', flat=True)
 | 
			
		||||
 | 
			
		||||
        for task in db_tasks:
 | 
			
		||||
            if task.name not in celery_task_names:
 | 
			
		||||
                task.delete()
 | 
			
		||||
        for task in celery_task_names:
 | 
			
		||||
            if task not in db_task_names:
 | 
			
		||||
                CeleryTask(name=task).save()
 | 
			
		||||
        db_tasks.exclude(name__in=celery_task_names).delete()
 | 
			
		||||
        not_in_db_tasks = set(celery_task_names) - set(db_task_names)
 | 
			
		||||
        tasks_to_create = [CeleryTask(name=name) for name in not_in_db_tasks]
 | 
			
		||||
        CeleryTask.objects.bulk_create(tasks_to_create)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@signals.before_task_publish.connect
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue