示例#1
0
文件: search.py 项目: filipp/Servo
def spotlight(request):
    """
    Searches for anything and redirects to the "closest" result view.
    GSX searches are done separately.
    """
    data, query = prepare_result_view(request)
    data['what'] = "warranty"

    if Order.objects.filter(customer__name__icontains=query).exists():
        return list_orders(request)

    if data['gsx_type'] == "serialNumber":
        try:
            device = Device.objects.get(sn=query)
            return redirect(device)
        except Device.DoesNotExist:
            return results_redirect("search-gsx", data)

    data['parts'] = ServiceOrderItem.objects.filter(sn__icontains=query)

    if gsxws.validate(query, "dispatchId"):
        try:
            po = PurchaseOrder.objects.get(confirmation=query)
            data['orders'] = [po.sales_order]
        except PurchaseOrder.DoesNotExist:
            pass

    data['products'] = Product.objects.filter(
        Q(code__icontains=query) | Q(title__icontains=query)
    )

    data['articles'] = Article.objects.filter(content__contains=query)

    return render(request, "search/spotlight.html", data)
示例#2
0
文件: search.py 项目: filipp/Servo
def prepare_result_view(request):

    query = request.GET.get('q')

    data = {'title': _('Search results for "%s"' % query)}

    data['gsx_type'] = gsxws.validate(query.upper())
    data['query'] = query
    data['tag_id'] = None
    data['cat_id'] = None  # Product category
    data['group'] = 'all'  # customer group

    return data, query
示例#3
0
def devices(request):
    """
    Searching for devices from the main navbar
    """
    query = request.GET.get("q", '').strip()
    request.session['search_query'] = query

    query = query.upper()
    valid_arg = gsxws.validate(query)

    if valid_arg in ('serialNumber', 'alternateDeviceId',):
        return redirect(search_gsx, "warranty", valid_arg, query)

    devices = Device.objects.filter(
        Q(sn__icontains=query) | Q(description__icontains=query)
    )

    title = _(u'Devices matching "%s"') % query

    return render(request, "devices/search.html", locals())
示例#4
0
def devices(request):
    """
    Searching for devices from the main navbar
    """
    query = request.GET.get("q", '').strip()
    request.session['search_query'] = query

    query = query.upper()
    valid_arg = gsxws.validate(query)

    if valid_arg in (
            'serialNumber',
            'alternateDeviceId',
    ):
        return redirect(search_gsx, "warranty", valid_arg, query)

    devices = Device.objects.filter(
        Q(sn__icontains=query) | Q(description__icontains=query))

    title = _(u'Devices matching "%s"') % query

    return render(request, "devices/search.html", locals())
示例#5
0
文件: product.py 项目: fpsw/Servo
 def is_apple_part(self):
     return validate(self.code, "partNumber")
示例#6
0
 def is_apple_part(self):
     return validate(self.code, 'partNumber')
示例#7
0
文件: device.py 项目: filipp/Servo
    def from_gsx(cls, sn, device=None, cached=True):
        """
        Initialize new Device with warranty info from GSX
        Or update existing one
        """
        sn = sn.upper()
        cache_key = 'device-%s' % sn

        # Only cache unsaved devices
        if cached and device is None:
            if cache.get(cache_key):
                return cache.get(cache_key)

        arg = gsxws.validate(sn)

        if arg not in ("serialNumber", "alternateDeviceId",):
            raise ValueError(_(u"Invalid input for warranty check: %s") % sn)

        product = gsxws.Product(sn)
        wty     = product.warranty()
        model   = product.model()

        if device is None:
            # serialNumber may sometimes come back empty
            serial_number = wty.serialNumber or sn
            device = Device(sn=serial_number)

        from servo.lib.utils import empty

        if empty(device.notes):
            device.notes = wty.notes or ''
            device.notes += wty.csNotes or ''

        device.has_onsite       = product.has_onsite
        device.is_vintage       = product.is_vintage
        device.description      = product.description
        device.fmip_active      = product.fmip_is_active

        device.slug             = slugify(device.description)
        device.configuration    = wty.configDescription or ''
        device.purchase_country = wty.purchaseCountry or ''

        device.config_code      = model.configCode
        device.product_line     = model.productLine.replace(" ", "")
        device.parts_and_labor_covered = product.parts_and_labor_covered

        device.sla_description      = wty.slaGroupDescription or ''
        device.contract_start_date  = wty.contractCoverageStartDate
        device.contract_end_date    = wty.contractCoverageEndDate
        device.onsite_start_date    = wty.onsiteStartDate
        device.onsite_end_date      = wty.onsiteEndDate

        if wty.estimatedPurchaseDate:
            device.purchased_on = wty.estimatedPurchaseDate

        device.image_url         = wty.imageURL or ''
        device.manual_url        = wty.manualURL or ''
        device.exploded_view_url = wty.explodedViewURL or ''

        if wty.warrantyStatus:
            device.set_wty_status(wty.warrantyStatus)

        if product.is_ios:
            ad = device.get_activation()
            device.imei = ad.imeiNumber or ''
            device.unlocked = product.is_unlocked(ad)
            device.applied_activation_policy = ad.appliedActivationDetails or ''
            device.initial_activation_policy = ad.initialActivationPolicyDetails or ''
            device.next_tether_policy = ad.nextTetherPolicyDetails or ''

        cache.set(cache_key, device)

        return device
示例#8
0
    def from_gsx(cls, sn, device=None, cached=True, user=None):
        """
        Initialize new Device with warranty info from GSX
        Or update existing one
        """
        sn = sn.upper()
        cache_key = 'device-%s' % sn

        # Only cache unsaved devices
        if cached and device is None:
            if cache.get(cache_key):
                return cache.get(cache_key)

        arg = gsxws.validate(sn)

        if arg not in ("serialNumber", "alternateDeviceId",):
            raise ValueError(_(u"Invalid input for warranty check: %s") % sn)

        product = gsxws.Product(sn)

        if user and user.location:
            ship_to = user.location.gsx_shipto
        else:
            gsx_act = GsxAccount.get_default_account()
            ship_to = gsx_act.ship_to

        wty = product.warranty(ship_to=ship_to)
        model = product.model()

        if device is None:
            # serialNumber may sometimes come back empty
            serial_number = wty.serialNumber or sn
            device = Device(sn=serial_number)

        from servo.lib.utils import empty

        if empty(device.notes):
            device.notes = wty.notes or ''
            device.notes += wty.csNotes or ''

        device.has_onsite = product.has_onsite
        device.is_vintage = product.is_vintage
        device.description = product.description
        device.fmip_active = product.fmip_is_active

        device.slug = slugify(device.description)
        device.configuration = wty.configDescription or ''
        device.purchase_country = countries.by_name(wty.purchaseCountry)

        device.config_code = model.configCode
        device.product_line = model.productLine.replace(" ", "")
        device.parts_and_labor_covered = product.parts_and_labor_covered

        device.sla_description = wty.slaGroupDescription or ''
        device.contract_start_date = wty.contractCoverageStartDate
        device.contract_end_date = wty.contractCoverageEndDate
        device.onsite_start_date = wty.onsiteStartDate
        device.onsite_end_date = wty.onsiteEndDate

        if wty.estimatedPurchaseDate:
            device.purchased_on = wty.estimatedPurchaseDate

        device.image_url = wty.imageURL or ''
        device.manual_url = wty.manualURL or ''
        device.exploded_view_url = wty.explodedViewURL or ''

        if wty.warrantyStatus:
            device.set_wty_status(wty.warrantyStatus)

        if product.is_ios:
            ad = device.get_activation()
            device.imei = ad.imeiNumber or ''
            device.unlocked = product.is_unlocked(ad)
            device.applied_activation_policy = ad.appliedActivationDetails or ''
            device.initial_activation_policy = ad.initialActivationPolicyDetails or ''
            device.next_tether_policy = ad.nextTetherPolicyDetails or ''

        cache.set(cache_key, device)

        return device