-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathflashcard.py
60 lines (49 loc) · 1.48 KB
/
flashcard.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
from csv import DictWriter
from constants import (
USER_DATA_FILE,
DECKS_DATA_FILE,
)
class Flashcard:
def __init__(self, front: str, back: str) -> None:
self.front = front
self.back = back
def __str__(self) -> str:
return f"{self.front}: {self.back}"
@property
def front(self) -> str:
return self._front
@front.setter
def front(self, front: str) -> None:
front = front.strip().lower()
if not front:
raise ValueError("Invalid blank")
self._front = front
@property
def back(self) -> str:
return self._back
@back.setter
def back(self, back: str) -> None:
back = back.strip().lower()
if not back:
raise ValueError("Invalid blank")
self._back = back
def save(self, filename: str) -> None:
filename = filename.strip().lower()
if (
not filename
or filename == USER_DATA_FILE.removesuffix(".csv")
or filename == DECKS_DATA_FILE.removesuffix(".csv")
):
raise ValueError("Invalid deck name")
with open(f"{filename}.csv", "a", newline="") as file:
writer = DictWriter(file, fieldnames=["front", "back"])
if file.tell() == 0:
writer.writeheader()
writer.writerow(
{
"front": self.front,
"back": self.back,
}
)
if __name__ == '__main__':
pass