Files

55 lines
2.4 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from django import forms
from django.contrib.auth.decorators import login_required
from django.core.exceptions import ValidationError
from django.http import HttpResponseForbidden
from django.shortcuts import redirect, render
from django.views.decorators.http import require_http_methods
from wagtail.admin import messages
from .models import SiteSettings
from .site_setup import COMPANY_FIELDS, default_site, setup_company_site
class CompanySetupForm(forms.ModelForm):
company_name = forms.CharField(label="企业名称", max_length=100)
create_demo = forms.BooleanField(
label="创建软件/技术服务企业示例站", required=False,
help_text="仅补齐缺失页面和菜单,新页面将公开发布;不会覆盖已有页面或菜单。",
)
class Meta:
model = SiteSettings
fields = COMPANY_FIELDS
help_texts = {
"contact_email": "新建咨询表单将使用此邮箱发送通知;需先配置服务器邮件服务。",
"icp_number": "请填写本企业真实备案号;未取得备案号时留空,不使用示例号码。",
}
@login_required(login_url="wagtailadmin_login")
@require_http_methods(["GET", "POST"])
def company_setup(request):
if not request.user.is_active or not request.user.is_superuser:
return HttpResponseForbidden("仅超级管理员可以初始化企业站点。")
try:
site = default_site()
except ValidationError as error:
return render(request, "core/site_setup.html", {"setup_error": ";".join(error.messages)})
settings = SiteSettings.for_site(site)
form = CompanySetupForm(request.POST if request.method == "POST" else None, instance=settings)
if request.method == "POST" and form.is_valid():
try:
created = setup_company_site(form.cleaned_data, form.cleaned_data["create_demo"])
except ValidationError as error:
form.add_error(None, ";".join(error.messages))
else:
result = f"企业资料已保存,新增 {len(created)} 个页面。" if form.cleaned_data["create_demo"] else "企业资料已保存,未创建示例内容。"
messages.success(request, result)
return redirect("company_site_setup")
return render(request, "core/site_setup.html", {
"form": form,
"site": site,
"pages": site.root_page.get_children().specific(),
})