====== 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**