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 />') |