diff --git a/src/cli/commands.py b/src/cli/commands.py index 181ee00..a49fcc3 100644 --- a/src/cli/commands.py +++ b/src/cli/commands.py @@ -73,18 +73,19 @@ def _get_brands_for_url(url: str) -> List[str]: def create_job_file_for_project( - project_id: int, - project_name: str, + project_id: int, + project_name: str, session, tier1_branded_ratio: Optional[float] = None, tier1_branded_text: Optional[str] = None, tier1_branded_plus_ratio: Optional[float] = None, brand_names: Optional[List[str]] = None, - random_deployment_targets: Optional[int] = None + random_deployment_targets: Optional[int] = None, + tier1_count: Optional[int] = None ) -> Optional[str]: """ Create a job JSON file for a newly created project. - + Args: project_id: The ID of the created project project_name: The name of the project (for filename) @@ -94,25 +95,26 @@ def create_job_file_for_project( tier1_branded_plus_ratio: Optional ratio of branded+ anchor text for tier1 (0.0-1.0, applied to remaining slots after branded) brand_names: Optional list of brand names for branded+ generation random_deployment_targets: Optional number of random deployment targets to select (default: random 2-3) - + tier1_count: Optional override for tier1 article count (default: random 10-12) + Returns: Path to created file, or None if creation failed """ try: deployment_repo = SiteDeploymentRepository(session) sites = deployment_repo.get_all() - + available_domains = [ - site.custom_hostname - for site in sites + site.custom_hostname + for site in sites if site.custom_hostname is not None ] - + if not available_domains: click.echo("Warning: No domains with custom hostnames found. Job file not created.", err=True) return None - - t1_count = random.randint(10, 12) + + t1_count = tier1_count if tier1_count is not None else random.randint(10, 12) t2_count = random.randint(30, 45) if random_deployment_targets is not None: num_targets = min(random_deployment_targets, len(available_domains)) @@ -1080,9 +1082,10 @@ def sync_sites(admin_user: Optional[str], admin_password: Optional[str], dry_run @click.option('--tier1-branded-ratio', '-t', default=None, type=float, help='Ratio of branded anchor text for tier1 (optional, only prompts if provided)') @click.option('--tier1-branded-plus-ratio', '-bp', default=None, type=float, help='Ratio of branded+ anchor text for tier1 (optional, applied to remaining slots after branded)') @click.option('--random-deployment-targets', '-r', type=int, help='Number of random deployment targets to select (default: random 2-3)') +@click.option('--tier1-count', type=int, default=None, help='Number of tier1 articles (default: random 10-12)') @click.option('--username', '-u', help='Username for authentication') @click.option('--password', '-p', help='Password for authentication') -def ingest_cora(file_path: str, name: str, money_site_url: Optional[str], custom_anchors: Optional[str], tier1_branded_ratio: float, tier1_branded_plus_ratio: Optional[float], random_deployment_targets: Optional[int], username: Optional[str], password: Optional[str]): +def ingest_cora(file_path: str, name: str, money_site_url: Optional[str], custom_anchors: Optional[str], tier1_branded_ratio: float, tier1_branded_plus_ratio: Optional[float], random_deployment_targets: Optional[int], tier1_count: Optional[int], username: Optional[str], password: Optional[str]): """Ingest a CORA .xlsx report and create a new project""" try: if not username or not password: @@ -1197,14 +1200,15 @@ def ingest_cora(file_path: str, name: str, money_site_url: Optional[str], custom tier1_branded_plus_ratio = None job_file = create_job_file_for_project( - project.id, - project.name, + project.id, + project.name, session, tier1_branded_ratio=tier1_branded_ratio, tier1_branded_text=tier1_branded_text, tier1_branded_plus_ratio=tier1_branded_plus_ratio, brand_names=brand_names, - random_deployment_targets=random_deployment_targets + random_deployment_targets=random_deployment_targets, + tier1_count=tier1_count ) if job_file: click.echo(f"Job file created: {job_file}")