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 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">
... ...