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,6 +32,7 @@ import re | ||
32 | import operator | 32 | import operator |
33 | import urllib | 33 | import urllib |
34 | import simplejson as json | 34 | import simplejson as json |
35 | +import socket | ||
35 | 36 | ||
36 | from error import Error | 37 | from error import Error |
37 | from singleton import Singleton | 38 | from singleton import Singleton |
@@ -184,6 +185,30 @@ class DebianPackage(): | @@ -184,6 +185,30 @@ class DebianPackage(): | ||
184 | def __init__(self,pkg_name): | 185 | def __init__(self,pkg_name): |
185 | self.name = pkg_name | 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 | def load_details_from_apt(self): | 212 | def load_details_from_apt(self): |
188 | pkg_version = apt.Cache()[self.name].candidate | 213 | pkg_version = apt.Cache()[self.name].candidate |
189 | 214 | ||
@@ -213,9 +238,8 @@ class DebianPackage(): | @@ -213,9 +238,8 @@ class DebianPackage(): | ||
213 | if pkg_version.record.has_key('Provides'): | 238 | if pkg_version.record.has_key('Provides'): |
214 | self.provides = pkg_version.record['Provides'] | 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 | self.maintainer = json_data['r']['maintainer'] | 244 | self.maintainer = json_data['r']['maintainer'] |
221 | self.version = json_data['r']['version'] | 245 | self.version = json_data['r']['version'] |
@@ -240,7 +264,8 @@ class DebianPackage(): | @@ -240,7 +264,8 @@ class DebianPackage(): | ||
240 | self.replaces = json_data['r']['replaces'] | 264 | self.replaces = json_data['r']['replaces'] |
241 | if json_data['r']['provides']: | 265 | if json_data['r']['provides']: |
242 | self.provides = json_data['r']['provides'] | 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 | def format_description(self,description): | 270 | def format_description(self,description): |
246 | return description.replace(' .\n','<br />').replace('\n','<br />') | 271 | return description.replace(' .\n','<br />').replace('\n','<br />') |