jumpserver/apps/audits/utils.py

39 lines
1.1 KiB
Python
Raw Normal View History

import csv
import codecs
from django.http import HttpResponse
2019-11-05 10:46:29 +00:00
2021-09-27 11:06:26 +00:00
from .const import DEFAULT_CITY
2019-11-05 10:46:29 +00:00
from common.utils import validate_ip, get_ip_city
def get_excel_response(filename):
excel_response = HttpResponse(content_type='text/csv')
excel_response[
'Content-Disposition'] = 'attachment; filename="%s"' % filename
excel_response.write(codecs.BOM_UTF8)
return excel_response
def write_content_to_excel(response, header=None, login_logs=None, fields=None):
writer = csv.writer(response, dialect='excel', quoting=csv.QUOTE_MINIMAL)
if header:
writer.writerow(header)
if login_logs:
for log in login_logs:
data = [getattr(log, field.name) for field in fields]
writer.writerow(data)
2019-11-05 10:46:29 +00:00
return response
def write_login_log(*args, **kwargs):
from audits.models import UserLoginLog
2021-09-27 11:06:26 +00:00
2019-11-05 10:46:29 +00:00
ip = kwargs.get('ip') or ''
if not (ip and validate_ip(ip)):
ip = ip[:15]
2021-09-27 11:06:26 +00:00
city = DEFAULT_CITY
2019-11-05 10:46:29 +00:00
else:
2021-09-27 11:06:26 +00:00
city = get_ip_city(ip) or DEFAULT_CITY
2019-11-05 10:46:29 +00:00
kwargs.update({'ip': ip, 'city': city})
UserLoginLog.objects.create(**kwargs)