Changelog
Bug Fixes
- Locations: fix migration issue on unique constraint (#1299) (32775ec)
Features
- integrate price tag classification model (#1284) (3d18444)
- Locations: new
osm_brand_logo_url property. Return in the API. Link to openfoodfacts/brand-images (#1296) (8d05a8d)
- Products: new 'creator' field (synced with OFF) (#1288) (49a916e)
- Products: new 'quantity' field (synced with OFF) (#1114) (50fb5c3)
Bug Fixes
- Tests: lower case for consistency + fix output/ouput typo + assertIn when possible (#1268) (feef886)
Documentation
- move tutorials to subfolder. new dev subfolder with CONTRIBUTING & INSTALL. remove awesome-pages plugin to simplify configuration (#1290) (74f4de6)
- new API.md. rename 'Tutorials' to 'Guides' (diataxis) (#1294) (1abbe90)
- rename Dev to Community. Add pages on Weekly meetings, UX-UI, Github & Slack. simplify README (#1295) (b9ce51d)
- symlink instead of duplicate CONTRIBUTING & INSTALL. Simplify setup. Add Contributors section (#1293) (3a05c4f)
- update tutorials to add multiple prices (receipt & shelf) (#1291) (6117629)
Technical
- deps: update Django to 5.2.14 (#1298) (47f189d)
- Release Please: move
docs to a dedicated Documentation section (#1297) (2d54e28)
Features
- Challenges: new categories_full field to store the full list of categories (parents + children) (#1270) (a566f16)
- OpenFoodFacts: new taxonomy helper method to get the full list of children from a parent list (#1269) (7486035)
Technical
- Challenges: improve daily update task to update categories_full & ignore past (completed) challenges (#1275) (8cc69f7)
- Challenges: match CATEGORY prices on categories_full (instead of categories) (#1273) (2c1a1a8)
- Challenges: prettier admin display (fieldset, JSON & image formatting) (#1274) (4be58d9)
- deps: pin Django-related package versions (so that dependabot opens PRs on new versions) (#1278) (d8171ff)
- Products: move update task queryset to model (#1276) (63f4976)
Technical
Technical
- migrate Open Prices from docker-prod to scaleway-docker-prod-2 (e5f4001)
Features
- improve image preprocessing for ML models (#1251) (dd5b4b3)
- Prices: API: Filter on product source being null (#1262) (89934d2)
Bug Fixes
Technical
- docs: Remove .env copy instruction from INSTALL.md (#1238) (c44231b)
- docs: update documentation to reflect manual env load (#1248) (c71b5bf)
- docs: update INSTALL.md and CONTRIBUTING.md to reflect switch to uv (#1239) (8007c84)
- on deploy, remove django static content before copying it again (fixes admin css) (#1256) (4042cd6)
- on deploy, remove django static content before copying it again (fixes admin css) (fix) (#1264) (cad14f6)
- settings: reflect environment default values in settings.py (#1249) (39c9d81)
- Tests: homogenize API tests on list ordering & pagination (#1252) (ad4f9d9)
Features
Bug Fixes
Technical
1.99.0 (2026-02-17)
Features
- Locations: API: new cities endpoint that returns the list of cities for a given country code (ordered by name) (#1226) (61aaa2c)
- Locations: API: new endpoint to compare 2 locations (in a single SQL query) (with date & discount filters) (#1227) (fa5c111)
Technical
- Currencies: update list of available currencies (babel) (#1222) (0c9cccf)
- Stats: exclude None when counting distinct values (#1217) (1d64438)
- switch from poetry to uv (#1225) (a175538)
- Tests: avoid running the test CI twice when opening a PR (#1228) (062d15b)
- update buildx version in container-build.yml workflow file (#1230) (c03b78f)
1.98.0 (2026-02-06)
Features
- approximate counting with pg_class.reltuples (#1208) (21c15bd)
Bug Fixes
- decrease threshold for price tag detection to 0.1 (#1216) (8a252dd)
- prevent foreign key violation for deleted proofs (#1201) (a0ad233)
Technical
1.97.1 (2026-02-04)
Bug Fixes
- ml: fix bug in price tag detection post-processing (#1214) (c6301a3)
- ML: fix incorrect discount_type value for prices without discount (#1213) (03702c2)
- OSError when generating JPEG thumbnails from LA mode images (#1198) (0b0fb88)
- ValueError when processing non-numeric barcodes in proof prediction (#1211) (84a5bbc)
Technical
1.97.0 (2026-01-25)
Features
- Locations: API: new /locations/osm/countries endpoints that returns the full list of countries (with location & price counts) (#1195) (159f6da)
- Locations: script to generate a list of countries (JSON, from the OFF taxonomy, enriched with OSM name) (#1192) (d19e764)
- Prices: add
duplicate_of FK field (#1184) (2b86eae)
- Prices: API: add a filter on the new duplicate_of field (#1204) (17452f4)
Technical
- Locations: API: better document the osm url (type & id fields) (#1189) (57b8b81)
- Locations: API: cache the new osm countries response (#1196) (1517508)
- run single unit tests with Q2_SYNC=True (#1203) (55d5f7c)
1.96.0 (2026-01-13)
Features
Bug Fixes
Technical
- Shop Import: add config for Graoucoop prices (#1179) (f9b033c)
1.95.0 (2025-12-27)
Features
- ml: upgrade to gemini-3-flash-preview (#1169) (bcc35ed)
- Prices: API: New filter by location__type & product__source (#1176) (7419592)
- Proofs: API: new filters by location (osm_id, osm_type, exact, in, type) (#1175) (07058ee)
Bug Fixes
- PriceTag: actually store barcode normalization (post-ML) (#1165) (1cd29b3)
Technical
1.94.1 (2025-12-22)
Bug Fixes
- ML: close the genai.Client after using it (#1163) (1f6bbd9)
- Products: API: normalize code before fetching corresponding product (#1164) (c262f17)
1.94.0 (2025-12-17)
Features
- Prices: API: allow editing the product_code (#1157) (d2ae13c)
- Prices: API: allow filtering by multiple product_code, product_id, proof_id & location_id (#1156) (f36d66f)
- Proofs: on create, increment location & user proof counts (and decrement on delete) (#1158) (9112127)
Bug Fixes
- ML: disable OCR extraction because we don't use it (#1162) (ed1dc0a)
Technical
- API: improve the Enum documentation (and avoid warnings) in the swagger (#1155) (e0b3f45)
- fixes following the switch to ruff in #1150 (#1153) (d33a8a8)
- Moderation: API: group endpoints together (in the swagger) (#1154) (cacfeec)
- Prices: Small cleanup of the price_count increment/decrement logic post save/delete (#1159) (aaa241b)
- replace black, flake8 & isort with ruff (#1150) (79e90b9)
1.93.0 (2025-12-04)
Features
- Proofs: create a cropped image of the price tag after DB instance creation (#1138) (89347e3)
Technical
- format: reformat some files with black (#1139) (b5230c6)
- Prices: set labels_tags & origins_tags to None or empty list depending on price type. Add tests (#1135) (ef2a85e)
- Proofs: API: return PriceTag cropped image_path (#1143) (ecf0ae9)
1.92.1 (2025-11-23)
Technical
- Moderation: auto-fix rules: take into account the frontend Price Validation renaming (#1133) (e162116)
- OpenFoodFacts: move Smoothie-specific utils to
openfoodfacts.py (#1117) (7192df4)
1.92.0 (2025-11-22)
Features
- improve price tag detection (#1128) (ada31cf)
- Moderation: allow moderators to edit flag's status field (#1129) (89ebb89)
- Moderation: new endpoint to list all flags (restricted to moderators) (#1123) (84f8e69)
Bug Fixes
- fix command in README for running anonymize_receipts (#1126) (dbbdd76)
- use TypedDict from typing_extensions (#1131) (96b89f4)
Technical
- ml: split open_prices.proofs.ml into submodules (#1130) (c45ffd3)
1.91.0 (2025-11-15)
Features
- Moderation: new Flag table to store upcoming issues (#1115) (c4c1d46)
- Moderation: Prices: new endpoint to add a Flag for a given price (#1116) (e06896e)
- Moderation: Proofs: new endpoint to add a Flag for a given proof (#1120) (fee667e)
1.90.1 (2025-11-10)
Bug Fixes
Technical
- deps: Update dependencies (#1106) (f9c4cd3)
- deps: Update dependencies (partial revert of #1106 to fix issues) (#1107) (fb63a44)
- Github Actions: Replace ubuntu-latest with ubuntu-slim in simple workflow runners (#1105) (ac8a60e)
- increase the number of workers from 2 to 4 (#1113) (d049a6e)
1.90.0 (2025-10-25)
Features
- Prices: allow moderators to edit & delete any price (#1086) (fde4a9c)
- Proofs: allow moderators to edit & delete any proof (#1087) (97366a5)
Bug Fixes
- increase timeout for
update_product_counts_task (#1100) (33d2d4f)
- ML: catch JSONDecodeError in Gemini's response (#1091) (4e59d05)
- Proofs: Prevent exception if there is any problem with the img thumbnail processing (#1068) (0fa9a1f)
- Wait 2s before fetching data using OFF API (#1099) (142fc56)
Technical
1.89.0 (2025-10-18)
Features
- Prices: API: new endpoint to fetch a price's history (#1058) (2f785b4)
- Proofs: API: new endpoint to fetch a proof's history (#1083) (6d62515)
Technical
- Challenges: on create, init stats object (#1079) (0a4fa44)
- History: new method to get Price & Proof instance history list (#1057) (51dc616)
- PriceTag: post-prediction, normalize barcodes (#1085) (3fec3e5)
- Products: Create in Product Opener: languages and country support (#1081) (860035c)
- Users: manage moderators ourselves. Don't sync with OFF (#1077) (11fcc66)
1.88.3 (2025-10-16)
Bug Fixes
- Challenges: fix filtering by status (annotated) (#1078) (3f655a9)
Technical
- History: add more tests on Proof.location & Price.product changes (#1076) (0d4ffea)
- Shop Import: move config data to a mapping file (JSON) for reuse (#1070) (278393e)
1.88.2 (2025-10-12)
Technical
- Challenges: move validations to a seperate file (#1064) (796af93)
- Locations: move validations to a dedicated file (#1062) (1c229f3)
- OpenFoodFacts: move cached taxonomy logic to common_openfoodfacts (#1069) (55ac249)
- Price Tags: move validations to a seperate file (#1065) (44fdc9e)
- Prices: move validations to a seperate file (#1067) (9fdcd11)
- Proofs: move validations to a seperate file (#1066) (b7285ea)
1.88.1 (2025-10-11)
Bug Fixes
- Proofs: API: fix 500 error if date field missing (#1059) (72e362a)
Technical
- API: Price & Proof create: add more tests (#1061) (e963aaa)
- History: fix cleanup command. run more often (every night) (#1055) (c6df656)
- Products: Product Opener API endpoints: restrict to PATCH method (#1056) (b9fc9d0)
1.88.0 (2025-10-10)
Features
Bug Fixes
- similar-barcode: remove barcodes with invalid checksum (#1053) (1cc9c2f)
Technical
- History: command to cleanup duplicate entries on a weekly basis (#1051) (6b36fbf)
- Proofs: History: add change_reason messages for context (#1052) (0db4476)
1.87.0 (2025-10-09)
Features
- Prices: track changes in a history table (#976) (df31839)
Bug Fixes
- Challenges: cron: call the challenge_tasks at 1:30 instead of 1:20. ref #988 (4498c93)
Technical
- following normalize PR, add test on command and additional cleanup (#1047) (3cfb39f)
- Prices: History: add change_reason messages for context (#1016) (9bb68fb)
1.86.4 (2025-10-09)
Bug Fixes
- normalize barcodes in prices and products tables (#1045) (04cb683)
1.86.3 (2025-10-07)
Technical
- Products: Automatically set the uploaded image as the selected front (english) (#1041) (981933a)
1.86.2 (2025-10-04)
Bug Fixes
- deps: fix Redis import following upgrade of openfoodfacts-python (#1038) (f63cd31)
- deps: fix Redis params following upgrade of openfoodfacts-python (2/2) (#1040) (8be9dc0)
1.86.1 (2025-10-04)
Bug Fixes
- settings: rename OFF_ENVIRONEMENT to ENVIRONMENT (#1036) (d1b4d5d)
1.86.0 (2025-10-04)
Features
- Products: New API endpoints to update/add Product Opener products and images (#1012) (6851f91)
Technical
- add missing OFF_DEFAULT_PASSWORD from secrets to .env (following #1012) (0c4eb96)
- add more tests for non-available endpoints (c2f4104)
- Price Tags: API: new filter by price_id (#1033) (7c460ba)
- settings: new OFF_ENVIRONMENT env variable (89c6899)
1.85.1 (2025-10-02)
Bug Fixes
- Price Tags: fix bug introduced by a small refactoring in the barcode similarity queryset (#1032) (5bab096)
Technical
- Products: API: new filter by source__isnull (#1030) (d758b78)
1.85.0 (2025-10-02)
Features
- implement a barcode similarity search feature for price tags (#1009) (da79d80)
- PriceTag: fix some barcodes post-prediction with USD-specific rules (#1022) (8cd94e9)
Bug Fixes
- API: Locations: order by ID by default instead of created (#1017) (71592ea)
- API: Prices: order by ID by default instead of created (#1015) (df97f53)
- API: Proofs: order by ID by default instead of created (#1014) (a27a40a)
- Migration: fix price migration 0012 (ArrayField) (#1005) (f6112e6)
- return "status": "duplicate" when a duplicate proof is uploaded (#983) (79a8e99)
Technical
- Challenges: improve set_tags methods. new reset_tags methods (#1007) (cb61549)
- Locations: return "detail": "duplicate" when a duplicate location is created (#1019) (52ea4f4)
- Price Tags: small refactoring in the barcode similarity queryset. ref #1009 (83fed73)
- README: Add more info on Open Prices API & reuse (#1013) (47aba2b)
- README: new weekly meeting day (Thursday instead of Wednesday). closes #1026 (5dd4349)
- Stats: avoid count fields being None (default 0) (#1027) (c3d6791)
1.84.2 (2025-09-20)
Bug Fixes
- Challenges: in product ranking stats store brands instead of brands_tags. ref #1003 (dad91d4)
Technical
- Users: Stats: new year_count & challenge_count (#1006) (a55b4ef)
1.84.1 (2025-09-20)
Technical
- Challenges: enrich location ranking stats with extra fields (for display in the frontend) (#1001) (3e0bc35)
- Challenges: new product price count ranking (#1003) (d3122d9)
1.84.0 (2025-09-19)
Features
- Challenges: allow to restrict on a list of locations (for local challenges) (#992) (0f30bf3)
- Proofs: allow to filter by
image_md5_hash (#984) (b11d5ff)
Technical
- Add labeler rule for challenges directory (25a39c5)
- Add labeler rules for Challenges files (49cee56)
- Challenges: new location price count rankings (location id, city & country) (#995) (7d1f0ee)
- Challenges: new user_count stat (#997) (e909aa3)
- Challenges: rename the user ranking stats to clarify (#993) (d0ea8f7)
- Prices: transform labels_tags & origins_tags from JSONField to ArrayField (#998) (7318cf4)
- update the remove_duplicate_proofs.py script (#981) (e57adb7)
- use Triton server running on GPU for ML inference (#1000) (791ac19)
1.83.3 (2025-09-14)
Technical
- Challenges: new price_count & price_from_user_proof_count ranking stats (#991) (205708e)
- Challenges: new proof_count ranking stat (#989) (1c1a28c)
1.83.2 (2025-09-14)
Bug Fixes
- Challenges: forgot to call the update stats task every night (#988) (e4c404a)
- Prices: allow to create prices with 3 decimals (#973) (0e946d3)
Technical
- Proofs: add a CLI command to compute the MD5 hash of image files (#980) (38a48c5)
- Stats: User & TotalStats: new proof_currency_count (#986) (53ed493)
1.83.1 (2025-09-09)
Bug Fixes
- return HTTP 201 when uploading duplicate proof on Smooth app (#978) (84e1c19)
Technical
1.83.0 (2025-09-05)
Features
- Ml,ReceiptItems: lookup product code using product names (#952) (58902c6)
- prevent duplicate proof upload (#964) (8e6319e)
Bug Fixes
- API: Make the Bearer token prefix case-insensitive (#971) (fe57e5d)
- API: Proof upload: if the token is wrong, return a 400 instead of a 201 (and creating it anonymously) (#969) (1385f7b)
- Proofs: allow a date of tomorrow to manage users in future time zones (#972) (152f456)
- using 'type: ' makes mypy crashes (#968) (9e0329c)
Technical
- add
anonymize_receipts.py script (#970) (d73db67)
- Challenges: add extra stats: proof_location_count & price_product_count (#960) (f032172)
- Django: cleanup remaining comments regarding DB mgmt (#966) (0c6e109)
- Locations: improve the duplicate mechanism (catch the ValidationError) (#965) (87da4c1)
- remove ref to latest release please hash (#955) (54785f3)
- remove required arguments for makemigrations (#967) (5ef62b8)
- use Q2_SYNC=True when running tests (4748af5)
1.82.1 (2025-08-25)
Bug Fixes
- API: Products: order by ID by default instead of
created (#947) (25db18f)
- API: use ANY instead if ILIKE queries for Postgres ARRAY fields filters (#945) (0b91004)
Technical
1.82.0 (2025-08-17)
Features
- Challenges: new stats field. calculated every night. stored in a JSONField. (#941) (9161c86)
Bug Fixes
Technical
- Proofs: move duplicate queryset to model + test (#937) (542832a)
1.81.8 (2025-08-13)
Bug Fixes
- associate prices to ref proof (remove_duplicate_proofs) (#935) (87cc1ac)
- check raw image MD5 in script to delete duplicate proofs (#920) (055eea2)
- update
remove_duplicates script (#928) (6736354)
Technical
1.81.7 (2025-08-12)
Bug Fixes
- add an envvar to control async requests to Gemini for price tags (#921) (605f043)
1.81.6 (2025-08-11)
Bug Fixes
- fix INVALID_ARGUMENT when calling Gemini (#918) (de36a0a)
- override
ready_for_validation_price_tag to False for Smoothie (#908) (f9e234f)
Technical
1.81.5 (2025-08-10)
Bug Fixes
- fix proof extraction script and extract_from_receipt function (#911) (fb69a0f)
- improve cleanup scripts (#906) (0f08eec)
Technical
- Proofs: add admin integration for prediction models (#913) (3e19a4d)
1.81.4 (2025-08-08)
Bug Fixes
- fix
get_predicted_price method (#904) (973ea75)
- fix AttributeError in get_predicted_price (#907) (70fdc73)
- fix JSONDecodeError when parsing receipt prediction (#910) (f76882e)
Technical
1.81.3 (2025-08-07)
Bug Fixes
- don't process proofs that were just uploaded (#901) (95f587a)
Technical
- add a script to detect duplicated prices (#900) (5e37adc)
- Price Tag: predictions: move the tags helper methods to ml. Adapt to schema v2 (#897) (937d1e4)
- Price Tags: predictions: update the matching script logic following changes in the schema (#898) (fd92aa4)
1.81.2 (2025-08-04)
Bug Fixes
- only create once the Google genai client (#891) (5dc9230)
1.81.1 (2025-08-04)
Bug Fixes
1.81.0 (2025-07-24)
Features
- Price tags: improve price tag extraction using Gemini (new schema, async, store thought tokens) (#885) (6a8ebfb)
1.80.2 (2025-07-23)
Bug Fixes
- Stats: fix update of challenge_count. ref #852 (856d318)
- use google-genai instead of google-generativeai package (#883) (5f248ad)
Technical
- add GOOGLE_CREDENTIALS from secrets to .env (#884) (390415b)
- Price tags: Add new statuses 'no_barcode' (5) & 'other' (10) (#879) (55e1ab0)
- Prices: new source url following changes in the frontend (price tag assistant) (50f1608)
1.80.1 (2025-07-08)
Bug Fixes
Technical
- create merge-conflicts-autolabel.yml (470bc8b)
- Update github-projects.yml for PRs (ab1dbb2)
1.80.0 (2025-07-04)
Features
- API: Prices: Add filter on location__osm_name__contains & product_name (#862) (b484345)
Bug Fixes
- fix bug in Redis update listener (#870) (70b0c8e)
- ML: catch error returned when proof not found during receipt prediction (Sentry) (5f4f74a)
1.79.4 (2025-06-11)
Bug Fixes
- ML: catch error returned when proof not found during prediction (Sentry) (438e2d3)
1.79.3 (2025-05-20)
Technical
1.79.2 (2025-05-12)
Bug Fixes
- ML: catch error returned when price_tag not found during prediction (Sentry) (2992877)
- Proofs: Tests: better tear down tests creating image files (706bd89)
1.79.1 (2025-05-11)
Technical
- OpenFoodFacts: create a dedicated barcode_is_valid method (#844) (6b9aa55)
1.79.0 (2025-05-11)
Features
- Price Tag: predictions: helper methods to know if the detected data is "valid" (#838) (4c6d8a7)
- Price Tag: predictions: set price_tag tags on prediction creation (#843) (345d876)
Bug Fixes
- Products: remove off_pro from source choice list (#842) (0ae11c9)
Technical
- Price Tag: move post_save signal logic in a dedicated method. ref #843 (5693d4e)
- Prices: move update_tags logic to a model helper method. ref #811 (0688163)
1.78.0 (2025-05-09)
Features
- Challenges: new task to set Price & Proof tag every night (#837) (20beab1)
- Price Tags: API: new filter by tags (contains) (#835) (5a9e049)
- Price Tags: new tags field (arrayfield) (#834) (5ccd096)
Bug Fixes
- Prices: also look at category_tag for in_challenge checks (#832) (5501cbe)
Technical
- Prices: add extra prints in product_name script. ref #829 (82708f4)
- Proofs: improve PriceTag & ReceiptItem matching script performance (#836) (4f57374)
- Proofs: use existing product for tests (682e854)
1.77.0 (2025-05-06)
Features
- Prices: script to set missing product_name from PriceTag & ReceiptItem (#829) (7c58b63)
Bug Fixes
- Prices: fix script border case where PriceTag or ReceiptItem is not exactly linked to a price. ref #829 (8fdbba2)
Technical
- Add edit button to doc (#825) (08a7066)
- design promo (#805) (a56fb94)
- Prices: new has_product_name queryset. ref #827 (f50fed7)
- Proofs: new helper methods to easily access PriceTag & ReceiptItem predicted data. ref #827 (e846c89)
- Proofs: new PriceTag & ReceiptItem has_price_product_name_empty queryset. ref #827 (f3ef153)
1.76.1 (2025-04-29)
Technical
- Challenges: set the price's proof tag on price create (if the price belongs to an ongoing challenge) (#823) (8a4a9fc)
1.76.0 (2025-04-28)
Features
- Proofs: API: new filter by tags (contains) (#821) (94ab329)
- Proofs: new tags field (arrayfield) (#817) (2a0b5ba)
Technical
- Challenges: new Proof queryset & property to filter on the ones part of a challenge (#819) (14548ec)
- Challenges: new set_proof_tags helper method (#820) (5f841c4)
1.75.0 (2025-04-27)
Features
- Challenges: new tag property. return in the API (#812) (a202e30)
- Challenges: set the price tag on price create (if the price belongs to an ongoing challenge) (#811) (66cb692)
- Prices: API: new filter by tags (contains) (#813) (2a16f59)
- Prices: new tags field (arrayfield) (#807) (96fb506)
Technical
- Challenges: new is_ongoing queryset (bd1395e)
- Challenges: new Price property to check if it belongs in a given challenge (#810) (9451796)
- Challenges: new Price queryset to filter on the ones part of a challenge (#808) (df6830d)
- Challenges: new set_price_tags helper method (#815) (9a4f337)
- Prices: new has_tag queryset (#814) (d5e264f)
1.74.2 (2025-04-20)
Technical
- Challenges: move 'status' to a property (instead of a field) (#803) (1369fb6)
1.74.1 (2025-04-18)
Technical
- API: Prices: allow multiple (overlap) filter on product categories_tags field (#799) (9fd1d28)
1.74.0 (2025-04-10)
Features
- Receipt Item: script to match historical ReceiptItem with their prices (#788) (d7a0421)
Bug Fixes
- Prices: Allow 3 decimals on the receipt_quantity field (#795) (eb23a0b)
1.73.0 (2025-03-30)
Features
- ProofMl: Added ReceiptItem model and API (#778) (fc22a1c)
Technical
- docs: create dotenv example file, ignore the local one (#784) (f55299b)
- docs: revert #784 (create dotenv example file, ignore the local one) (#787) (3918972)
- Move match_decimal_with_float to common utils. Add tests (2f55f53)
- Price tags: matching script: fix script for category_tag. add tests (#786) (9783439)
1.72.0 (2025-03-23)
Features
- Prices: API: new filter on
kind (#777) (5edfb71)
- Proofs: API: new filter on
kind (#776) (308d49b)
- Users: new price count per type (product or category) (#771) (4160eea)
Technical
- Auth: Drop invalid json parser from post api (#769) (8dc930e)
- Prices: rename type_group to kind (community & consumption) (#775) (5461b99)
- Proofs: rename type_group to kind (community & consumption) (#774) (c298144)
- Proofs: take owner_consumption into account to differentiate community & consumption (#773) (1ffb7e0)
1.71.1 (2025-03-22)
Technical
- deps: Update django-related packages (#768) (3dbc5d1)
- Proofs: API: allow multiple filters on
type (#766) (2085158)
1.71.0 (2025-03-18)
Features
- Moderation: script to remove Products (and their prices) with invalid barcodes (#761) (b39ea42)
Technical
- PriceTags: new FK to link to the proof_prediction (#763) (02ecb0e)
1.70.0 (2025-03-17)
Features
- Challenges: add a new
status field (read-only, calculated) (#759) (c3880ba)
- Challenges: basic model and API endpoint (#758) (48c4348)
Technical
- API: better indicate which endpoints require authentication (#754) (3659f8b)
1.69.0 (2025-03-08)
Features
- Prices: new owner_comment field (#747) (2443716)
- Proofs: new owner_comment field (#748) (04672c7)
- Proofs: new owner_consumption field (#750) (9349374)
- Users: new price count on owned (and not owned) proofs (#744) (0e56244)
Technical
- API: custom paginated response schema (#751) (eb719a3)
- API: set default size to 10. and limit max size to 100 (#752) (7f0434b)
- Users: rename stat field to price_not_owned_in_proof_owned_count. ref #744 (8f70777)
1.68.1 (2025-03-04)
Bug Fixes
- Proofs: allow updating the receipt_online_delivery_costs field. ref #724 (49fb711)
1.68.0 (2025-03-02)
Features
- Prices: API: new filter on proof type (#741) (a41c868)
- Stats: new price_location_country_count field (#740) (94fb106)
- Stats: new price_year_count field (#738) (16e0e59)
1.67.0 (2025-03-01)
Features
- Stats: new Price & Proof counts per source (#736) (c3352bd)
Technical
- GDPR: Improve script (fixes for Carrefour, Auchan) (#731) (509dad6)
1.66.0 (2025-02-23)
Features
- Prices: Stats: new community & consumption counts (#728) (5320afc)
- Proofs: new receipt_online_delivery_costs field (#724) (e2d56d4)
- Proofs: Stats: new community & consumption counts (#725) (f9960d0)
- Users: new price counts per community & consumption type groups (#729) (5431923)
- Users: new proof counts per community & consumption type groups (#730) (ccf25e8)
Bug Fixes
- Proofs: Stats: fix typo in proof_type_group_community_count calculation. ref #725 (e25ae64)
Technical
- Prices: add a new discount_type: Second hand (#722) (ae6782f)
- Proofs: rename some constants, introduce GROUP_COMMUNITY & GROUP_CONSUMPTION (#726) (4d3799b)
1.65.1 (2025-02-22)
Bug Fixes
- Proofs: ML: fix typo in gemini result. ref #718 (e133216)
1.65.0 (2025-02-22)
Features
- Proofs: ML: receipt content extraction (#715) (11dad87)
Technical
- API: return proof/price/location source field (#719) (5a6cb3e)
- Prices: Stats: new stat with_discount count (#716) (d05320f)
- Proofs: ML: move some config to a dedicated google.py file (#718) (3f4da4c)
1.64.0 (2025-02-20)
Features
- Prices: new
discount_type field with a list of choices (#711) (521dc19)
Technical
1.63.0 (2025-02-12)
Features
- Products: Stats: new counts per source (OxF flavors) (#708) (3ad9f6b)
Technical
- Price tags: Make ready_for_price_tag_validation field editable by user (#710) (62248a6)
1.62.3 (2025-02-05)
Technical
- Product sync: add settings to opt-in to OxF daily syncs (#705) (114e448)
- Product sync: disable OFF daily sync (now that we have Redis live updates) (#707) (e81bace)
1.62.2 (2025-02-03)
Technical
- Price tags: add a new status 'truncated' (#702) (db6f4dc)
1.62.1 (2025-02-02)
Technical
- Price tags: API: allow filtering by the new prediction_count field (gte & lte). ref #695 (512e875)
- Proofs: API: allow filtering by the new prediction_count field (gte & lte). ref #693 (6539cf0)
1.62.0 (2025-02-02)
Features
- Moderation: script to remove Products with long barcodes (#700) (33ff94d)
- Products: Stats: new location country count & price currency count (#699) (3e9c58c)
- Users: Stats: new location country count & price currency count (#698) (6834f9c)
Technical
- Stats: New location country count & price currency count (#696) (0e2f575)
1.61.0 (2025-02-02)
Features
- Price tags: new prediction_count field (automatically incremented) (#695) (f1a5884)
- Proofs: new prediction_count field (automatically incremented) (#693) (8bbae67)
Technical
- Price tags: API: allow filtering by the new prediction_count field. ref #695 (6c319be)
1.60.3 (2025-01-26)
Technical
1.60.2 (2025-01-19)
Bug Fixes
- Prices: on price delete, also update any related PriceTag status (#684) (2b46cbb)
1.60.1 (2025-01-19)
Bug Fixes
- Proofs: Run price tag prediction only on PRICE_TAG proofs (#683) (4c10f86)
Technical
- Proofs: Add test to make sure we don't run price_tag detection on RECEIPT proofs. ref #683 (c388e5b)
- Proofs: move OCR script in the ML file (#679) (9268606)
1.60.0 (2025-01-12)
Features
- Prices: API: allow editing category-related fields (#677) (fc157a6)
- Prices: API: new filter on product categories_tags (#676) (458089e)
1.59.6 (2025-01-06)
Technical
- Price tags: allow filter by created gte & lte. ref #656 (d26e39c)
1.59.5 (2025-01-02)
Bug Fixes
- Prices: fix validation error formatting when user is not allowed to add price on proof. ref #568 (79407c3)
- Stats: fix User & Location stats after allowing any user to add prices on PRICE_TAG proofs (#668) (2481f14)
1.59.4 (2025-01-01)
Technical
- Prices: transform receipt_quantity field to Decimal (#666) (c807dee)
1.59.3 (2024-12-31)
Technical
- Price tags: matching script: try to match on price only (#664) (76637dc)
- Products: API: fix re-add ordering via unique_scans_n. Also add other scores. closes #662 (9f6e9b8)
1.59.2 (2024-12-30)
Technical
- Price tags: improve matching script: manage Carrefour barcodes (#660) (c2f5717)
1.59.1 (2024-12-30)
Technical
- API: store query params app_platform & app_page in source field (#658) (96215f4)
- Proofs: API: allow filtering by ready_for_price_tag_validation field. ref #656 (0936ffb)
1.59.0 (2024-12-26)
Features
- Price tags: new Proof.ready_for_price_tag_validation field to help filter the frontend UI (#656) (67b4912)
1.58.1 (2024-12-23)
Technical
- Price tags: fix stats. move constants. cleanup (#653) (08d148f)
- Price tags: improve matching script (better manage decimal/float). ref #650 (e0e64b3)
- Products: API: send source_last_synced field as well. ref #551 (a2bb472)
- Stats: new PriceTag stats (#652) (4643706)
1.58.0 (2024-12-22)
Features
- Price tags: script to match historical PriceTag with their prices (#650) (44fbf2e)
Bug Fixes
- Gemini: rename url to use hyphens instead of underscores. ref #569 (433011d)
- process one image at a time with Gemini (#648) (e0c251b)
1.57.0 (2024-12-21)
Features
- ProofMl: extract product_name and suggest ean-13 barcodes (#646) (f3b670f)
Technical
- Price tags: API: allow ordering by proof_id. ref #628 (c68f680)
- Products: API: allow ordering by all count fields. ref #445 (ca7bb76)
1.56.6 (2024-12-20)
Bug Fixes
- add a command to extract from Gemini from price tag without prediction (#644) (06216c5)
1.56.5 (2024-12-20)
Bug Fixes
1.56.4 (2024-12-20)
Bug Fixes
1.56.3 (2024-12-19)
Technical
- Price tags: API: add filter by proof__owner. ref #628 (5fd45df)
- Price tags: API: send proof location for context. ref #628 (b1cb613)
1.56.2 (2024-12-18)
Technical
- Prices: API: add filtering by type (fed3214)
1.56.1 (2024-12-18)
Bug Fixes
- don't create price tags for proofs.type != PRICE_TAG (#632) (c40f9ae)
1.56.0 (2024-12-18)
Features
- add
price_tag table and routes (#628) (fe3f745)
- create price tags from the object detector model (#629) (a0c4741)
- improve gemini processing (#631) (8263e00)
- save Gemini prediction in
price_tag_predictions table (#630) (39d3c25)
Bug Fixes
- fix script that runs ML models for proofs without predictions (#627) (c825d2c)
Technical
- pass ENVIRONMENT envvar to services (#625) (59f9cd6)
- update redis default stream name (824a389)
1.55.1 (2024-12-12)
Bug Fixes
- create a product if needed after a redis update event (#622) (66010fe)
- remove legacy log message (267568e)
1.55.0 (2024-12-12)
Features
- listen to updates from Product Opener using Redis (#618) (9e4d326)
Technical
- enable fetching product updates from Redis (#621) (3a81968)
1.54.0 (2024-12-11)
Features
- run and save price tag detections in
proof_predictions table (#614) (62ecaab)
- Shop import: new script to upload prices from a shop csv (#574) (7ec2eda)
Bug Fixes
- fix bug in directory selection for proof image (#616) (b32b5cf)
- use openfoodfacts.ml module for proof classification (#613) (8eb37e6)
1.53.0 (2024-12-06)
Features
- API: allow adding prices on proofs not owned (only PRICE_TAG proofs) (#609) (071fad0)
- API: Allow anonymous users to upload proofs (#607) (0c68bf8)
- return proof predictions in
GET /api/v1/proof route (#601) (42f1c5e)
Bug Fixes
- don't try to classify with the image classifier .bin files (#604) (0ecca7b)
Technical
- API: allow anyone to access proof data (#606) (1b4dcb5)
- API: only return proof.predictions in detail endpoint (#605) (81f7f0f)
- Update github-projects.yml (e4bfe68)
1.52.0 (2024-12-05)
Features
- save proof prediction for all proofs in a new table (#588) (cb1fb7a)
Bug Fixes
Technical
- add command to run ML models on proofs without predictions (#599) (32de49b)
- Add unit test for proof type detection (#597) (0386cff)
- enable ML predictions on prod & staging (#596) (8d049aa)
- remove deprecated command for ssh-action (#598) (28afbe7)
1.51.0 (2024-12-03)
Features
- Location: new brand & version fields (fetch & store from OSM) (#591) (63dc620)
- Location: script to fill in OSM brand & version (#592) (ea29002)
Bug Fixes
- Location: add try/catch & progress in OSM script. ref #592 (887b508)
Technical
- increase the number of gunicorn workers in production (#582) (a922030)
1.50.0 (2024-11-27)
Features
Bug Fixes
Technical
- Admin: add Price view. improve Location & Proof views. (#580) (1a59b1e)
- GDPR: improve Leclerc merge and price upload. ref #213 (978a401)
1.49.0 (2024-11-21)
Features
- add CLI command to run OCR on past images (#572) (2f6a94e)
Technical
- proofs: more features to OCR extraction (#566) (b2e55be)
1.48.0 (2024-11-13)
Features
- allow users to submit origin tags in their language (#561) (2b867db)
- proofs: New endpoint to extract price data from images (with Gemini) (#557) (fa54a36)
Technical
1.47.1 (2024-11-09)
Technical
- Locations: keep only website_url domain (#555) (cc5d589)
1.47.0 (2024-11-08)
Features
- allow users to submit category_tag with language prefix (#548) (9aab15d)
- API: on Location POST, return existing if duplicate (#554) (d1efae6)
- locations: new source field to store the app name & version (#546) (a9188c9)
- run OCR extraction on every new image (#543) (77ed50b)
- Sync: fetch OFF obsolete products (25k items) (#552) (badec8b)
Bug Fixes
- add types to functions and improve docstring in proofs/utils.py (#540) (506bc4a)
Technical
- add CORS headers to images (#545) (bd3709a)
- proofs: run OCR in post_save signal instead of create (#549) (f3cfa79)
- remove perform_create to simplify code (2394940)
- update dependency openfoodfacts-python (#550) (2f53957)
- Update github-projects.yml (d8d54d7)
1.46.0 (2024-10-25)
Features
- API: Allow updating Proof location fields (#539) (8554eaf)
- Proofs: on update, also update proof prices (#538) (d5481f2)
Technical
- Proofs: refactor method that updates proof fields from prices (1 instead of 3). ref #481 (e3b97f5)
1.45.1 (2024-10-23)
Bug Fixes
- GDPR: Use unique location identifier instead of name (bd681f1)
Technical
- API: store app_version in Price & Proof source field (#533) (bbfce93)
- GDPR: Use new Price.receipt_quantity field. ref #499 (64fcd80)
1.45.0 (2024-10-19)
Features
- Prices: Allow adding new prices with a location_id (#527) (99f16df)
- Prices: new field to allow users to input the quantity bought (#498) (857b813)
- Proofs: Allow adding new proofs with a location_id (#528) (38e5599)
- Proofs: new fields to allow users to input the number of prices & total sum (#497) (8a9aa50)
Bug Fixes
- Prices: init Price.receipt_quantity field in migration. ref #498 (1822b8d)
- Tests: Remove proof images on test tearDown (#529) (5805eea)
Technical
- Stats: extra Proof type stats. new Location type stats (#524) (411222b)
1.44.3 (2024-10-13)
Bug Fixes
- Product sync: Avoid setting None for missing fields. Use model default values instead (#519) (e3ed44e)
Technical
- Product sync: Build product dict identically if from sync or API. ref #518 (81766b0)
1.44.2 (2024-10-11)
Bug Fixes
- Proofs: Deny users to delete a proof with prices (#517) (3b1ed29)
Technical
- Proofs: On proof delete, also remove its images. ref #514 (8360a06)
1.44.1 (2024-10-09)
Bug Fixes
- Backups: fix backup location. closes #407 (97ed9b2)
- Queue: bump max_attempts to 2. ref #376 (e83158b)
- Stats: make sure to get all Product & Proof with prices when updating counts. ref #492 & #481 (6f446b9)
1.44.0 (2024-10-06)
Features
- Locations: new type & website_url fields to start allowing ONLINE stores (#446) (ce50c74)
- Users: new /users/:user_id endpoint. Only for self (#500) (665c44f)
Bug Fixes
Technical
- Proofs: Methods to update missing proof fields from prices (#481) (ffe5e5a)
- Stats: simple script for top product stats (via API) (#398) (14c6d39)
1.43.1 (2024-10-03)
Bug Fixes
- Proofs: fix thumbnail generation for some JPEG images. ref #486 (a7f18e9)
Technical
- stats: new Proof type stats. Rename Price type stats (#496) (6401f80)
1.43.0 (2024-10-03)
Features
- products: New Product.location_count field (#489) (85cd11f)
- products: New Product.proof_count field (#491) (f77ec80)
- products: New Product.user_count field (#490) (459c6fc)
- Proof: generate image thumbnail (size 400) on create (#486) (9f72de6)
Bug Fixes
- API: Proofs: improve API documentation for upload (#493) (0168a0f)
- locations: fix count calculation when FK is null. ref #420 (a075918)
- products: fix update count CRON setup. ref #492 (7e0588b)
- users: fix count calculation when FK is null. ref #419 (f2f6d9c)
Technical
- Documentation: Remove mention of /app. closes #482 (18f7083)
- products: New weekly CRON to update Product counts (#492) (dd9a239)
1.42.0 (2024-10-02)
Features
- proofs: new type SHOP_IMPORT to explicitly link shop-imported prices (#485) (82da2b9)
Technical
- launch vue.js app on / (instead of /app) (#483) (1088f65)
1.41.0 (2024-09-28)
Features
Technical
- locations: add new count fields in API ordering settings. ref #419 (b02c480)
- stats: add to admin, cleanup (#479) (39866ac)
- stats: New daily CRON to update TotalStats (#478) (63f5a76)
1.40.0 (2024-09-27)
Features
- locations: New Location.product_count field (#470) (cebc523)
- locations: New Location.proof_count field (#468) (004af12)
- locations: New Location.user_count field (#471) (be0c796)
Technical
- locations: New weekly CRON to update Location counts (#473) (07b1c4c)
1.39.3 (2024-09-24)
Bug Fixes
- Django: set 2h long task timeout & retry. ref #376 (87b6e21)
- Django: split OFF product sync into 4 flavors. ref #376 (4fab7b8)
1.39.2 (2024-09-23)
Bug Fixes
- Django: fix daily DB backup task (#461) (35cbb81)
- Django: tentative fix by removing task timeout. ref #376 (c03af3c)
Technical
- proofs: extra API filtering (on date year & month, on empty location_id) (99e88c0)
1.39.1 (2024-09-23)
Bug Fixes
1.39.0 (2024-09-22)
Features
- prices: new querysets to calculate min, max & average (#452) (ab9ed15)
- prices: new stats endpoint (#454) (540feba)
- products: new properties to calculate price min, max & average (#453) (f662710)
Bug Fixes
- Django: fix daily import script (add source in updated fields). ref #376 (fe569d7)
Technical
1.38.0 (2024-09-15)
Features
- prices: add API filter by labels_tags & origins_tags (#449) (dab02ae)
Bug Fixes
- Django: fix babel currency list order (#447) (4da6da2)
- Django: fix daily import script (avoid unique_scans_n null). ref #376 (0656431)
- Django: fix daily import script (seperate bulk_create & bulk_update). ref #376 (294261f)
1.37.0 (2024-09-12)
Features
Bug Fixes
- GDPR: fix Picard import script after testing in prod. ref #430 (38e50c9)
Technical
1.36.1 (2024-09-11)
Technical
1.36.0 (2024-09-11)
Features
Technical
- add model with_stats() queryset. Add tests (5aa00e7)
- stats: new model update_price_count() methods (#435) (b25146d)
- tests: skip Product & Location post_save signals (#434) (639cee6)
- Update github-projects.yml (8d82664)
1.35.1 (2024-09-06)
Bug Fixes
1.35.0 (2024-09-05)
Features
- prices: GET /prices/id detail endpoint (#423) (0d67b5c)
Technical
- Create github-projects.yml (092f591)
- fix github-project.yml (4d9a1fd)
- Update github-projects.yml (04e9e10)
1.34.2 (2024-09-04)
Bug Fixes
- Django: allow querying api/status with any auth (#417) (3d9b486)
1.34.1 (2024-09-04)
Technical
1.34.0 (2024-09-02)
Features
- rewrite backend from FastAPI to Django (#366) (081a22d)
Bug Fixes
- Django: extra API fixes round 2 (#401) (1bb28d8)
- Django: fix update price_counts on Price create/delete (#404) (9134f3c)
- Django: run Django tests instead of FastAPI (#402) (0628f62)
- Django: update CI test config. ref #402 (5edf691)
Technical
1.33.0 (2024-08-22)
Features
- locations: add extra filter by osm_address_city (eb27b72)
1.32.1 (2024-08-20)
Bug Fixes
1.32.0 (2024-08-20)
Features
Technical
1.31.1 (2024-07-15)
Technical
- move images and data dump to docker volumes (#356) (dee6550)
1.31.0 (2024-07-05)
Features
- prices: new date filter by year & month (#350) (65e3b2d)
1.30.0 (2024-06-28)
Features
- locations: add POST endpoint to create a location (#347) (b05925a)
Technical
- proofs: Use ProofCreate schema when possible. Move owner field to ProofFull (9f09534)
1.29.1 (2024-06-27)
Bug Fixes
- ci: add some missing conventional commit types in release-please config. ref #344 (9117657)
- ci: fixed branch name for release-please. ref #344 (056f61e)
Technical
- prices: reorganise schema inheritance to validate price updates (#342) (64aac06)
- proofs: reorganise schema inheritance (#343) (7e17a68)
- revert release-please config to v3 (#344) (739e128)
- update README with links (e985ab2)
1.29.0 (2024-06-24)
Features
Bug Fixes
- import dumps at 3PM instead of 10AM (#332) (543c54c)
- proofs: also return proof relationships when fetching detail. ref #338 (d323180)
- proofs: improve new proof date & currency optional mgmt. ref #327 & #337 (5a309b4)
1.28.0 (2024-06-04)
Features
- prices: new source field to store the app name (#301) (9efd923)
- proofs: new source field to store the app name (#310) (30ab149)
1.27.0 (2024-05-21)
Features
- location: store OSM address country_code (#296) (43485ed)
- location: store OSM tag key & value (#294) (3eeccbd)
Bug Fixes
1.26.0 (2024-05-02)
Features
- add daily dumps of DB main tables as JSONL files (#282) (9d3f1a7)
Bug Fixes
1.25.1 (2024-04-17)
Bug Fixes
1.25.0 (2024-04-03)
Features
Bug Fixes
- start a new db session before each flavor import. ref #264 (814078b)
1.24.1 (2024-03-27)
Bug Fixes
1.24.0 (2024-03-18)
Features
Bug Fixes
- products: fix filter by labels_tags (#252) (ac68218)
- products: update products added first in Open Prices (#250) (bef2932)
- sync: tentative fix of Product sync with OFF (#257) (68f0b6c)
- tests: use ProductFull for fixtures (#253) (2d7b83c)
Technical
- improve examples of Price schema (#248) (2527942)
- Improve typing, pre-commit, updates openfoodfacts package (#198) (ff03b0c)
1.23.0 (2024-03-05)
Features
Bug Fixes
- prices: improve private proof filtering depending on user (#241) (a3503b0)
- remove trailing slash in API endpoints (#233) (31a840d)
- tests: use LocationFull for fixtures (#240) (f04a53f)
Technical
- fix restart policy for nginx (#232) (e924d00)
- Simplify api.py (move endpoints to their own routers) (#226) (683600b)
1.22.0 (2024-02-24)
Features
Bug Fixes
1.21.0 (2024-02-21)
Features
- add a route to get all user proofs (c4b6a7a)
- add advanced filtering on GET /prices (#29) (9b52406)
- add an endpoint to delete a session (#174) (a2955dc)
- add CORS configuration (#62) (79de31b)
- add endpoint to retrieve location by osm data (#108) (b317014)
- add endpoint to retrieve product by code (#106) (70f4567)
- add extra filters on GET /prices (#100) (27edae3)
- add filter on Proof.price_count field (#187) (0068cd5)
- add labels_tags field (ea2bdb0)
- add location filter on price_count (#142) (1237687)
- add location.price_count to keep track of number of prices (#140) (817663f)
- add openapi tags on endpoints (#88) (e7b0c14)
- add pagination on GET /prices (#28) (4e39b71)
- add price filters on category_tag, labels_tags & origins_tags (#113) (2a1e350)
- add price.origins_tags field (#110) (46e0c7f)
- add price.price_is_discounted field (#163) (a73e460)
- add price.price_per field (#127) (5740271)
- add price.price_without_discount field (#130) (5e3be73)
- add Price.product_name field (#83) (36d551f)
- add product filter on price_count (#134) (3f687d2)
- add product.price_count field to keep track of number of prices (#129) (73b32e6)
- add proof object in price response (#131) (450b82e)
- add proof support (19ee604)
- add proof.is_public field (#126) (20a4b16)
- add proof.price_count to keep track of number of prices (#185) (1637f36)
- add Proof.type field (#68) (d211c0a)
- add relationship objects in response of GET /prices (#92) (2156690)
- add sorting on GET /prices (#90) (7139ec9)
- add support for cookie authentication (9e8413d)
- add user sessions (#149) (a23977e), closes #148
- add user.price_count to keep track of number of prices (#143) (0f13566)
- add vue.js frontend on /app (ca38cbf)
- additional tests on Price create (#60) (bcbcc2a)
- allow to upload price of barcode-less products (#53) (d44d86d)
- ask for proof type when creating (#95) (529cdce)
- auth: avoid recreating existing user on login (#144) (502539c)
- authentication workflow and store user token (#22) (81bab91)
- fetch location data from OpenStreetMap Nominatim (#38) (2044e6b)
- fetch product data from OpenFoodFacts (#49) (cc5a778)
- GET /locations/id endpoint to get location details (#37) (4a4eca1)
- GET /products/id endpoint to get product details (#46) (74f011c)
- import product DB every day (#119) (b60c3ac)
- import script for GDPR requests csv (Auchan, Carrefour, E.Leclerc, Intermarché) (#209) (0c491e4)
- locations GET endpoint (#138) (300697f)
- manage webp proof uploads (#98) (830315b)
- new DELETE prices endpoint (#179) (35d9f6e)
- new DELETE proofs endpoint (#197) (6066982)
- new Product.brands field (#93) (fd359dc)
- new Product.brands_tags array field (#207) (ba5b917)
- new Product.categories_tags array field (#192) (e9d73ae)
- new Product.labels_tags array field (#208) (95aa5fb)
- new Product.product_quantity_unit field (#194) (aa353bf)
- new user.is_moderator field (#183) (450305b)
- on Price create, create (or get) Location, and link them (#36) (003de11)
- on Price create, create (or get) Product, and link them (#45) (71cf40a)
- paginate, filter & order proofs (#150) (ed53599)
- Price model (#23) (56a853b)
- price POST endpoint (#24) (0bf98ca)
- price: add filter on created field (689d4ab)
- prices GET endpoint (#26) (a769910)
- products GET endpoint (#122) (f80d80b)
- return Price.owner info (6e922f3)
- simple Location model (#35) (32562ad)
- simple Product model (#44) (2bfa8f6)
- simply Price.currency validation (#67) (d7dfb0c)
- User model (#21) (556cc6f)
- users GET endpoint (#147) (6fdb640)
Bug Fixes
- add --batch-size param to CLI command (dca9098)
- add /api/v1 prefix to all relevant routes (#74) (353e59f)
- add image serving (5808b7a)
- add index on products.price_count field (9fdfdcd)
- add missing filter on Product.product_id field. ref #134 (0ab9f9d)
- add prod env config (8ced9d1)
- add status endpoint (b3ddad9)
- always return proof.file_path for proof uploaded by the user (#132) (fe14346)
- better fetch location city from OSM. ref #38 (c37e7a6)
- bump release please version (a37e7da)
- CORS: revert configuration. add openfoodfacts-explorer to whitelist (e3e9098)
- CORS: temporarily allow all origins in deployed envs. ref #65 (06f2560)
- fix AttributeError in fetch_product_openfoodfacts_details (#161) (ffd9d65)
- fix container deploy config (36c4f1b)
- fix db error (#125) (57e4adb)
- fix duplicate key error due to duplicate products (bd6ff9c)
- fix email sign-in (#170) (69d65c0)
- fix github config (7edfa8d)
- fix labels_tags field validator (#69) (5f23977)
- fix landing page (cf9bb9d)
- fix locations GET filters. ref #138 (3d75e16)
- fix migration parent id. ref #183 (c62c52a)
- fix parsing bug in import_product_db (#164) (40f2c2a)
- fix product_quantity DB error (8196bc2)
- fix product.unique_scans_n server_default (54202d0)
- fix ProofCreate schema (ed34567)
- fix release please (#78) (86bb591)
- fix some typos in the landing page (#51) (e5fee84)
- fix tests following addition of Price.id field in schema. ref #179 (2818540)
- fix unique_scans_n null values (b967d5a)
- improve landing page (#71) (ec79ccc)
- improve price fetch performance (#118) (1b65ea2)
- lint last alembic version (1b0667d)
- lowercase the user_id (#215) (21444ff)
- normalize all tags values (9402bbb)
- Product.brands should be a string. ref #93 (7bbf1fc)
- return 201 instead of 200 on price (& proof) create (#66) (af543cf)
- stop using global db, use get_db instead (#30) (9739734)
- strip user_id (66a9c04)
- transform async func into func (22a5f0d)
- update docker-compose.yml to add postgres service (0b5c8af)
- update pre-commit config (5cc63f4)
- use black + isort on all files (877f3c6)
- use opsession instead of session as cookie name (#177) (dfd3e6a)
- use time.sleep instead of asyncio.sleep in non-corountine function (1ccffd6)
Technical
1.20.0 (2024-02-21)
Features
Bug Fixes
- normalize all tags values (9402bbb)
1.19.0 (2024-02-08)
Features
Bug Fixes
- fix tests following addition of Price.id field in schema. ref #179 (2818540)
1.18.0 (2024-02-06)
Features
Bug Fixes
1.17.0 (2024-02-04)
Features
- add filter on Proof.price_count field (#187) (0068cd5)
- add proof.price_count to keep track of number of prices (#185) (1637f36)
1.16.0 (2024-01-31)
Features
Bug Fixes
- use opsession instead of session as cookie name (#177) (dfd3e6a)
Technical
1.15.0 (2024-01-26)
Features
- price: add filter on created field (689d4ab)
Bug Fixes
Technical
1.14.0 (2024-01-25)
Features
Bug Fixes
- fix AttributeError in fetch_product_openfoodfacts_details (#161) (ffd9d65)
- fix parsing bug in import_product_db (#164) (40f2c2a)
1.13.1 (2024-01-24)
Technical
1.13.0 (2024-01-19)
Features
Technical
1.12.0 (2024-01-14)
Features
- add user.price_count to keep track of number of prices (#143) (0f13566)
- auth: avoid recreating existing user on login (#144) (502539c)
- users GET endpoint (#147) (6fdb640)
Bug Fixes
Technical
1.11.0 (2024-01-14)
Features
- add location filter on price_count (#142) (1237687)
- add location.price_count to keep track of number of prices (#140) (817663f)
1.10.0 (2024-01-13)
Features
1.9.1 (2024-01-12)
Bug Fixes
- add missing filter on Product.product_id field. ref #134 (0ab9f9d)
1.9.0 (2024-01-11)
Features
Bug Fixes
- always return proof.file_path for proof uploaded by the user (#132) (fe14346)
1.8.0 (2024-01-11)
Features
- add price.price_per field (#127) (5740271)
- add price.price_without_discount field (#130) (5e3be73)
- add product.price_count field to keep track of number of prices (#129) (73b32e6)
- add proof object in price response (#131) (450b82e)
Bug Fixes
- add index on products.price_count field (9fdfdcd)
Technical
1.7.0 (2024-01-10)
Features
Bug Fixes
- add --batch-size param to CLI command (dca9098)
- fix db error (#125) (57e4adb)
- fix duplicate key error due to duplicate products (bd6ff9c)
- fix product_quantity DB error (8196bc2)
- fix product.unique_scans_n server_default (54202d0)
- fix unique_scans_n null values (b967d5a)
1.6.1 (2024-01-03)
Bug Fixes
Technical
1.6.0 (2023-12-31)
Features
- add price filters on category_tag, labels_tags & origins_tags (#113) (2a1e350)
Technical
1.5.0 (2023-12-29)
Features
- add endpoint to retrieve location by osm data (#108) (b317014)
- add endpoint to retrieve product by code (#106) (70f4567)
- add price.origins_tags field (#110) (46e0c7f)
- return Price.owner info (6e922f3)
Technical
1.4.2 (2023-12-23)
Bug Fixes
- better fetch location city from OSM. ref #38 (c37e7a6)
1.4.1 (2023-12-23)
Bug Fixes
- Product.brands should be a string. ref #93 (7bbf1fc)
1.4.0 (2023-12-23)
Features
1.3.0 (2023-12-18)
Features
- add openapi tags on endpoints (#88) (e7b0c14)
- add Price.product_name field (#83) (36d551f)
- add relationship objects in response of GET /prices (#92) (2156690)
- add sorting on GET /prices (#90) (7139ec9)
- add vue.js frontend on /app (ca38cbf)
Bug Fixes
Technical
- make migration files available in dev (494bb96)
1.2.1 (2023-12-04)
Bug Fixes
1.2.0 (2023-11-27)
Features
Bug Fixes
- add image serving (5808b7a)
- CORS: revert configuration. add openfoodfacts-explorer to whitelist (e3e9098)
- CORS: temporarily allow all origins in deployed envs. ref #65 (06f2560)
- fix labels_tags field validator (#69) (5f23977)
- improve landing page (#71) (ec79ccc)
- lint last alembic version (1b0667d)
- return 201 instead of 200 on price (& proof) create (#66) (af543cf)
- use time.sleep instead of asyncio.sleep in non-corountine function (1ccffd6)
1.1.0 (2023-11-22)
Features
- fetch location data from OpenStreetMap Nominatim (#38) (2044e6b)
- fetch product data from OpenFoodFacts (#49) (cc5a778)
- GET /locations/id endpoint to get location details (#37) (4a4eca1)
- GET /products/id endpoint to get product details (#46) (74f011c)
- on Price create, create (or get) Location, and link them (#36) (003de11)
- on Price create, create (or get) Product, and link them (#45) (71cf40a)
- simple Location model (#35) (32562ad)
- simple Product model (#44) (2bfa8f6)
Bug Fixes
1.0.3 (2023-11-20)
Bug Fixes
- fix container deploy config (36c4f1b)
1.0.2 (2023-11-16)
Bug Fixes
1.0.1 (2023-11-16)
Bug Fixes
- transform async func into func (22a5f0d)
1.0.0 (2023-11-16)
Features
Bug Fixes
- add status endpoint (b3ddad9)
- stop using global db, use get_db instead (#30) (9739734)
- update docker-compose.yml to add postgres service (0b5c8af)
- update pre-commit config (5cc63f4)
- use black + isort on all files (877f3c6)