def get_device_from_user_agent(self, ua): try: device = Device.get_from_user_agent(ua) except NoMatch: device = None return device
def process_request(self, request): """ Detect the accessing device from the user agent and add it to the request """ try: ua = request.META.get('HTTP_X_DEVICE_USER_AGENT', '') or request.META.get('HTTP_USER_AGENT', '') or request.META.get('HTTP_CLIENT_IP', '') request.device = Device.get_from_user_agent(ua) except NoMatch: request.device = None
def search_wurfl_view(self, request): if not self.has_add_permission(request): raise PermissionDenied context = RequestContext(request) opts = self.model._meta app_label = opts.app_label context.update({ 'opts': opts, 'root_path': getattr(self.admin_site, 'root_path', None), 'has_add_permission': self.has_add_permission(request), 'current_app': self.admin_site.name, 'app_label': app_label, 'original': 'Search', 'model_admin': self }) if request.method == 'GET': form = WurflSearchForm() else: form = WurflSearchForm(data=request.POST) if form.is_valid(): user_agent = form.cleaned_data['user_agent'] if user_agent: if form.cleaned_data['test']: try: devices = Device.get_from_user_agent(user_agent) except: devices = None else: ds = Device.objects.filter(user_agent=user_agent) ds = ds.order_by('-actual_device_root') devices = [] for d in ds: d._build_full_capabilities() devices.append(d) if not hasattr(devices, '__iter__'): devices = [devices] context['form'] = WurflSearchForm(data=request.POST) context['devices'] = devices context['user_agent'] = user_agent context['media'] = self.media + form.media context['adminform'] = form return render_to_response('admin/wurfl/search.html', context, context_instance=RequestContext(request))
def UALookup(request): device = None if request.method == 'GET': form = UALookupForm(request.GET) if form.is_valid(): cd = form.cleaned_data try: device = Device.get_from_user_agent(cd['userAgent']) except NoMatch: device = None else: form = UALookupForm() return render_to_response('wurfl/lookup.html', {'form':form, 'device':device})