- Create Economist SubmissionTracking package correctly: * mainArticle = full blog post content * coverLetter = 216-word SIR— letter * Links to blog post via blogPostId - Archive 'Letter to The Economist' from blog posts (it's the cover letter) - Fix date display on article cards (use published_at) - Target publication already displaying via blue badge Database changes: - Make blogPostId optional in SubmissionTracking model - Economist package ID: 68fa85ae49d4900e7f2ecd83 - Le Monde package ID: 68fa2abd2e6acd5691932150 Next: Enhanced modal with tabs, validation, export 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
56 lines
1.4 KiB
Python
56 lines
1.4 KiB
Python
###############################################################################
|
|
#
|
|
# Exceptions - A class for XlsxWriter exceptions.
|
|
#
|
|
# SPDX-License-Identifier: BSD-2-Clause
|
|
#
|
|
# Copyright (c) 2013-2025, John McNamara, jmcnamara@cpan.org
|
|
#
|
|
|
|
|
|
class XlsxWriterException(Exception):
|
|
"""Base exception for XlsxWriter."""
|
|
|
|
|
|
class XlsxInputError(XlsxWriterException):
|
|
"""Base exception for all input data related errors."""
|
|
|
|
|
|
class XlsxFileError(XlsxWriterException):
|
|
"""Base exception for all file related errors."""
|
|
|
|
|
|
class EmptyChartSeries(XlsxInputError):
|
|
"""Chart must contain at least one data series."""
|
|
|
|
|
|
class DuplicateTableName(XlsxInputError):
|
|
"""Worksheet table name already exists."""
|
|
|
|
|
|
class InvalidWorksheetName(XlsxInputError):
|
|
"""Worksheet name is too long or contains restricted characters."""
|
|
|
|
|
|
class DuplicateWorksheetName(XlsxInputError):
|
|
"""Worksheet name already exists."""
|
|
|
|
|
|
class OverlappingRange(XlsxInputError):
|
|
"""Worksheet merge range or table overlaps previous range."""
|
|
|
|
|
|
class UndefinedImageSize(XlsxFileError):
|
|
"""No size data found in image file."""
|
|
|
|
|
|
class UnsupportedImageFormat(XlsxFileError):
|
|
"""Unsupported image file format."""
|
|
|
|
|
|
class FileCreateError(XlsxFileError):
|
|
"""IO error when creating xlsx file."""
|
|
|
|
|
|
class FileSizeError(XlsxFileError):
|
|
"""Filesize would require ZIP64 extensions. Use workbook.use_zip64()."""
|