Simple Attendance Tracker using Python (original) (raw)
import
openpyxl
import
smtplib
from
email.mime.multipart
import
MIMEMultipart
from
email.mime.text
import
MIMEText
book
=
openpyxl.load_workbook(
'D:\\attendance.xlsx'
)
sheet
=
book[
'Sheet1'
]
r
=
sheet.max_row
resp
=
1
c
=
sheet.max_column
l1
=
[]
l2
=
""
l3
=
[]
staff_mails
=
[
'erakshaya485@gmail.com'
,
'yyyyyyyy@gmail.com'
]
m1
=
"warning!!! you can take only one more day leave for CI class"
m2
=
"warning!!! you can take only one more day leave for python class"
m3
=
"warning!!! you can take only one more day leave for DM class"
def
savefile():
`` book.save(r
'D:\\attendance.xlsx'
)
`` print
(
"saved!"
)
def
check(no_of_days, row_num, b):
`` global
staff_mails
`` global
l2
`` global
l3
`` for
student
in
range
(
0
,
len
(row_num)):
`` if
no_of_days[student]
is
2
:
`` if
b
is
1
:
`` l1.append(sheet.cell(row
=
row_num[student], column
=
2
).value)
`` mailstu(l1, m1)
`` elif
b
is
2
:
`` l1.append(sheet.cell(row
=
row_num[student], column
=
2
).value)
`` mailstu(l1, m2)
`` else
:
`` l1.append(sheet.cell(row
=
row_num[student], column
=
2
).value)
`` mailstu(l1, m3)
`` elif
no_of_days[student] >
2
:
`` if
b
is
1
:
`` l2
=
l2
+
str
(sheet.cell(row
=
row_num[student], column
=
1
).value)
`` l3.append(sheet.cell(row
=
row_num[student], column
=
2
).value)
`` subject
=
"CI"
`` elif
b
is
2
:
`` l2
=
l2
+
str
(sheet.cell(row
=
row_num[student], column
=
1
).value)
`` l3.append(sheet.cell(row
=
row_num[student], column
=
2
).value)
`` subject
=
"Python"
`` else
:
`` l2
=
l2
+
str
(sheet.cell(row
=
row_num[student], column
=
1
).value)
`` l3.append(sheet.cell(row
=
row_num[student], column
=
2
).value)
`` subject
=
"Data mining"
`` if
l2 !
=
""
and
len
(l3) !
=
0
:
`` msg1
=
"you have lack of attendance in "
+
subject
+
" !!!"
`` msg2
=
"the following students have lack of attendance in your subject : "
+
l2
`` mailstu(l3, msg1)
`` staff_id
=
staff_mails[b
-
1
]
`` mailstaff(staff_id, msg2)
def
mailstu(li, msg):
`` from_id
=
'crazygirlaks@gmail.com'
`` pwd
=
'ERAkshaya485'
`` s
=
smtplib.SMTP(
'smtp.gmail.com'
,
587
, timeout
=
120
)
`` s.starttls()
`` s.login(from_id, pwd)
`` for
i
in
range
(
0
,
len
(li)):
`` to_id
=
li[i]
`` message
=
MIMEMultipart()
`` message[
'Subject'
]
=
'Attendance report'
`` message.attach(MIMEText(msg,
'plain'
))
`` content
=
message.as_string()
`` s.sendmail(from_id, to_id, content)
`` s.quit()
`` print
(
"mail sent to students"
)
def
mailstaff(mail_id, msg):
`` from_id
=
'crazygirlaks@gmail.com'
`` pwd
=
'ERAkshaya485'
`` to_id
=
mail_id
`` message
=
MIMEMultipart()
`` message[
'Subject'
]
=
'Lack of attendance report'
`` message.attach(MIMEText(msg,
'plain'
))
`` s
=
smtplib.SMTP(
'smtp.gmail.com'
,
587
, timeout
=
120
)
`` s.starttls()
`` s.login(from_id, pwd)
`` content
=
message.as_string()
`` s.sendmail(from_id, to_id, content)
`` s.quit()
`` print
(
'Mail Sent to staff'
)
while
resp
is
1
:
`` print
(
"1--->CI\n2--->python\n3--->DM"
)
`` y
=
int
(
input
(
"enter subject :"
))
`` no_of_absentees
=
int
(
input
(
'no.of.absentees :'
))
`` if
(no_of_absentees >
1
):
`` x
=
list
(
map
(
int
, (
input
(
'roll nos :'
).split(
' '
))))
`` else
:
`` x
=
[
int
(
input
(
'roll no :'
))]
`` row_num
=
[]
`` no_of_days
=
[]
`` for
student
in
x:
`` for
i
in
range
(
2
, r
+
1
):
`` if
y
is
1
:
`` if
sheet.cell(row
=
i, column
=
1
).value
is
student:
`` m
=
sheet.cell(row
=
i, column
=
3
).value
`` m
=
m
+
1
`` sheet.cell(row
=
i, column
=
3
).value
=
m
`` savefile()
`` no_of_days.append(m)
`` row_num.append(i)
`` elif
y
is
2
:
`` if
sheet.cell(row
=
i, column
=
1
).value
is
student:
`` m
=
sheet.cell(row
=
i, column
=
4
).value
`` m
=
m
+
1
`` sheet.cell(row
=
i, column
=
4
).value
=
m
+
1
`` no_of_days.append(m)
`` row_num.append(i)
`` elif
y
is
3
:
`` if
sheet.cell(row
=
i, column
=
1
).value
is
student:
`` m
=
sheet.cell(row
=
i, column
=
5
).value
`` m
=
m
+
1
`` sheet.cell(row
=
i, column
=
5
).value
=
m
+
1
`` row_num.append(i)
`` no_of_days.append(m)
`` check(no_of_days, row_num, y)
`` resp
=
int
(
input
(
'another subject ? 1---->yes 0--->no'
))