Skip to content

Commit cd66bc0

Browse files
Add proper bates numbers support to ALExhibitDocument
Passes along all of the bates parameters through all of the exhibit document classes (ALExhibitDocument, ALExhibitList, ALExhibit).
1 parent 4a231ef commit cd66bc0

File tree

1 file changed

+69
-6
lines changed

1 file changed

+69
-6
lines changed

docassemble/AssemblyLine/al_document.py

Lines changed: 69 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2768,9 +2768,14 @@ def as_pdf(
27682768
self,
27692769
*,
27702770
refresh: bool = False,
2771-
prefix: str = "",
27722771
pdfa: bool = False,
27732772
add_page_numbers: bool = True,
2773+
page_number_prefix: str = "",
2774+
page_number_digits: int = 5,
2775+
page_number_area = None,
2776+
page_number_font_size: float = 10,
2777+
page_number_offset_horizontal: float = 15,
2778+
page_number_offset_vertical: float = 15,
27742779
add_cover_page: bool = True,
27752780
filename: Optional[str] = None,
27762781
append_matching_suffix: bool = True,
@@ -2812,7 +2817,15 @@ def as_pdf(
28122817
)
28132818

28142819
if add_page_numbers:
2815-
concatenated_pages.bates_number(prefix=prefix, start=self.start_page)
2820+
concatenated_pages.bates_number(
2821+
start=self.start_page,
2822+
prefix=page_number_prefix,
2823+
digits=page_number_digits,
2824+
area=page_number_area,
2825+
font_size=page_number_font_size,
2826+
offset_horizontal=page_number_offset_horizontal,
2827+
offset_vertical=page_number_offset_vertical
2828+
)
28162829

28172830
setattr(self._cache, safe_key, concatenated_pages)
28182831
return getattr(self._cache, safe_key)
@@ -2946,6 +2959,12 @@ def as_pdf(
29462959
filename="file.pdf",
29472960
pdfa: bool = False,
29482961
add_page_numbers: bool = False,
2962+
page_number_prefix: str = "",
2963+
page_number_digits: int = 5,
2964+
page_number_area = None,
2965+
page_number_font_size: float = 10,
2966+
page_number_offset_horizontal: float = 15,
2967+
page_number_offset_vertical: float = 15,
29492968
toc_pages: int = 0,
29502969
append_matching_suffix: bool = True,
29512970
) -> DAFile:
@@ -2967,12 +2986,19 @@ def as_pdf(
29672986
exhibit.cover_page
29682987
if self.include_table_of_contents and toc_pages != 1:
29692988
self._update_page_numbers(toc_guess_pages=toc_pages)
2989+
if not page_number_prefix and self.bates_prefix:
2990+
page_number_prefix = self.bates_prefix
29702991
return pdf_concatenate(
29712992
[
29722993
exhibit.as_pdf(
29732994
add_cover_page=self.include_exhibit_cover_pages,
29742995
add_page_numbers=add_page_numbers,
2975-
prefix=self.bates_prefix,
2996+
page_number_prefix=page_number_prefix,
2997+
page_number_digits=page_number_digits,
2998+
page_number_area=page_number_area,
2999+
page_number_font_size=page_number_font_size,
3000+
page_number_offset_horizontal=page_number_offset_horizontal,
3001+
page_number_offset_vertical=page_number_offset_vertical
29763002
)
29773003
for exhibit in self
29783004
],
@@ -3105,12 +3131,19 @@ class ALExhibitDocument(ALDocument):
31053131
has_addendum: bool
31063132
auto_labeler: Callable
31073133
auto_ocr: bool
3134+
# Deprecated
31083135
bates_prefix: str
31093136
maximum_size: int
31103137
maximum_size_per_doc: int
31113138
suffix_to_append: str
31123139
exhibits: ALExhibitList
31133140
table_of_contents: DAFile
3141+
page_number_prefix: str
3142+
page_number_digits: int
3143+
page_number_area: str | None
3144+
page_number_font_size: float
3145+
page_number_offset_horizontal: float
3146+
page_number_offset_vertical: float
31143147

31153148
def init(self, *pargs, **kwargs) -> None:
31163149
"""Standard DAObject init method.
@@ -3125,8 +3158,6 @@ def init(self, *pargs, **kwargs) -> None:
31253158
self.exhibits.auto_labeler = self.auto_labeler
31263159
if hasattr(self, "auto_ocr"):
31273160
self.exhibits.auto_ocr = self.auto_ocr
3128-
if hasattr(self, "bates_prefix"):
3129-
self.exhibits.bates_prefix = self.bates_prefix
31303161
if hasattr(self, "include_exhibit_cover_pages"):
31313162
self.exhibits.include_exhibit_cover_pages = self.include_exhibit_cover_pages
31323163
else:
@@ -3144,13 +3175,30 @@ def init(self, *pargs, **kwargs) -> None:
31443175
else:
31453176
self.include_table_of_contents = True
31463177
self.exhibits.include_table_of_contents = True
3178+
if hasattr(self, "bates_prefix"):
3179+
self.exhibits.bates_prefix = self.bates_prefix
31473180
if not hasattr(self, "add_page_numbers"):
31483181
self.add_page_numbers = False
3182+
self._set_default_attributes()
31493183
self.has_addendum = False
31503184
if not hasattr(self, "suffix_to_append"):
31513185
# When the key is "preview", append it to the file name
31523186
self.suffix_to_append = "preview"
31533187

3188+
def _set_default_attributes(self) -> None:
3189+
if not hasattr(self, "page_number_prefix"):
3190+
self.page_number_prefix = ""
3191+
if not hasattr(self, "page_number_digits"):
3192+
self.page_number_digits = 5
3193+
if not hasattr(self, "page_number_area"):
3194+
self.page_number_area = None
3195+
if not hasattr(self, "page_number_font_size"):
3196+
self.page_number_font_size = 10
3197+
if not hasattr(self, "page_number_offset_horizontal"):
3198+
self.page_number_offset_horizontal = 15
3199+
if not hasattr(self, "page_number_offset_vertical"):
3200+
self.page_number_offset_vertical = 15
3201+
31543202
def has_overflow(self) -> bool:
31553203
"""
31563204
Check if there is any overflow in the document.
@@ -3225,19 +3273,34 @@ def as_pdf(
32253273
filename = base_name(self.filename) + ".pdf"
32263274

32273275
if len(self.exhibits):
3276+
self._set_default_attributes()
32283277
if self.include_table_of_contents:
32293278
toc_pages = self.table_of_contents.num_pages()
32303279
return pdf_concatenate(
32313280
self.table_of_contents,
32323281
self.exhibits.as_pdf(
3233-
add_page_numbers=self.add_page_numbers, toc_pages=toc_pages
3282+
add_page_numbers=self.add_page_numbers,
3283+
page_number_prefix=self.page_number_prefix,
3284+
page_number_digits=self.page_number_digits,
3285+
page_number_area=self.page_number_area,
3286+
page_number_font_size=self.page_number_font_size,
3287+
page_number_offset_horizontal=self.page_number_offset_horizontal,
3288+
page_number_offset_vertical=self.page_number_offset_vertical,
3289+
toc_pages=toc_pages,
3290+
pdfa=pdfa
32343291
),
32353292
filename=filename,
32363293
pdfa=pdfa,
32373294
)
32383295
else:
32393296
return self.exhibits.as_pdf(
32403297
add_page_numbers=self.add_page_numbers,
3298+
page_number_prefix=self.page_number_prefix,
3299+
page_number_digits=self.page_number_digits,
3300+
page_number_area=self.page_number_area,
3301+
page_number_font_size=self.page_number_font_size,
3302+
page_number_offset_horizontal=self.page_number_offset_horizontal,
3303+
page_number_offset_vertical=self.page_number_offset_vertical,
32413304
filename=filename,
32423305
pdfa=pdfa,
32433306
)

0 commit comments

Comments
 (0)