/
user.py
42 lines (32 loc) · 1.05 KB
/
user.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
from movie import Movie
class User:
def __init__(self, name):
self.name = name
self.movies = []
def __repr__(self):
return f'<User "{self.name}">'
@property
def watched_movies(self):
return [movie for movie in self.movies if movie.watched]
@property
def unwatched_movies(self):
return [movie for movie in self.movies if not movie.watched]
@property
def json(self):
return {
'name': self.name,
'movies': [movie.json for movie in self.movies]
}
@classmethod
def from_json(cls, json_data):
user = cls(json_data['name'])
for movie_data in json_data['movies']:
movie = Movie.from_json(movie_data)
user.movies.append(movie)
return user
def add_movie(self, name, genre, watched=False):
movie = Movie(name, genre, watched)
self.movies.append(movie)
return movie
def delete_movie(self, name):
self.movies = [movie for movie in self.movies if movie.name == name]