Commit b0897954155f7c76dd2907b522ad754f12d546d4
1 parent
5e2dde0a
Exists in
master
and in
1 other branch
Added request details to apprec result.
Showing
3 changed files
with
76 additions
and
20 deletions
Show diff stats
src/examples/app_recommender.py
... | ... | @@ -41,6 +41,7 @@ if __name__ == '__main__': |
41 | 41 | rec = Recommender(cfg) |
42 | 42 | user = LocalSystem() |
43 | 43 | user.no_auto_pkg_profile() |
44 | + #user.maximal_pkg_profile() | |
44 | 45 | |
45 | 46 | begin_time = datetime.datetime.now() |
46 | 47 | logging.debug("Recommendation computation started at %s" % begin_time) | ... | ... |
src/web/server.py
... | ... | @@ -110,51 +110,107 @@ class Request: |
110 | 110 | |
111 | 111 | self.selected_strategies = [] |
112 | 112 | if web_input.has_key('strategy'): |
113 | - if web_input['strategy'].encode('utf8') == "content": | |
113 | + if (web_input['strategy'].encode('utf8') == "content" or | |
114 | + web_input['strategy'].encode('utf8') == "hybrid"): | |
114 | 115 | if (web_input.has_key('tag') and web_input.has_key('desc')): |
115 | 116 | self.selected_strategies.append("cb") |
116 | 117 | elif web_input.has_key('desc'): |
117 | 118 | self.selected_strategies.append("cbd") |
118 | 119 | else: |
119 | 120 | self.selected_strategies.append("cbt") |
120 | - if web_input['strategy'].encode('utf8') == "collab": | |
121 | + if (web_input['strategy'].encode('utf8') == "collab" or | |
122 | + web_input['strategy'].encode('utf8') == "hybrid"): | |
121 | 123 | self.selected_strategies.append("col") |
122 | - if web_input['strategy'].encode('utf8') == "hybrid": | |
123 | - self.selected_strategies.append("hybrid") | |
124 | 124 | |
125 | 125 | if web_input.has_key('cluster'): |
126 | - self.cluster = bool(web_input.has_key['cluster'].encode('utf8')) | |
126 | + self.cluster = web_input['cluster'].encode('utf8') | |
127 | 127 | |
128 | 128 | if web_input.has_key('neighbours'): |
129 | 129 | self.neighbours = int(web_input['neighbours']) |
130 | 130 | |
131 | 131 | self.profiles_set = set() |
132 | 132 | if web_input.has_key('profile_desktop'): |
133 | - self.profiles = self.profiles.add("desktop") | |
133 | + self.profiles_set.add("desktop") | |
134 | 134 | if web_input.has_key('profile_admin'): |
135 | - self.profiles = self.profiles.add("admin") | |
135 | + self.profiles_set.add("admin") | |
136 | 136 | if web_input.has_key('profile_devel'): |
137 | - self.profiles = self.profiles.add("devel") | |
137 | + self.profiles_set.add("devel") | |
138 | 138 | if web_input.has_key('profile_science'): |
139 | - self.profiles = self.profiles.add("science") | |
139 | + self.profiles_set.add("science") | |
140 | 140 | if web_input.has_key('profile_arts'): |
141 | - self.profiles = self.profiles.add("arts") | |
141 | + self.profiles_set.add("arts") | |
142 | 142 | |
143 | 143 | def __str__(self): |
144 | 144 | return self.storage |
145 | 145 | |
146 | 146 | def validates(self): |
147 | 147 | self.errors = [] |
148 | - if (not self.pkgs_list or not self.selected_strategies): | |
148 | + if not self.pkgs_list: | |
149 | 149 | self.errors.append("No upload file or packages list was provided.") |
150 | - return False | |
151 | 150 | if not self.selected_strategies: |
152 | 151 | self.errors.append("No strategy was selected.") |
152 | + if self.errors: | |
153 | 153 | return False |
154 | 154 | return True |
155 | 155 | |
156 | - def get_strategy_details(self): | |
157 | - return self.selected_strategies[0] | |
156 | + def get_details(self): | |
157 | + details = {} | |
158 | + details['User id'] = self.user_id | |
159 | + if len(self.pkgs_list)>10: | |
160 | + details['Packages list'] = (" ".join(self.pkgs_list[:5]) | |
161 | + +" ... ("+str(len(self.pkgs_list)-10) | |
162 | + +" more)") | |
163 | + else: | |
164 | + details['Packages list'] = " ".join(self.pkgs_list) | |
165 | + | |
166 | + if self.storage.has_key('pkgs_list') and self.storage['pkgs_file']: | |
167 | + details['User profile'] = "from upload file and packages list" | |
168 | + elif self.storage.has_key('pkgs_list'): | |
169 | + details['User profile'] = "from packages list" | |
170 | + else: | |
171 | + details['User profile'] = "from upload file" | |
172 | + | |
173 | + if self.storage.has_key('limit'): | |
174 | + details['Recommendation size'] = self.limit | |
175 | + if self.storage.has_key('profile_size'): | |
176 | + details['Profile size'] = self.profile_size | |
177 | + if self.storage.has_key('weight'): | |
178 | + if self.weight == "trad": | |
179 | + details['weight'] = "traditional" | |
180 | + else: | |
181 | + details['weight'] = "BM25" | |
182 | + | |
183 | + if self.profiles_set: | |
184 | + details['Personal profile'] = " ".join(list(self.profiles_set)) | |
185 | + | |
186 | + if len(self.selected_strategies) > 1: details['strategy'] = "Hybrid" | |
187 | + for strategy in self.selected_strategies: | |
188 | + if strategy == "col": | |
189 | + if not details.has_key('strategy'): | |
190 | + details['Strategy'] = "Collaborative" | |
191 | + if self.storage.has_key('cluster'): | |
192 | + details['Cluster'] = self.cluster | |
193 | + if self.storage.has_key('neighbours'): | |
194 | + details['Neighbours'] = self.neighbours | |
195 | + if not details.has_key('strategy'): | |
196 | + details['Strategy'] = "Collaborative" | |
197 | + else: | |
198 | + if not details.has_key('strategy'): | |
199 | + details['Strategy'] = "Content-based" | |
200 | + if "cb" in self.selected_strategies: | |
201 | + details['Content representation'] = "tags and descriptions" | |
202 | + elif "cbt" in self.selected_strategies: | |
203 | + details['Content representation'] = "packages tags" | |
204 | + elif "cbd" in self.selected_strategies: | |
205 | + details['Content representation'] = "packages descriptions" | |
206 | + | |
207 | + print details | |
208 | + return details | |
209 | + | |
210 | +class RandomRequest(Request): | |
211 | + def __init__(self): | |
212 | + pass | |
213 | + #self.storage = web.Storage() | |
158 | 214 | |
159 | 215 | class AppRecommender: |
160 | 216 | def POST(self): | ... | ... |
src/web/templates/apprec.html
... | ... | @@ -11,12 +11,11 @@ $$(document).ready(function() { |
11 | 11 | </script> |
12 | 12 | |
13 | 13 | <div class="graybox"> |
14 | - <h1>Details of recommendation strategy</h1> | |
15 | - $request.get_strategy_details() | |
16 | -<!--<ul class="toc"> | |
17 | -$for strategy, result in recommends.items(): | |
18 | - <li><a href="#$strategy">$strategy</a></li> | |
19 | -</ul>--> | |
14 | + <h1>Recommendation strategy details</h1> | |
15 | + $for key, value in request.get_details().items(): | |
16 | + <ul class="toc"> | |
17 | + <li><b>$key:</b> $value</li> | |
18 | + </ul> | |
20 | 19 | </div> |
21 | 20 | |
22 | 21 | <form action="/thanks" method="post" enctype="multipart/form-data"> | ... | ... |