Skip to content

Commit 9574ec2

Browse files
authored
Merge pull request #3 from maddevsio/update_code_reading
Update code reading
2 parents ea1b258 + 0fea559 commit 9574ec2

File tree

3 files changed

+99
-0
lines changed

3 files changed

+99
-0
lines changed

code_reading/level_2.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,3 +25,28 @@ def user_string(data: dict) -> str:
2525
pass
2626

2727
return name
28+
29+
30+
def validate_data(data):
31+
if isinstance(data, list):
32+
for item in data:
33+
if isinstance(item, dict):
34+
if 'name' in item:
35+
name = item['name']
36+
if name:
37+
if len(name) < 3:
38+
raise Exception("Error: Name must be at least 3 characters long!")
39+
elif len(name) > 50:
40+
raise Exception("Error: Name cannot exceed 50 characters!")
41+
elif not name.isalpha():
42+
raise Exception("Error: Name must contain only alphabetic characters!")
43+
else:
44+
raise Exception(f"Processing name: {name}")
45+
else:
46+
raise Exception("Error: Empty name provided!")
47+
else:
48+
raise Exception("Error: Name key not found in dictionary!")
49+
else:
50+
raise Exception("Error: Input data must be a list of dictionaries!")
51+
else:
52+
raise Exception("Error: Input data must be a list!")

code_reading/level_3.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,28 @@ def get_user_from_api(user_id: int) -> dict | None:
1717
return response.json()
1818

1919

20+
def calculate_salary(employee):
21+
if employee.department == "Engineering":
22+
if employee.experience >= 5:
23+
salary = employee.base_salary * 1.2
24+
else:
25+
salary = employee.base_salary * 1.1
26+
elif employee.department == "Marketing":
27+
if employee.experience >= 3:
28+
salary = employee.base_salary * 1.15
29+
else:
30+
salary = employee.base_salary * 1.05
31+
elif employee.department == "HR":
32+
if employee.experience >= 2:
33+
salary = employee.base_salary * 1.1
34+
else:
35+
salary = employee.base_salary
36+
else:
37+
salary = employee.base_salary * 1.05
38+
39+
return salary
40+
41+
2042
def reset_user_password(user: User):
2143
to_hash = f"{time.time()}{user.get_username()}".encode("utf-8")
2244
reset_token = hashlib.md5(to_hash).hexdigest()

code_reading/level_4.py

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
class UserModel:
2+
def __init__(self, name, email, database, email_service):
3+
self.name = name
4+
self.email = email
5+
self.database = database
6+
self.email_service = email_service
7+
8+
def set_name(self, new_name):
9+
if new_name:
10+
self.name = new_name
11+
else:
12+
return Exception("Error: Empty name provided!")
13+
14+
def get_name(self):
15+
return self.name
16+
17+
def save_to_database(self):
18+
# Assume a database connection is established here
19+
if len(self.name) > 0:
20+
self.database.save(self.name)
21+
else:
22+
raise Exception("Error: Cannot save empty name to database!")
23+
24+
def load_from_database(self, name):
25+
data = self.database.load(name)
26+
if data:
27+
self.name = data
28+
else:
29+
raise Exception("Error: Data not found in database!")
30+
31+
def save_to_file(self):
32+
with open("output.txt", "w") as file:
33+
file.write(self.name)
34+
35+
def send_email(self, recipient):
36+
if recipient:
37+
self.email_service.send_email(recipient, self.name)
38+
else:
39+
Exception("Error: No recipient provided!")
40+
41+
def validate_name(self):
42+
if len(self.name) < 3:
43+
raise Exception("Error: Name must be at least 3 characters long!")
44+
elif len(self.name) > 50:
45+
raise Exception("Error: Name cannot exceed 50 characters!")
46+
elif not self.name.isalpha():
47+
raise Exception("Error: Name must contain only alphabetic characters!")
48+
49+
def generate_report(self):
50+
# Assume a report generation library is imported and configured
51+
report = ReportGenerator.generate(self.name)
52+
return report

0 commit comments

Comments
 (0)