Last active
June 11, 2018 12:00
-
-
Save Cirhuzalain/c44d2a6ad522e4d84f4fe545bd9e883b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # -*- coding: utf-8 -*- | |
| from main import * | |
| _logger = logging.getLogger(__name__) | |
| # List of REST resources in current file: | |
| # (url prefix) (method) (action) | |
| # /api/vendor.farmer GET - Read all (with optional filters, offset, limit, order) | |
| # /api/vendor.farmer/<id> GET - Read one | |
| # /api/vendor.farmer POST - Create one | |
| # /api/vendor.farmer/<id> PUT - Update one | |
| # /api/vendor.farmer/<id> DELETE - Delete one | |
| # /api/vendor.farmer/<id>/<method> PUT - Call method (with optional parameters) | |
| # List of IN/OUT data (json data and HTTP-headers) for each REST resource: | |
| # /api/vendor.farmer GET - Read all (with optional filters, offset, limit, order) | |
| # IN data: | |
| # HEADERS: | |
| # 'access_token' | |
| # JSON: | |
| # (optional filters (Odoo domain), offset, limit, order) | |
| # { # editable | |
| # "filters": "[('some_field_1', '=', some_value_1), ('some_field_2', '!=', some_value_2), ...]", | |
| # "offset": XXX, | |
| # "limit": XXX, | |
| # "order": "list_of_fields" # default 'name asc' | |
| # } | |
| # OUT data: | |
| OUT__vendor_farmer__read_all__SUCCESS_CODE = 200 # editable | |
| # JSON: | |
| # { | |
| # "count": XXX, # number of returned records | |
| # "results": [ | |
| OUT__vendor_farmer__read_all__JSON = ( # editable | |
| 'id', | |
| 'name', | |
| 'phone', | |
| 'email', | |
| 'address', | |
| 'gender', | |
| 'head_of_household', | |
| 'num_household_members', | |
| 'spouse_firstname', | |
| 'spouse_lastname', | |
| 'cellphone_alt', | |
| 'cell_carrier', | |
| 'membership_id', | |
| 'ar_tractors', | |
| 'ar_harverster', | |
| 'ar_dryer', | |
| 'ar_thresher', | |
| 'ar_safestorage', | |
| 'ar_other', | |
| 'mws_dam', | |
| 'mws_well', | |
| 'mws_borehole', | |
| 'mws_rs', | |
| 'mws_pb', | |
| 'mws_irrigation', | |
| 'mws_none', | |
| 'mws_other', | |
| 'user_id', | |
| 'storage_details', | |
| 'other_details', | |
| 'total_land_plot_size', | |
| 'categ_total_land_plot_size', | |
| ('access_info_ids', [( | |
| 'id', | |
| 'ar_aes', | |
| 'ar_cri', | |
| 'ar_seeds', | |
| 'ar_of', | |
| 'ar_if', | |
| 'ar_labour', | |
| 'ar_iwp', | |
| 'ar_ss', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]), | |
| ('vendor_land_ids', [( | |
| 'id', | |
| 'vendor_id', | |
| 'plot_size', | |
| 'lat', | |
| 'lng', | |
| 'harvest_id' | |
| )]), | |
| ('forecast_vendor_ids', [( | |
| 'id', | |
| 'total_arable_land_plots', | |
| 'expected_production_in_mt', | |
| 'forecasted_yield_mt', | |
| 'forecasted_harvest_sale_value', | |
| 'total_coop_land_size', | |
| 'farmer_percentage_land', | |
| 'current_ppp_commitment', | |
| 'farmer_contribution_ppp', | |
| 'farmer_expected_min_ppp', | |
| 'minimum_flow_price', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]), | |
| ('finance_data_ids', [( | |
| 'id', | |
| 'outstanding_loan', | |
| 'total_loan_amount', | |
| 'total_outstanding', | |
| 'interest_rate', | |
| 'duration', | |
| 'loan_provider', | |
| 'loan_purpose_i', | |
| 'loan_purpose_a', | |
| 'loan_purpose_o', | |
| 'mobile_money_account', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]), | |
| ('baseline_ids', [( | |
| 'id', | |
| 'seasona_harvest', | |
| 'lost_harvest_total', | |
| 'sold_harvest_total', | |
| 'total_qty_coops', | |
| 'price_sold_coops', | |
| 'total_qty_middlemen', | |
| 'price_sold_middlemen', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]) | |
| ) | |
| # ] | |
| # } | |
| # /api/vendor.farmer/<id> GET - Read one | |
| # IN data: | |
| # HEADERS: | |
| # 'access_token' | |
| # JSON: | |
| # (optional parameter 'search_field' for search object not by 'id' field) | |
| # {"search_field": "some_field_name"} # editable | |
| # OUT data: | |
| OUT__vendor_farmer__read_one__SUCCESS_CODE = 200 # editable | |
| OUT__vendor_farmer__read_one__JSON = ( # editable | |
| # (The order of fields of different types maybe arbitrary) | |
| # simple fields (non relational): | |
| 'id', | |
| 'name', | |
| 'phone', | |
| 'email', | |
| 'address', | |
| 'gender', | |
| 'head_of_household', | |
| 'num_household_members', | |
| 'spouse_firstname', | |
| 'spouse_lastname', | |
| 'cellphone_alt', | |
| 'cell_carrier', | |
| 'membership_id', | |
| 'ar_tractors', | |
| 'ar_harverster', | |
| 'ar_dryer', | |
| 'ar_thresher', | |
| 'ar_safestorage', | |
| 'ar_other', | |
| 'mws_dam', | |
| 'mws_well', | |
| 'mws_borehole', | |
| 'mws_rs', | |
| 'mws_pb', | |
| 'mws_irrigation', | |
| 'mws_none', | |
| 'mws_other', | |
| 'user_id', | |
| 'total_land_plot_size', | |
| 'storage_details', | |
| 'other_details', | |
| 'categ_total_land_plot_size', | |
| ('access_info_ids', [( | |
| 'id', | |
| 'ar_aes', | |
| 'ar_cri', | |
| 'ar_seeds', | |
| 'ar_of', | |
| 'ar_if', | |
| 'ar_labour', | |
| 'ar_iwp', | |
| 'ar_ss', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]), | |
| ('vendor_land_ids', [( | |
| 'id', | |
| 'vendor_id', | |
| 'plot_size', | |
| 'lat', | |
| 'lng', | |
| 'harvest_id' | |
| )]), | |
| ('forecast_vendor_ids', [( | |
| 'id', | |
| 'total_arable_land_plots', | |
| 'expected_production_in_mt', | |
| 'forecasted_yield_mt', | |
| 'forecasted_harvest_sale_value', | |
| 'total_coop_land_size', | |
| 'farmer_percentage_land', | |
| 'current_ppp_commitment', | |
| 'farmer_contribution_ppp', | |
| 'farmer_expected_min_ppp', | |
| 'minimum_flow_price', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]), | |
| ('finance_data_ids', [( | |
| 'id', | |
| 'outstanding_loan', | |
| 'total_loan_amount', | |
| 'total_outstanding', | |
| 'interest_rate', | |
| 'duration', | |
| 'loan_provider', | |
| 'loan_purpose_i', | |
| 'loan_purpose_a', | |
| 'loan_purpose_o', | |
| 'mobile_money_account', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]), | |
| ('baseline_ids', [( | |
| 'id', | |
| 'seasona_harvest', | |
| 'lost_harvest_total', | |
| 'sold_harvest_total', | |
| 'total_qty_coops', | |
| 'price_sold_coops', | |
| 'total_qty_middlemen', | |
| 'price_sold_middlemen', | |
| 'harvest_id', | |
| 'vendor_id' | |
| )]) | |
| ) | |
| # /api/vendor.farmer POST - Create one | |
| # IN data: | |
| # HEADERS: | |
| # 'access_token' | |
| # DEFAULTS: | |
| # (optional default values of fields) | |
| DEFAULTS__vendor_farmer__create_one__JSON = { # editable | |
| #"some_field_1": some_value_1, | |
| #"some_field_2": some_value_2, | |
| #... | |
| } | |
| # JSON: | |
| # (fields and its values of created object; | |
| # don't forget about model's mandatory fields!) | |
| # ... # editable | |
| # OUT data: | |
| OUT__vendor_farmer__create_one__SUCCESS_CODE = 200 # editable | |
| OUT__vendor_farmer__create_one__JSON = ( # editable | |
| 'id', | |
| ) | |
| # /api/vendor.farmer/<id> PUT - Update one | |
| # IN data: | |
| # HEADERS: | |
| # 'access_token' | |
| # JSON: | |
| # (fields and new values of updated object) # editable | |
| # ... | |
| # OUT data: | |
| OUT__vendor_farmer__update_one__SUCCESS_CODE = 200 # editable | |
| # /api/vendor.farmer/<id> DELETE - Delete one | |
| # IN data: | |
| # HEADERS: | |
| # 'access_token' | |
| # OUT data: | |
| OUT__vendor_farmer__delete_one__SUCCESS_CODE = 200 # editable | |
| # /api/vendor.farmer/<id>/<method> PUT - Call method (with optional parameters) | |
| # IN data: | |
| # HEADERS: | |
| # 'access_token' | |
| # JSON: | |
| # (named parameters of method) # editable | |
| # ... | |
| # OUT data: | |
| OUT__vendor_farmer__call_method__SUCCESS_CODE = 200 # editable | |
| # HTTP controller of REST resources: | |
| class ControllerREST(http.Controller): | |
| # Read all (with optional filters, offset, limit, order): | |
| @http.route('/api/vendor.farmer', methods=['GET'], type='http', auth='none') | |
| @check_permissions | |
| def api__vendor_farmer__GET(self): | |
| return wrap__resource__read_all( | |
| modelname='vendor.farmer', | |
| default_domain=[], | |
| success_code=OUT__vendor_farmer__read_all__SUCCESS_CODE, | |
| OUT_fields=OUT__vendor_farmer__read_all__JSON | |
| ) | |
| # Read one: | |
| @http.route('/api/vendor.farmer/<id>', methods=['GET'], type='http', auth='none') | |
| @check_permissions | |
| def api__vendor_farmer__id_GET(self, id): | |
| return wrap__resource__read_one( | |
| modelname='vendor.farmer', | |
| id=id, | |
| success_code=OUT__vendor_farmer__read_one__SUCCESS_CODE, | |
| OUT_fields=OUT__vendor_farmer__read_one__JSON | |
| ) | |
| # Create one: | |
| @http.route('/api/vendor.farmer', methods=['POST'], type='http', auth='none', csrf=False) | |
| @check_permissions | |
| def api__vendor_farmer__POST(self): | |
| return wrap__resource__create_one( | |
| modelname='vendor.farmer', | |
| default_vals=DEFAULTS__vendor_farmer__create_one__JSON, | |
| success_code=OUT__vendor_farmer__create_one__SUCCESS_CODE, | |
| OUT_fields=OUT__vendor_farmer__create_one__JSON | |
| ) | |
| # Update one: | |
| @http.route('/api/vendor.farmer/<id>', methods=['PUT'], type='http', auth='none', csrf=False) | |
| @check_permissions | |
| def api__vendor_farmer__id_PUT(self, id): | |
| return wrap__resource__update_one( | |
| modelname='vendor.farmer', | |
| id=id, | |
| success_code=OUT__vendor_farmer__update_one__SUCCESS_CODE | |
| ) | |
| # Delete one: | |
| @http.route('/api/vendor.farmer/<id>', methods=['DELETE'], type='http', auth='none', csrf=False) | |
| @check_permissions | |
| def api__vendor_farmer__id_DELETE(self, id): | |
| return wrap__resource__delete_one( | |
| modelname='vendor.farmer', | |
| id=id, | |
| success_code=OUT__vendor_farmer__delete_one__SUCCESS_CODE | |
| ) | |
| # Call method (with optional parameters): | |
| @http.route('/api/vendor.farmer/<id>/<method>', methods=['PUT'], type='http', auth='none', csrf=False) | |
| @check_permissions | |
| def api__vendor_farmer__id__method_PUT(self, id, method): | |
| return wrap__resource__call_method( | |
| modelname='vendor.farmer', | |
| id=id, | |
| method=method, | |
| success_code=OUT__vendor_farmer__call_method__SUCCESS_CODE | |
| ) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment