custom span for jaeger
All checks were successful
Build And Test / build-and-push (push) Successful in 4m20s
All checks were successful
Build And Test / build-and-push (push) Successful in 4m20s
This commit is contained in:
parent
f8ff4ac4c7
commit
e4e6dab226
@ -60,16 +60,23 @@ def ip_mgmt_view(request):
|
|||||||
return render(request, "butler/ip_mgmt.html", {"records": records, "var_search": query})
|
return render(request, "butler/ip_mgmt.html", {"records": records, "var_search": query})
|
||||||
|
|
||||||
|
|
||||||
|
import logging
|
||||||
|
from opentelemetry import trace
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
tracer = trace.get_tracer(__name__) # 트레이서 가져오기
|
||||||
|
|
||||||
def add_ip_record(request):
|
def add_ip_record(request):
|
||||||
# print(f"Create_Record_IP_ADDRS")
|
|
||||||
if request.method == "POST":
|
if request.method == "POST":
|
||||||
network_nm = request.POST.get("network_nm")
|
network_nm = request.POST.get("network_nm")
|
||||||
ip_addrs = request.POST.get("ip_addrs")
|
ip_addrs = request.POST.get("ip_addrs")
|
||||||
svr_nm = request.POST.get("svr_nm")
|
svr_nm = request.POST.get("svr_nm")
|
||||||
contents = request.POST.get("contents")
|
contents = request.POST.get("contents")
|
||||||
remark = request.POST.get("remark")
|
remark = request.POST.get("remark")
|
||||||
# 작성자 (author)는 로그인된 사용자로 설정
|
|
||||||
author = request.user
|
author = request.user
|
||||||
|
|
||||||
|
# 2025-04-14 트레이스 span 생성
|
||||||
|
with tracer.start_as_current_span("create_ip_record") as span:
|
||||||
# 데이터 저장
|
# 데이터 저장
|
||||||
IPManagementRecord.objects.create(
|
IPManagementRecord.objects.create(
|
||||||
network_nm=network_nm,
|
network_nm=network_nm,
|
||||||
@ -80,7 +87,17 @@ def add_ip_record(request):
|
|||||||
author=author,
|
author=author,
|
||||||
)
|
)
|
||||||
|
|
||||||
# 2025-04-14 Log 등록
|
# 2025-04-14 Jaeger용 Event 추가
|
||||||
|
span.add_event(
|
||||||
|
"Saved IPManagementRecord",
|
||||||
|
attributes={
|
||||||
|
"ip_addrs": ip_addrs,
|
||||||
|
"svr_nm": svr_nm,
|
||||||
|
"desc": "jager logs test",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
# 2025-04-14 로그 등록 (콘솔+FluentBit용)
|
||||||
logger.info(f"Create_Record_IP_ADDRS: {ip_addrs}")
|
logger.info(f"Create_Record_IP_ADDRS: {ip_addrs}")
|
||||||
|
|
||||||
return redirect("/ip_mgmt")
|
return redirect("/ip_mgmt")
|
||||||
|
157
butler/views.py.bakcup
Normal file
157
butler/views.py.bakcup
Normal file
@ -0,0 +1,157 @@
|
|||||||
|
from django.shortcuts import render, redirect, get_object_or_404
|
||||||
|
from django.contrib.auth.decorators import login_required
|
||||||
|
from django.views.generic import TemplateView
|
||||||
|
from pathlib import Path
|
||||||
|
import markdown
|
||||||
|
import os
|
||||||
|
import logging # 2025-04-14 Log 등록
|
||||||
|
from .models import IPManagementRecord
|
||||||
|
from blog.models import Post
|
||||||
|
from board_notice.models import BoardNotice
|
||||||
|
from django.db.models import Q
|
||||||
|
|
||||||
|
# 2025-04-14 Log 등록
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
class LandingPageView(TemplateView):
|
||||||
|
template_name = "butler/landing.html"
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
# context['var'] var를 templates로 전달해서 보여지는 것.
|
||||||
|
context['blog_posts'] = Post.objects.order_by('-created_at')[:3]
|
||||||
|
context['board_notices'] = BoardNotice.objects.order_by('-created_at')[:3]
|
||||||
|
return context
|
||||||
|
|
||||||
|
# --- ip management ---
|
||||||
|
# def ip_mgmt_view(request):
|
||||||
|
# # records = IPManagementRecord.objects.all()
|
||||||
|
# if request.user.is_authenticated:
|
||||||
|
# # records = IPManagementRecord.objects.filter(author=request.user).order_by(
|
||||||
|
# records = IPManagementRecord.objects.order_by(
|
||||||
|
# "ip_addrs"
|
||||||
|
# )
|
||||||
|
# else:
|
||||||
|
# # records = IPManagementRecord.objects.none()
|
||||||
|
# records = IPManagementRecord.objects.all().order_by("ip_addrs")
|
||||||
|
# return render(request, "butler/ip_mgmt.html", {"records": records})
|
||||||
|
|
||||||
|
|
||||||
|
def ip_mgmt_view(request):
|
||||||
|
query = request.GET.get("var_search", "").strip()
|
||||||
|
|
||||||
|
records = IPManagementRecord.objects.order_by(
|
||||||
|
"ip_addrs"
|
||||||
|
)
|
||||||
|
|
||||||
|
if query:
|
||||||
|
records = records.filter(
|
||||||
|
# Q(author__username__icontains=query) | Q(author__email__icontains=query)
|
||||||
|
Q(author__username__icontains=query) | Q(network_nm__icontains=query)
|
||||||
|
)
|
||||||
|
"""
|
||||||
|
SELECT * FROM ip_management_record AS ip JOIN auth_user AS au
|
||||||
|
ON ip.author_id = au.id
|
||||||
|
WHERE au.username LIKE CONCAT('%', 조회할 값, '%')
|
||||||
|
OR au.email LIKE CONCAT('%', 조회할 값, '%')
|
||||||
|
ORDER BY ip.ip_addrs;
|
||||||
|
"""
|
||||||
|
records = records.order_by("ip_addrs")
|
||||||
|
return render(request, "butler/ip_mgmt.html", {"records": records, "var_search": query})
|
||||||
|
|
||||||
|
|
||||||
|
def add_ip_record(request):
|
||||||
|
# print(f"Create_Record_IP_ADDRS")
|
||||||
|
if request.method == "POST":
|
||||||
|
network_nm = request.POST.get("network_nm")
|
||||||
|
ip_addrs = request.POST.get("ip_addrs")
|
||||||
|
svr_nm = request.POST.get("svr_nm")
|
||||||
|
contents = request.POST.get("contents")
|
||||||
|
remark = request.POST.get("remark")
|
||||||
|
# 작성자 (author)는 로그인된 사용자로 설정
|
||||||
|
author = request.user
|
||||||
|
# 데이터 저장
|
||||||
|
IPManagementRecord.objects.create(
|
||||||
|
network_nm=network_nm,
|
||||||
|
ip_addrs=ip_addrs,
|
||||||
|
svr_nm=svr_nm,
|
||||||
|
contents=contents,
|
||||||
|
remark=remark,
|
||||||
|
author=author,
|
||||||
|
)
|
||||||
|
|
||||||
|
# 2025-04-14 Log 등록
|
||||||
|
logger.info(f"Create_Record_IP_ADDRS: {ip_addrs}")
|
||||||
|
|
||||||
|
return redirect("/ip_mgmt")
|
||||||
|
|
||||||
|
|
||||||
|
def delete_ip_records(request):
|
||||||
|
# print(f"Delete_Record_IP_ADDRS")
|
||||||
|
if request.method == "POST":
|
||||||
|
selected_ids = request.POST.getlist("selected_records")
|
||||||
|
if selected_ids:
|
||||||
|
IPManagementRecord.objects.filter(id__in=selected_ids).delete()
|
||||||
|
|
||||||
|
# 2025-04-14 Log 등록
|
||||||
|
logger.info(f"Delete_Record_IP_ADDRS_idx: {selected_ids}")
|
||||||
|
return redirect("/ip_mgmt")
|
||||||
|
|
||||||
|
|
||||||
|
def edit_ip_record(request, pk):
|
||||||
|
# print(f"Edit_Record_IP_ADDRS")
|
||||||
|
record = get_object_or_404(IPManagementRecord, pk=pk)
|
||||||
|
|
||||||
|
# 검색 키워드 유지
|
||||||
|
var_search = request.GET.get("var_search") or request.POST.get("var_search")
|
||||||
|
|
||||||
|
if request.method == "POST":
|
||||||
|
record.network_nm = request.POST.get("network_nm")
|
||||||
|
record.ip_addrs = request.POST.get("ip_addrs")
|
||||||
|
record.svr_nm = request.POST.get("svr_nm")
|
||||||
|
record.contents = request.POST.get("contents")
|
||||||
|
record.remark = request.POST.get("remark")
|
||||||
|
record.save()
|
||||||
|
|
||||||
|
# 2025-04-14 Log 등록
|
||||||
|
logger.info(f"Edit_Record_IP_ADDRS: {record.ip_addrs}")
|
||||||
|
|
||||||
|
if var_search:
|
||||||
|
return redirect(f"/ip_mgmt?var_search={var_search}")
|
||||||
|
return redirect("/ip_mgmt")
|
||||||
|
|
||||||
|
|
||||||
|
return render(request, "butler/ip_mgmt.html", {"record": record})
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# --- privacy
|
||||||
|
def privacy_view(request):
|
||||||
|
# 'docs/privacy.md' 파일을 읽기
|
||||||
|
file_path = os.path.join("docs", "docs_md_files/privacy.md")
|
||||||
|
with open(file_path, "r", encoding="utf-8") as file:
|
||||||
|
text = file.read()
|
||||||
|
|
||||||
|
file_path = Path("docs/docs_md_files/privacy.md")
|
||||||
|
|
||||||
|
with file_path.open("r", encoding="utf-8") as file:
|
||||||
|
text = file.read()
|
||||||
|
# Markdown을 HTML로 변환
|
||||||
|
# html_content = markdown.markdown(text)
|
||||||
|
# Markdown을 HTML로 변환, tables 확장 활성화
|
||||||
|
html_content = markdown.markdown(
|
||||||
|
text,
|
||||||
|
extensions=[
|
||||||
|
"tables", # 테이블 지원 확장
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
# 변환된 HTML을 템플릿에 전달
|
||||||
|
return render(request, "butler/privacy.html", {"content": html_content})
|
||||||
|
|
||||||
|
|
||||||
|
def test_view(request):
|
||||||
|
return render(
|
||||||
|
request,
|
||||||
|
"butler/test.html",
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user