Commit b0897954155f7c76dd2907b522ad754f12d546d4

Authored by Tássia Camões Araújo
1 parent 5e2dde0a
Exists in master and in 1 other branch add_vagrant

Added request details to apprec result.

src/examples/app_recommender.py
@@ -41,6 +41,7 @@ if __name__ == '__main__': @@ -41,6 +41,7 @@ if __name__ == '__main__':
41 rec = Recommender(cfg) 41 rec = Recommender(cfg)
42 user = LocalSystem() 42 user = LocalSystem()
43 user.no_auto_pkg_profile() 43 user.no_auto_pkg_profile()
  44 + #user.maximal_pkg_profile()
44 45
45 begin_time = datetime.datetime.now() 46 begin_time = datetime.datetime.now()
46 logging.debug("Recommendation computation started at %s" % begin_time) 47 logging.debug("Recommendation computation started at %s" % begin_time)
src/web/server.py
@@ -110,51 +110,107 @@ class Request: @@ -110,51 +110,107 @@ class Request:
110 110
111 self.selected_strategies = [] 111 self.selected_strategies = []
112 if web_input.has_key('strategy'): 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 if (web_input.has_key('tag') and web_input.has_key('desc')): 115 if (web_input.has_key('tag') and web_input.has_key('desc')):
115 self.selected_strategies.append("cb") 116 self.selected_strategies.append("cb")
116 elif web_input.has_key('desc'): 117 elif web_input.has_key('desc'):
117 self.selected_strategies.append("cbd") 118 self.selected_strategies.append("cbd")
118 else: 119 else:
119 self.selected_strategies.append("cbt") 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 self.selected_strategies.append("col") 123 self.selected_strategies.append("col")
122 - if web_input['strategy'].encode('utf8') == "hybrid":  
123 - self.selected_strategies.append("hybrid")  
124 124
125 if web_input.has_key('cluster'): 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 if web_input.has_key('neighbours'): 128 if web_input.has_key('neighbours'):
129 self.neighbours = int(web_input['neighbours']) 129 self.neighbours = int(web_input['neighbours'])
130 130
131 self.profiles_set = set() 131 self.profiles_set = set()
132 if web_input.has_key('profile_desktop'): 132 if web_input.has_key('profile_desktop'):
133 - self.profiles = self.profiles.add("desktop") 133 + self.profiles_set.add("desktop")
134 if web_input.has_key('profile_admin'): 134 if web_input.has_key('profile_admin'):
135 - self.profiles = self.profiles.add("admin") 135 + self.profiles_set.add("admin")
136 if web_input.has_key('profile_devel'): 136 if web_input.has_key('profile_devel'):
137 - self.profiles = self.profiles.add("devel") 137 + self.profiles_set.add("devel")
138 if web_input.has_key('profile_science'): 138 if web_input.has_key('profile_science'):
139 - self.profiles = self.profiles.add("science") 139 + self.profiles_set.add("science")
140 if web_input.has_key('profile_arts'): 140 if web_input.has_key('profile_arts'):
141 - self.profiles = self.profiles.add("arts") 141 + self.profiles_set.add("arts")
142 142
143 def __str__(self): 143 def __str__(self):
144 return self.storage 144 return self.storage
145 145
146 def validates(self): 146 def validates(self):
147 self.errors = [] 147 self.errors = []
148 - if (not self.pkgs_list or not self.selected_strategies): 148 + if not self.pkgs_list:
149 self.errors.append("No upload file or packages list was provided.") 149 self.errors.append("No upload file or packages list was provided.")
150 - return False  
151 if not self.selected_strategies: 150 if not self.selected_strategies:
152 self.errors.append("No strategy was selected.") 151 self.errors.append("No strategy was selected.")
  152 + if self.errors:
153 return False 153 return False
154 return True 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 class AppRecommender: 215 class AppRecommender:
160 def POST(self): 216 def POST(self):
src/web/templates/apprec.html
@@ -11,12 +11,11 @@ $$(document).ready(function() { @@ -11,12 +11,11 @@ $$(document).ready(function() {
11 </script> 11 </script>
12 12
13 <div class="graybox"> 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 </div> 19 </div>
21 20
22 <form action="/thanks" method="post" enctype="multipart/form-data"> 21 <form action="/thanks" method="post" enctype="multipart/form-data">