|
1 | 1 | from copy import copy |
2 | 2 | from dataclasses import dataclass |
3 | 3 | from logging import getLogger |
| 4 | +from os import getenv |
4 | 5 |
|
5 | 6 | from asgi_webdav import __version__ |
6 | 7 | from asgi_webdav.config import Config |
7 | 8 | from asgi_webdav.constants import DAVDepth, DAVMethod, DAVPath, DAVTime |
8 | | -from asgi_webdav.exception import DAVExceptionProviderInitFailed |
9 | | -from asgi_webdav.helpers import empty_data_generator, is_browser_user_agent |
| 9 | +from asgi_webdav.exception import DAVException, DAVExceptionProviderInitFailed |
| 10 | +from asgi_webdav.helpers import ( |
| 11 | + empty_data_generator, |
| 12 | + is_browser_user_agent, |
| 13 | + paser_timezone_key, |
| 14 | +) |
10 | 15 | from asgi_webdav.property import DAVProperty |
11 | 16 | from asgi_webdav.provider.dev_provider import DAVProvider |
12 | 17 | from asgi_webdav.provider.file_system import FileSystemProvider |
@@ -131,6 +136,12 @@ def __init__(self, config: Config): |
131 | 136 | # init hide file in dir |
132 | 137 | self._hide_file_in_dir = DAVHideFileInDir(config) |
133 | 138 |
|
| 139 | + # Please check environment variable |
| 140 | + try: |
| 141 | + self.timezone = paser_timezone_key(getenv("TZ", "UTC")) |
| 142 | + except DAVException as e: |
| 143 | + DAVException(f"Please check environment variable: TZ, {e}") |
| 144 | + |
134 | 145 | def match_provider(self, request: DAVRequest) -> DAVProvider | None: |
135 | 146 | weight = None |
136 | 147 | provider = None |
@@ -385,22 +396,22 @@ async def _create_dir_browser_content( |
385 | 396 | basic_data.display_name, |
386 | 397 | basic_data.content_type, |
387 | 398 | "-", |
388 | | - basic_data.last_modified.ui_display(), |
| 399 | + basic_data.last_modified.ui_display(self.timezone), |
389 | 400 | ) |
390 | 401 | else: |
391 | 402 | tbody_file += _CONTENT_TBODY_FILE_TEMPLATE.format( |
392 | 403 | dav_path.raw, |
393 | 404 | basic_data.display_name, |
394 | 405 | basic_data.content_type, |
395 | 406 | f"{basic_data.content_length:,}", |
396 | | - basic_data.last_modified.ui_display(), |
| 407 | + basic_data.last_modified.ui_display(self.timezone), |
397 | 408 | ) |
398 | 409 |
|
399 | 410 | content = _CONTENT_TEMPLATE.format( |
400 | 411 | root_path.raw, |
401 | 412 | root_path.raw, |
402 | 413 | tbody_parent + tbody_dir + tbody_file, |
403 | 414 | __version__, |
404 | | - DAVTime().ui_display(), |
| 415 | + DAVTime().ui_display(self.timezone), |
405 | 416 | ) |
406 | 417 | return content.encode("utf-8") |
0 commit comments