diff --git a/core/views.py b/core/views.py index 69c236d..1a489ec 100644 --- a/core/views.py +++ b/core/views.py @@ -806,7 +806,6 @@ def pdf_list(request): return render(request, 'core/pdf_list.html', context) -@csrf_exempt def api_submit_summary(request): """API提交汇总记录 - 仅接受指定分类和发言人的记录""" logger.info("API: 收到汇总记录提交请求") @@ -835,10 +834,17 @@ def api_submit_summary(request): logger.error(f"API: 发言人 '{speaker_name}' 不存在") return JsonResponse({'success': False, 'message': f"发言人 '{speaker_name}' 不存在"}, status=400) - import socket - hostname = socket.gethostname() - local_ip = socket.gethostbyname(hostname) - source = f"{hostname} ({local_ip})" + # 获取来源,支持客户端提交 + source = request.POST.get('source', '').strip() + if not source: + source = "" + + # 如果没有提供来源,自动生成 + if not source: + import socket + hostname = socket.gethostname() + local_ip = socket.gethostbyname(hostname) + source = f"{hostname} ({local_ip})" summary = Summary.objects.create( date=timezone.now().date(), diff --git a/submit_summary_tool.py b/submit_summary_tool.py index 2b500d0..45e793c 100644 --- a/submit_summary_tool.py +++ b/submit_summary_tool.py @@ -153,10 +153,17 @@ class SubmitSummaryTool(QMainWindow): self.content_edit.setPlaceholderText("输入要提交的内容...") self.content_edit.setMaximumHeight(100) + source_layout = QHBoxLayout() + source_layout.addWidget(QLabel("来源:")) + self.source_edit = QLineEdit() + self.source_edit.setPlaceholderText("留空则自动生成") + source_layout.addWidget(self.source_edit) + submit_btn = QPushButton("提交汇总记录") submit_btn.clicked.connect(self.manual_submit) layout.addWidget(self.content_edit) + layout.addLayout(source_layout) layout.addWidget(submit_btn) group.setLayout(layout) @@ -264,7 +271,7 @@ class SubmitSummaryTool(QMainWindow): def auto_submit_content(self): """自动提交系统监控内容""" content = self.get_system_content() - self.submit_summary(content) + self.submit_summary(content, source=None) def manual_submit(self): """手动提交""" @@ -272,7 +279,8 @@ class SubmitSummaryTool(QMainWindow): if not content: QMessageBox.warning(self, "警告", "请输入要提交的内容") return - self.submit_summary(content) + source = self.source_edit.text().strip() + self.submit_summary(content, source) self.content_edit.clear() def get_csrf_token(self): @@ -299,7 +307,7 @@ class SubmitSummaryTool(QMainWindow): self.log(f"获取CSRF token失败: {str(e)}") return None, None - def submit_summary(self, content): + def submit_summary(self, content, source=""): """提交汇总记录到家庭日报系统""" submit_url = f"{self.server_url}/api/v1/summary/submit/" @@ -321,7 +329,11 @@ class SubmitSummaryTool(QMainWindow): self.log(f"设置CSRF header: X-CSRFToken = {csrf_token[:20]}...") self.log(f"发送POST请求到: {submit_url}") - response = session.post(submit_url, data={'content': content}, headers=headers, timeout=10) + post_data = {'content': content} + if source: + post_data['source'] = source + self.log(f"提交来源: {source}") + response = session.post(submit_url, data=post_data, headers=headers, timeout=10) self.log(f"服务器响应状态码: {response.status_code}") self.log(f"响应Headers: {dict(response.headers)}")