Skip to content

Commit 7e7450a

Browse files
feat($message): send warning email when detecting face
1 parent 10353ce commit 7e7450a

2 files changed

Lines changed: 23 additions & 8 deletions

File tree

home_guardian/message/email.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,10 +73,10 @@ def send_email(
7373
message: MIMEMultipart = build_message(
7474
subject, receiver, template_name, render_dict, picture_path
7575
)
76-
logger.info(f"Sending email. receiver: {receiver}")
76+
logger.debug(f"Sending email. receiver: {receiver}")
7777
try:
7878
smtp.sendmail(_sender, [receiver], message.as_string())
79-
logger.info(
79+
logger.debug(
8080
f"Sent email successfully. Receiver: {receiver}, subject: {subject}, template_name: {template_name}"
8181
)
8282
except smtplib.SMTPException:

home_guardian/opencv/face_detection.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,13 @@
88
from home_guardian.common.debounce_throttle import throttle
99
from home_guardian.configuration.thread_pool_configuration import executor
1010
from home_guardian.function_collection import get_data_dir, get_resources_dir
11+
from home_guardian.message.email import send_email
1112
from home_guardian.repository.detected_face_repository import save
13+
from home_guardian.repository.model.detected_face import DetectedFace
1214

13-
detected_face_dir = f"{get_data_dir()}/detection"
14-
os.makedirs(detected_face_dir, exist_ok=True)
15-
logger.warning(f"Made the directory, detected_face_dir: {detected_face_dir}")
15+
_detected_face_dir = f"{get_data_dir()}/detection"
16+
os.makedirs(_detected_face_dir, exist_ok=True)
17+
logger.warning(f"Made the directory, _detected_face_dir: {_detected_face_dir}")
1618

1719

1820
def detect_and_take_photo() -> None:
@@ -36,7 +38,7 @@ def detect_and_take_photo() -> None:
3638
cv2.destroyAllWindows()
3739

3840

39-
@throttle(2)
41+
@throttle(3)
4042
def save_capture(frame) -> None:
4143
logger.debug(f"type of frame: {type(frame)}")
4244
executor.submit(async_save_capture, frame)
@@ -45,13 +47,26 @@ def save_capture(frame) -> None:
4547
@logger.catch
4648
def async_save_capture(frame) -> None:
4749
picture_path = (
48-
f"{get_data_dir()}/detection"
50+
f"{_detected_face_dir}"
4951
f"/detected_face_{datetime.datetime.now().__str__().replace(':', '_')}.jpeg"
5052
)
5153
cv2.imwrite(picture_path, frame)
52-
detected_face = save(picture_path)
54+
detected_face: DetectedFace = save(picture_path)
5355
logger.info(
5456
"Saved picture, picture_path: {}, detected_face: {}",
5557
picture_path,
5658
detected_face,
5759
)
60+
render_dict: dict = {
61+
"subject": "Detected face",
62+
"content": "Attention, detected face, please take actions if necessary.",
63+
"warning_time": datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
64+
"content_id": f"detected_face_{detected_face}",
65+
}
66+
send_email(
67+
render_dict["subject"],
68+
"security_warning.html",
69+
render_dict,
70+
detected_face.picture_path,
71+
)
72+
logger.info("Sent `security_warning` successfully")

0 commit comments

Comments
 (0)