@ -0,0 +1,502 @@
# Generated by Django 5.2.12 on 2026-03-27 14:27
import django . db . models . deletion
import wagtail . fields
from django . db import migrations , models
class Migration ( migrations . Migration ) :
dependencies = [
( ' base ' , ' 0007_contactformsubmission ' ) ,
( ' wagtailimages ' , ' 0027_image_description ' ) ,
]
operations = [
migrations . AlterModelOptions (
name = ' contactformsubmission ' ,
options = { ' ordering ' : [ ' -created_at ' ] , ' verbose_name ' : ' Contact Form Submission ' , ' verbose_name_plural ' : ' Contact Form Submissions ' } ,
) ,
migrations . AlterModelOptions (
name = ' newslettercampaign ' ,
options = { ' ordering ' : [ ' -created_at ' ] , ' verbose_name ' : ' Newsletter Campaign ' , ' verbose_name_plural ' : ' Newsletter Campaigns ' } ,
) ,
migrations . AlterModelOptions (
name = ' newsletterdispatchrecord ' ,
options = { ' ordering ' : [ ' -created_at ' ] , ' verbose_name ' : ' Newsletter Dispatch Record ' , ' verbose_name_plural ' : ' Newsletter Dispatch Records ' } ,
) ,
migrations . AlterModelOptions (
name = ' socialmediasettings ' ,
options = { ' verbose_name ' : ' Social Media Settings ' } ,
) ,
migrations . AlterField (
model_name = ' bannersnippet ' ,
name = ' is_active ' ,
field = models . BooleanField ( default = True , verbose_name = ' Active ' ) ,
) ,
migrations . AlterField (
model_name = ' bannersnippet ' ,
name = ' key ' ,
field = models . CharField ( blank = True , help_text = ' Identifier key, e.g. home / category ' , max_length = 50 , verbose_name = ' Key ' ) ,
) ,
migrations . AlterField (
model_name = ' bannersnippet ' ,
name = ' link_text ' ,
field = models . CharField ( blank = True , max_length = 100 , verbose_name = ' Link Text ' ) ,
) ,
migrations . AlterField (
model_name = ' bannersnippet ' ,
name = ' sort_order ' ,
field = models . PositiveIntegerField ( default = 0 , verbose_name = ' Sort Order ' ) ,
) ,
migrations . AlterField (
model_name = ' bannersnippet ' ,
name = ' title ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' Title ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' category ' ,
field = models . CharField ( choices = [ ( ' collaboration ' , ' Collaboration ' ) , ( ' website_issue ' , ' Website Issue ' ) , ( ' career ' , ' Career ' ) , ( ' other ' , ' Other ' ) ] , max_length = 32 , verbose_name = ' Category ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' contact ' ,
field = models . CharField ( max_length = 255 , verbose_name = ' Contact ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' created_at ' ,
field = models . DateTimeField ( auto_now_add = True , verbose_name = ' Created At ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' email ' ,
field = models . EmailField ( blank = True , max_length = 254 , verbose_name = ' Email ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' ip_address ' ,
field = models . GenericIPAddressField ( blank = True , null = True , verbose_name = ' IP Address ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' message ' ,
field = models . TextField ( verbose_name = ' Message ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' name ' ,
field = models . CharField ( max_length = 100 , verbose_name = ' Name ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' source_page ' ,
field = models . CharField ( blank = True , max_length = 512 , verbose_name = ' Source Page ' ) ,
) ,
migrations . AlterField (
model_name = ' contactformsubmission ' ,
name = ' user_agent ' ,
field = models . TextField ( blank = True , verbose_name = ' User Agent ' ) ,
) ,
migrations . AlterField (
model_name = ' headersettings ' ,
name = ' extra_links ' ,
field = wagtail . fields . StreamField ( [ ( ' link ' , 2 ) ] , blank = True , block_lookup = { 0 : ( ' wagtail.blocks.CharBlock ' , ( ) , { ' label ' : ' Label ' } ) , 1 : ( ' wagtail.blocks.URLBlock ' , ( ) , { ' label ' : ' URL ' } ) , 2 : ( ' wagtail.blocks.StructBlock ' , [ [ ( ' label ' , 0 ) , ( ' url ' , 1 ) ] ] , { } ) } , null = True , verbose_name = ' Extra Links ' ) ,
) ,
migrations . AlterField (
model_name = ' headersettings ' ,
name = ' logo_dark ' ,
field = models . ForeignKey ( blank = True , help_text = ' Use on light background (dark logo). ' , null = True , on_delete = django . db . models . deletion . SET_NULL , related_name = ' + ' , to = ' wagtailimages.image ' , verbose_name = ' Dark Logo ' ) ,
) ,
migrations . AlterField (
model_name = ' headersettings ' ,
name = ' logo_light ' ,
field = models . ForeignKey ( blank = True , help_text = ' Use on dark background (light logo). ' , null = True , on_delete = django . db . models . deletion . SET_NULL , related_name = ' + ' , to = ' wagtailimages.image ' , verbose_name = ' Light Logo ' ) ,
) ,
migrations . AlterField (
model_name = ' headersettings ' ,
name = ' site_name ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' Site Name ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_password ' ,
field = models . TextField ( blank = True , verbose_name = ' SMTP Password ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_relay_host ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' SMTP Relay Host ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_relay_port ' ,
field = models . PositiveIntegerField ( default = 587 , verbose_name = ' SMTP Relay Port ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_timeout_seconds ' ,
field = models . PositiveIntegerField ( default = 15 , verbose_name = ' SMTP Timeout Seconds ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_use_ssl ' ,
field = models . BooleanField ( default = False , help_text = ' Port 465 usually uses SSL (Implicit TLS); port 587 usually uses STARTTLS (TLS). ' , verbose_name = ' Use SSL ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_use_tls ' ,
field = models . BooleanField ( default = True , verbose_name = ' Use TLS ' ) ,
) ,
migrations . AlterField (
model_name = ' mailsmtpsettings ' ,
name = ' smtp_username ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' SMTP Username ' ) ,
) ,
migrations . AlterField (
model_name = ' navigationsettings ' ,
name = ' footer_links ' ,
field = wagtail . fields . StreamField ( [ ( ' section ' , 5 ) ] , blank = True , block_lookup = { 0 : ( ' wagtail.blocks.CharBlock ' , ( ) , { ' label ' : ' Section Title ' , ' required ' : False } ) , 1 : ( ' wagtail.blocks.CharBlock ' , ( ) , { ' label ' : ' Label ' } ) , 2 : ( ' wagtail.blocks.URLBlock ' , ( ) , { ' label ' : ' URL ' } ) , 3 : ( ' wagtail.blocks.StructBlock ' , [ [ ( ' label ' , 1 ) , ( ' url ' , 2 ) ] ] , { } ) , 4 : ( ' wagtail.blocks.ListBlock ' , ( 3 , ) , { } ) , 5 : ( ' wagtail.blocks.StructBlock ' , [ [ ( ' title ' , 0 ) , ( ' links ' , 4 ) ] ] , { } ) } , null = True , verbose_name = ' Footer Links ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' created_at ' ,
field = models . DateTimeField ( auto_now_add = True , verbose_name = ' Created At ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' html_template ' ,
field = models . TextField ( verbose_name = ' HTML Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' last_error ' ,
field = models . TextField ( blank = True , verbose_name = ' Last Error ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' list_id ' ,
field = models . CharField ( blank = True , max_length = 128 , verbose_name = ' List ID ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' scheduled_at ' ,
field = models . DateTimeField ( blank = True , null = True , verbose_name = ' Scheduled At ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' sent_at ' ,
field = models . DateTimeField ( blank = True , null = True , verbose_name = ' Sent At ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' status ' ,
field = models . CharField ( choices = [ ( ' draft ' , ' Draft ' ) , ( ' scheduled ' , ' Scheduled ' ) , ( ' sending ' , ' Sending ' ) , ( ' sent ' , ' Sent ' ) , ( ' failed ' , ' Failed ' ) ] , default = ' draft ' , max_length = 16 , verbose_name = ' Status ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' subject_template ' ,
field = models . CharField ( max_length = 255 , verbose_name = ' Subject Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' text_template ' ,
field = models . TextField ( blank = True , verbose_name = ' Text Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' title ' ,
field = models . CharField ( max_length = 255 , verbose_name = ' Title ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettercampaign ' ,
name = ' updated_at ' ,
field = models . DateTimeField ( auto_now = True , verbose_name = ' Updated At ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' campaign ' ,
field = models . ForeignKey ( on_delete = django . db . models . deletion . CASCADE , related_name = ' dispatch_records ' , to = ' base.newslettercampaign ' , verbose_name = ' Campaign ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' created_at ' ,
field = models . DateTimeField ( auto_now_add = True , verbose_name = ' Created At ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' email ' ,
field = models . EmailField ( blank = True , max_length = 254 , verbose_name = ' Email ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' error_message ' ,
field = models . TextField ( blank = True , verbose_name = ' Error Message ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' next_retry_at ' ,
field = models . DateTimeField ( blank = True , null = True , verbose_name = ' Next Retry At ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' response_payload ' ,
field = models . JSONField ( blank = True , default = dict , verbose_name = ' Response Payload ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' response_status ' ,
field = models . PositiveIntegerField ( blank = True , null = True , verbose_name = ' Response Status ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' retry_count ' ,
field = models . PositiveIntegerField ( default = 0 , verbose_name = ' Retry Count ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' status ' ,
field = models . CharField ( blank = True , max_length = 32 , verbose_name = ' Status ' ) ,
) ,
migrations . AlterField (
model_name = ' newsletterdispatchrecord ' ,
name = ' subscriber_id ' ,
field = models . CharField ( blank = True , max_length = 128 , verbose_name = ' Subscriber ID ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' default_charset ' ,
field = models . CharField ( default = ' utf-8 ' , max_length = 50 , verbose_name = ' Default Charset ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_base_url ' ,
field = models . URLField ( blank = True , verbose_name = ' Member Center Base URL ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_confirm_path ' ,
field = models . CharField ( blank = True , default = ' /newsletter/confirm ' , max_length = 255 , verbose_name = ' Confirm Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_list_id ' ,
field = models . CharField ( blank = True , max_length = 128 , verbose_name = ' List ID ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_oauth_audience ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' OAuth Audience ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_oauth_client_id ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' OAuth Client ID ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_oauth_client_secret ' ,
field = models . TextField ( blank = True , verbose_name = ' OAuth Client Secret ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_oauth_scope ' ,
field = models . CharField ( blank = True , default = ' newsletter:list.read ' , max_length = 255 , verbose_name = ' OAuth Scope ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_oauth_token_path ' ,
field = models . CharField ( blank = True , default = ' /oauth/token ' , max_length = 255 , verbose_name = ' OAuth Token Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_one_click_unsubscribe_path ' ,
field = models . CharField ( blank = True , default = ' /api/subscriptions/unsubscribe ' , max_length = 255 , verbose_name = ' One-Click Unsubscribe Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_subscribe_path ' ,
field = models . CharField ( blank = True , default = ' /newsletter/subscribe ' , max_length = 255 , verbose_name = ' Subscribe Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_subscriptions_path ' ,
field = models . CharField ( blank = True , default = ' /newsletter/subscriptions ' , max_length = 255 , verbose_name = ' Subscriptions Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_tenant_id ' ,
field = models . CharField ( blank = True , max_length = 128 , verbose_name = ' Tenant ID ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_timeout_seconds ' ,
field = models . PositiveIntegerField ( default = 10 , verbose_name = ' Member Center Timeout Seconds ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_unsubscribe_path ' ,
field = models . CharField ( blank = True , default = ' /newsletter/unsubscribe ' , max_length = 255 , verbose_name = ' Unsubscribe Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' member_center_unsubscribe_token_path ' ,
field = models . CharField ( blank = True , default = ' /newsletter/unsubscribe-token ' , max_length = 255 , verbose_name = ' Unsubscribe Token Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' one_click_endpoint_path ' ,
field = models . CharField ( blank = True , default = ' /u/unsubscribe ' , max_length = 255 , verbose_name = ' One-Click Endpoint Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' one_click_token_secret ' ,
field = models . CharField ( blank = True , help_text = ' One-click token signing secret. Leave blank to use Django SECRET_KEY. ' , max_length = 255 , verbose_name = ' One-Click Token Secret ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' one_click_token_ttl_seconds ' ,
field = models . PositiveIntegerField ( default = 2592000 , verbose_name = ' One-Click Token TTL Seconds ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' reply_to_email ' ,
field = models . EmailField ( blank = True , max_length = 254 , verbose_name = ' Reply-To Email ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' send_engine_base_url ' ,
field = models . URLField ( blank = True , verbose_name = ' Send Engine Base URL ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' send_engine_oauth_scope ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' Send Engine OAuth Scope ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' send_engine_retry_interval_seconds ' ,
field = models . PositiveIntegerField ( default = 300 , verbose_name = ' Retry Interval Seconds ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' send_engine_retry_max_attempts ' ,
field = models . PositiveIntegerField ( default = 3 , verbose_name = ' Retry Max Attempts ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' send_engine_send_jobs_path ' ,
field = models . CharField ( blank = True , default = ' /api/send-jobs ' , max_length = 255 , verbose_name = ' Send Jobs Path ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' send_engine_timeout_seconds ' ,
field = models . PositiveIntegerField ( default = 10 , verbose_name = ' Send Engine Timeout Seconds ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' sender_email ' ,
field = models . EmailField ( blank = True , max_length = 254 , verbose_name = ' Sender Email ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' sender_name ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' Sender Name ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettersystemsettings ' ,
name = ' site_base_url ' ,
field = models . URLField ( blank = True , help_text = ' Site base URL for scheduler sends, e.g. https://news.example.com ' , verbose_name = ' Site Base URL ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' confirm_failure_template ' ,
field = wagtail . fields . RichTextField ( blank = True , default = ' <p>訂閱確認失敗,請稍後再試。</p> ' , verbose_name = ' Confirm Failure Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' confirm_success_template ' ,
field = wagtail . fields . RichTextField ( blank = True , default = ' <p>訂閱確認成功。</p> ' , verbose_name = ' Confirm Success Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' subscribe_html_template ' ,
field = models . TextField ( default = " <p>您好,請點擊以下連結完成訂閱:</p><p><a href= ' {{ confirm_url}} ' > {{ confirm_url}}</a></p> " , verbose_name = ' Subscribe HTML Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' subscribe_subject_template ' ,
field = models . CharField ( default = ' 請確認您的電子報訂閱 ' , max_length = 255 , verbose_name = ' Subscribe Subject Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' subscribe_text_template ' ,
field = models . TextField ( default = ' 您好,請點擊以下連結完成訂閱: {{ confirm_url}} ' , verbose_name = ' Subscribe Text Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' unsubscribe_failure_template ' ,
field = wagtail . fields . RichTextField ( blank = True , default = ' <p>退訂失敗,請稍後再試。</p> ' , verbose_name = ' Unsubscribe Failure Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' unsubscribe_intro_template ' ,
field = wagtail . fields . RichTextField ( blank = True , default = ' <p>確認要退訂電子報嗎?</p> ' , verbose_name = ' Unsubscribe Intro Template ' ) ,
) ,
migrations . AlterField (
model_name = ' newslettertemplatesettings ' ,
name = ' unsubscribe_success_template ' ,
field = wagtail . fields . RichTextField ( blank = True , default = ' <p>已完成退訂。</p> ' , verbose_name = ' Unsubscribe Success Template ' ) ,
) ,
migrations . AlterField (
model_name = ' socialmediasettings ' ,
name = ' links ' ,
field = wagtail . fields . StreamField ( [ ( ' link ' , 2 ) ] , block_lookup = { 0 : ( ' wagtail.blocks.ChoiceBlock ' , [ ] , { ' choices ' : [ ( ' facebook ' , ' Facebook ' ) , ( ' twitter ' , ' Twitter ' ) , ( ' instagram ' , ' Instagram ' ) , ( ' threads ' , ' Threads ' ) , ( ' linkedin ' , ' LinkedIn ' ) , ( ' youtube ' , ' YouTube ' ) ] , ' label ' : ' Platform ' } ) , 1 : ( ' wagtail.blocks.URLBlock ' , ( ) , { ' label ' : ' URL ' } ) , 2 : ( ' wagtail.blocks.StructBlock ' , [ [ ( ' platform ' , 0 ) , ( ' url ' , 1 ) ] ] , { } ) } , verbose_name = ' Social Links ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_from_email ' ,
field = models . EmailField ( blank = True , max_length = 254 , verbose_name = ' Contact Form Sender Email ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_from_name ' ,
field = models . CharField ( blank = True , max_length = 255 , verbose_name = ' Contact Form Sender Name ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_reply_to_email ' ,
field = models . EmailField ( blank = True , max_length = 254 , verbose_name = ' Contact Form Reply-To Email ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_subject_prefix ' ,
field = models . CharField ( blank = True , default = ' [Contact Us] ' , max_length = 255 , verbose_name = ' Contact Form Subject Prefix ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_to_emails ' ,
field = models . TextField ( blank = True , help_text = ' Multiple recipients separated by comma or newline. ' , verbose_name = ' Contact Form Notification Recipients ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_user_html_template ' ,
field = models . TextField ( blank = True , default = ' <p>您好 {{ name}}: </p><p>我們已收到您的來信,以下為存檔資訊:</p><ul><li>Email: {{ email}}</li><li>聯絡方式: {{ contact}}</li><li>問題類別: {{ category}}</li></ul><p>留言內容:</p><p> {{ message}}</p> ' , verbose_name = ' User Copy HTML Template ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_user_subject_template ' ,
field = models . CharField ( blank = True , default = ' 已收到您的聯絡表單 ' , max_length = 255 , verbose_name = ' User Copy Subject Template ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' contact_form_user_text_template ' ,
field = models . TextField ( blank = True , default = ' 您好 {{ name}}: \n \n 我們已收到您的來信,以下為存檔資訊: \n Email: {{ email}} \n 聯絡方式: {{ contact}} \n 問題類別: {{ category}} \n \n 留言內容: \n {{ message}} \n ' , verbose_name = ' User Copy Text Template ' ) ,
) ,
migrations . AlterField (
model_name = ' systemnotificationmailsettings ' ,
name = ' default_charset ' ,
field = models . CharField ( default = ' utf-8 ' , max_length = 50 , verbose_name = ' Default Charset ' ) ,
) ,
]