====== Picalike Customer Interface ====== ===== General ===== The picalike customer interface is the backend API for both frontend services Visualytics and OSA. Because of that, changes in the frontend often needs changes in pci and vice versa. * [[pci_doku|API Documentation]] * [[upci|Operations]] ===== Functions ===== There are different functions called via the API based on which PHP function is making the call. Important to note here that most Functions exists in 2 flavours. * function1 * function1_alternative Usually if you make changes to function1 the changes need also be applied to function1_alternative, but in the same manner. ===== Special Solutions for Customers ===== Currently 3 Special Solutions are implemented. These solutions implement a filter behavior for the results returned by the PCI API. |**HirmerGG** |**Atelier Goldener Schitt**| |big_tall |extra_image_filter | |ist_reduziert| | The Solutions are implemented very much the same: **Changes to get_products_metadata** 1. Add your new Filter here allowed_extra_fields = ["big_tall", "ist_reduziert", "extra_image_filter"] 2. Add your new Filter here extra_fields = postvars.get("extra_fields", []) # Should Contain extra_filter if send to API for item in allowed_extra_fields: if item in extra_fields: LOG.debug("%s field in extra_fields", item) fields_dict["metaData.{}".format(item)] = 1 # Add field to include it in MongoDB response if "extra_image_filter" in extra_fields: fields_dict["metaData.extraImgUrl"] = 1 # AGS finder to exclude products without an extra_image finder["metaData.extra_image_filter"] = "extra_image_exists" # Exclude from non matching items from results 3. Check if your filter was applied in the results big_tall = "big_tall" in extra_fields extra_image_filter = "extra_image_filter" in extra_fields ist_reduziert = "ist_reduziert" in extra_fields 4. Display results with additional filter fields if big_tall: extra_field = extract_big_tall(item["metaData"].get("big_tall", "no big_tall")) result["big_tall"] = extra_field if ist_reduziert: extra_field = item["metaData"].get("ist_reduziert", "no ist_reduziert") result["ist_reduziert"] = extra_field if extra_image_filter: extra_field = item["metaData"].get("extraImgUrl", None) result["url"] = extra_field **Changes to products**
    * Same as step 1 above * Same as step 4 above