35765-vm/core/management/commands/import_tenders.py
Flatlogic Bot 1955ecf8b3 1.4
2025-11-15 19:14:03 +00:00

53 lines
2.1 KiB
Python

from django.core.management.base import BaseCommand
from core.etenders_api import get_tenders
from core.models import Tender, Company
from datetime import datetime
class Command(BaseCommand):
help = 'Imports tenders from the eTenders API'
def handle(self, *args, **options):
self.stdout.write('Importing tenders from eTenders API...')
tenders_data = get_tenders()
if not tenders_data:
self.stdout.write(self.style.WARNING('No tenders found or API is unavailable.'))
return
# For now, let's assume a default company exists.
# A more robust implementation would be to get the company from the tender data.
default_company, created = Company.objects.get_or_create(name='Default Company')
imported_count = 0
for tender_data in tenders_data:
# Assuming the API returns these fields. This will need to be adjusted
# based on the actual API response.
title = tender_data.get('title')
description = tender_data.get('description')
deadline_str = tender_data.get('deadline')
if not all([title, description, deadline_str]):
self.stdout.write(self.style.WARNING(f'Skipping tender with incomplete data: {tender_data}'))
continue
try:
deadline = datetime.fromisoformat(deadline_str)
except ValueError:
self.stdout.write(self.style.WARNING(f'Skipping tender with invalid deadline format: {deadline_str}'))
continue
# Check if a tender with the same title and company already exists.
if Tender.objects.filter(title=title, company=default_company).exists():
self.stdout.write(self.style.NOTICE(f'Tender "{title}" already exists. Skipping.'))
continue
Tender.objects.create(
company=default_company,
title=title,
description=description,
deadline=deadline,
)
imported_count += 1
self.stdout.write(self.style.SUCCESS(f'Successfully imported {imported_count} new tenders.'))