This works like a charm! def detect(self, agent, result): if agent and self.checkWords(agent): result[self.info_type] = Storage(name=self.name) version = self.getVersion(agent) if version: result[self.info_type].version = version if self.is_mobile: result.is_mobile = \ result[self.info_type].is_mobile = self.is_mobile return True return False
2011/8/24 Angelo Compagnucci <angelo.compagnu...@gmail.com>: > Hi Ross, > > I thought deeply on the implication on using the dist object. There > are many points in favour: > > 1) Only dist object could be mobile ones from the code, Android - > Iphone - Ipad are all dist objects. > 2) If you want to detect Windows Mobile in a near future, you'll > create a new dist object right? Then you can add the is_mobile flag > there. > 3) I think that is_mobile flag should be in dist object, because a > Linux could have a dist like ubuntu whithout is_mobile or a dist like > android whit is_mobile = True. > > I agree whit you that the is_mobile flag should be on root of the > result object and not on a leaf object as dist, we could copy the flag > if found at the end of detect phase. > Furthermore I think that is a waste copying everey time the is_mobile > flag to the root of result also when the useragent is not mobile. > > I think that the detect method should be like this: > > def detect(self, agent, result): > if agent and self.checkWords(agent): > result[self.info_type] = Storage(name=self.name) > is_mobile = getattr(self, 'is_mobile', False) > if version: > result[self.info_type].version = version > if is_mobile: > result.is_mobile = \ > result[self.info_type].is_mobile = is_mobile > return True > return False > > The getattr is really a speedy python operation and the "if is_mobile" > is evaluated to True only one time, the one it founds a dist whit > is_mobile = True. > > What do you think? > > 2011/8/24 Ross Peoples <ross.peop...@gmail.com>: >> Forgot to attach, sorry >> >> >