Source code for certica.template_manager
"""
Template Manager - Handles template files for default values
"""
import json
from pathlib import Path
from typing import Dict, Optional, List
[docs]
class TemplateManager:
"""Manages template files for default certificate values"""
[docs]
def __init__(self, base_dir: str = "output"):
self.base_dir = Path(base_dir).resolve()
self.templates_dir = self.base_dir / "templates"
self.templates_dir.mkdir(parents=True, exist_ok=True)
self.default_template = "default.json"
[docs]
def create_template(
self,
template_name: str,
organization: str = "Development",
country: str = "CN",
state: str = "Beijing",
city: str = "Beijing",
default_validity_days: int = 365,
default_key_size: int = 2048,
) -> str:
"""Create a new template file"""
template_path = self.templates_dir / f"{template_name}.json"
template_data = {
"organization": organization,
"country": country,
"state": state,
"city": city,
"default_validity_days": default_validity_days,
"default_key_size": default_key_size,
}
with open(template_path, "w", encoding="utf-8") as f:
json.dump(template_data, f, indent=2, ensure_ascii=False)
return str(template_path)
[docs]
def load_template(self, template_name: Optional[str] = None) -> Dict:
"""Load a template file"""
if template_name is None:
template_name = self.default_template
template_path = self.templates_dir / f"{template_name}.json"
if not template_path.exists():
# Return default values if template doesn't exist
return {
"organization": "Development",
"country": "CN",
"state": "Beijing",
"city": "Beijing",
"default_validity_days": 365,
"default_key_size": 2048,
}
with open(template_path, "r", encoding="utf-8") as f:
return json.load(f)
[docs]
def list_templates(self) -> List[str]:
"""List all available templates"""
templates = []
for template_file in self.templates_dir.glob("*.json"):
templates.append(template_file.stem)
return templates
[docs]
def delete_template(self, template_name: str) -> bool:
"""Delete a template file"""
template_path = self.templates_dir / f"{template_name}.json"
if template_path.exists():
template_path.unlink()
return True
return False