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 <[email protected]>:
> 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 <[email protected]>:
>> Forgot to attach, sorry
>>
>>
>