Commit d5b8b1c7f111430b4d7fd7ec9d5672ad8c02e660
1 parent
94efb102
Exists in
master
and in
1 other branch
Moved connection to DDE test do DebianPackage class.
Showing
1 changed file
with
29 additions
and
4 deletions
Show diff stats
src/data.py
... | ... | @@ -32,6 +32,7 @@ import re |
32 | 32 | import operator |
33 | 33 | import urllib |
34 | 34 | import simplejson as json |
35 | +import socket | |
35 | 36 | |
36 | 37 | from error import Error |
37 | 38 | from singleton import Singleton |
... | ... | @@ -184,6 +185,30 @@ class DebianPackage(): |
184 | 185 | def __init__(self,pkg_name): |
185 | 186 | self.name = pkg_name |
186 | 187 | |
188 | + def connect_to_dde(self,dde_server,dde_port): | |
189 | + try: | |
190 | + s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) | |
191 | + # just one parameter (a tuple) | |
192 | + s.connect((dde_server,dde_port)) | |
193 | + s.close() | |
194 | + return True | |
195 | + except: | |
196 | + logging.debug("Could not connect to DDE") | |
197 | + return False | |
198 | + | |
199 | + def load_summary(self): | |
200 | + cfg = Config() | |
201 | + if self.connect_to_dde(cfg.dde_server,cfg.dde_port): | |
202 | + json_data = json.load(urllib.urlopen(cfg.dde_url % self.name)) | |
203 | + self.summary = json_data['r']['description'] | |
204 | + | |
205 | + def load_details(self): | |
206 | + cfg = Config() | |
207 | + if self.connect_to_dde(cfg.dde_server,cfg.dde_port): | |
208 | + self.load_details_from_dde(cfg.dde_url) | |
209 | + else: | |
210 | + self.load_details_from_apt() | |
211 | + | |
187 | 212 | def load_details_from_apt(self): |
188 | 213 | pkg_version = apt.Cache()[self.name].candidate |
189 | 214 | |
... | ... | @@ -213,9 +238,8 @@ class DebianPackage(): |
213 | 238 | if pkg_version.record.has_key('Provides'): |
214 | 239 | self.provides = pkg_version.record['Provides'] |
215 | 240 | |
216 | - def load_details_from_dde(self,dde_server,dde_port): | |
217 | - json_data = json.load(urllib.urlopen("http://%s:%d/q/udd/packages/prio-debian-sid/%s?t=json" | |
218 | - % (dde_server,dde_port,self.name))) | |
241 | + def load_details_from_dde(self,dde_url): | |
242 | + json_data = json.load(urllib.urlopen(dde_url % self.name)) | |
219 | 243 | |
220 | 244 | self.maintainer = json_data['r']['maintainer'] |
221 | 245 | self.version = json_data['r']['version'] |
... | ... | @@ -240,7 +264,8 @@ class DebianPackage(): |
240 | 264 | self.replaces = json_data['r']['replaces'] |
241 | 265 | if json_data['r']['provides']: |
242 | 266 | self.provides = json_data['r']['provides'] |
243 | - self.popcon_insts = json_data['r']['popcon']['insts'] | |
267 | + if json_data['r']['popcon']['insts']: | |
268 | + self.popcon_insts = json_data['r']['popcon']['insts'] | |
244 | 269 | |
245 | 270 | def format_description(self,description): |
246 | 271 | return description.replace(' .\n','<br />').replace('\n','<br />') | ... | ... |