Hide keyboard shortcuts

Hot-keys on this page

r m x p   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

1# Application Schemas 

2from marshmallow import fields 

3from src import ma 

4from src.model import RecommendationLaunchedForProfileEvent, RecoLaunchedLikedGenreModel, RecoMetaModel, RecoResultModel 

5from src.utils import SQLAlchemyAutoSchema 

6 

7 

8class RecoLaunchedLikedGenreItem(SQLAlchemyAutoSchema): 

9 content_type = fields.Function(lambda obj: obj.content_type.value) 

10 

11 class Meta: 

12 model = RecoLaunchedLikedGenreModel 

13 include_fk = True 

14 fields = ("name", "content_type") 

15 

16# --------------------------- 

17 

18 

19class RecoMetaMeta: 

20 model = RecoMetaModel 

21 include_fk = True 

22 

23 

24class RecoMetaBase(SQLAlchemyAutoSchema): 

25 class Meta(RecoMetaMeta): 

26 fields = ("rating", "last_rating_date", "review_see_count", 

27 "last_review_see_date", "count", "last_count_increment") 

28 

29 

30class RecoMetaApplicationItem(SQLAlchemyAutoSchema): 

31 application = ma.Nested("ApplicationBase") 

32 

33 class Meta(RecoMetaMeta): 

34 fields = ("application", "rating", "last_rating_date", "review_see_count", 

35 "last_review_see_date", "count", "last_count_increment") 

36 

37 

38class RecoMetaBookItem(SQLAlchemyAutoSchema): 

39 book = ma.Nested("BookBase") 

40 

41 class Meta(RecoMetaMeta): 

42 fields = ("book", "rating", "last_rating_date", "review_see_count", 

43 "last_review_see_date", "count", "last_count_increment") 

44 

45 

46class RecoMetaGameItem(SQLAlchemyAutoSchema): 

47 game = ma.Nested("GameBase") 

48 

49 class Meta(RecoMetaMeta): 

50 fields = ("game", "rating", "last_rating_date", "review_see_count", 

51 "last_review_see_date", "count", "last_count_increment") 

52 

53 

54class RecoMetaMovieItem(SQLAlchemyAutoSchema): 

55 movie = ma.Nested("MovieBase") 

56 

57 class Meta(RecoMetaMeta): 

58 fields = ("movie", "rating", "last_rating_date", "review_see_count", 

59 "last_review_see_date", "count", "last_count_increment") 

60 

61 

62class RecoMetaSerieItem(SQLAlchemyAutoSchema): 

63 serie = ma.Nested("SerieBase") 

64 

65 class Meta(RecoMetaMeta): 

66 fields = ("serie", "rating", "last_rating_date", "review_see_count", 

67 "last_review_see_date", "count", "last_count_increment") 

68 

69 

70class RecoMetaTrackItem(SQLAlchemyAutoSchema): 

71 track = ma.Nested("TrackBase") 

72 

73 class Meta(RecoMetaMeta): 

74 fields = ("track", "rating", "last_rating_date", "review_see_count", 

75 "last_review_see_date", "count", "last_count_increment") 

76 

77# --------------------------- 

78 

79 

80class RecoResultMeta: 

81 model = RecoResultModel 

82 include_fk = True 

83 

84 

85class RecoResultBase(SQLAlchemyAutoSchema): 

86 class Meta(RecoResultMeta): 

87 fields = ("content_id", "score", "engine") 

88 

89 

90class RecoResultApplicationItem(SQLAlchemyAutoSchema): 

91 application = ma.Nested("ApplicationBase") 

92 

93 class Meta(RecoResultMeta): 

94 fields = ("application", "score", "engine") 

95 

96 

97class RecoResultBookItem(SQLAlchemyAutoSchema): 

98 book = ma.Nested("BookBase") 

99 

100 class Meta(RecoResultMeta): 

101 fields = ("book", "score", "engine") 

102 

103 

104class RecoResultGameItem(SQLAlchemyAutoSchema): 

105 game = ma.Nested("GameBase") 

106 

107 class Meta(RecoResultMeta): 

108 fields = ("game", "score", "engine") 

109 

110 

111class RecoResultMovieItem(SQLAlchemyAutoSchema): 

112 movie = ma.Nested("MovieBase") 

113 

114 class Meta(RecoResultMeta): 

115 fields = ("movie", "score", "engine") 

116 

117 

118class RecoResultSerieItem(SQLAlchemyAutoSchema): 

119 serie = ma.Nested("SerieBase") 

120 

121 class Meta(RecoResultMeta): 

122 fields = ("serie", "score", "engine") 

123 

124 

125class RecoResultTrackItem(SQLAlchemyAutoSchema): 

126 track = ma.Nested("TrackBase") 

127 

128 class Meta(RecoResultMeta): 

129 fields = ("track", "score", "engine") 

130 

131# --------------------------- 

132 

133 

134class RecommendationLaunchedForProfileMeta: 

135 model = RecommendationLaunchedForProfileEvent 

136 include_fk = True 

137 

138 

139class RecommendationLaunchedForProfileBase(SQLAlchemyAutoSchema): 

140 profile = ma.Nested("ProfileBase") 

141 

142 class Meta(RecommendationLaunchedForProfileMeta): 

143 fields = ("profile", "id", "occured_at") 

144 

145 

146class RecommendationLaunchedForProfileItem(SQLAlchemyAutoSchema): 

147 profile = ma.Nested("ProfileBase") 

148 liked_genres = ma.Nested("RecoLaunchedLikedGenreItem", many=True) 

149 

150 class Meta(RecommendationLaunchedForProfileMeta): 

151 fields = ("profile", "liked_genres", "id", "occured_at")