41 lines
1.4 KiB
Python
41 lines
1.4 KiB
Python
"""为每个启用俱乐部初始化 szjilu 收支流水行。"""
|
||
from django.core.management.base import BaseCommand
|
||
from django.db import transaction
|
||
|
||
from config.models import Szjilu
|
||
from jituan.constants import CLUB_ID_DEFAULT
|
||
from jituan.models import Club
|
||
from jituan.services.szjilu_accounting import normalize_szjilu_club_id
|
||
|
||
|
||
class Command(BaseCommand):
|
||
help = '为每个俱乐部创建 szjilu 收支流水行(已有则跳过)'
|
||
|
||
def add_arguments(self, parser):
|
||
parser.add_argument(
|
||
'--club-id',
|
||
type=str,
|
||
default='',
|
||
help='仅处理指定 club_id,默认处理全部启用俱乐部',
|
||
)
|
||
|
||
def handle(self, *args, **options):
|
||
club_id = (options.get('club_id') or '').strip()
|
||
if club_id:
|
||
club_ids = [normalize_szjilu_club_id(club_id)]
|
||
else:
|
||
club_ids = list(
|
||
Club.query.filter(status=1).values_list('club_id', flat=True)
|
||
)
|
||
if CLUB_ID_DEFAULT not in club_ids:
|
||
club_ids.append(CLUB_ID_DEFAULT)
|
||
|
||
created = 0
|
||
with transaction.atomic():
|
||
for cid in club_ids:
|
||
_, was_created = Szjilu.objects.get_or_create(club_id=cid)
|
||
if was_created:
|
||
created += 1
|
||
self.stdout.write(f'创建 szjilu: club_id={cid}')
|
||
self.stdout.write(self.style.SUCCESS(f'完成,新建 {created} 条 szjilu 记录'))
|