Merge pull request #233 from RubenPX/filter-in-out-trades
Filter in out trades from lots selector
This commit is contained in:
commit
7177b0fbfd
|
@ -9,6 +9,12 @@ dags-with-materialized-paths-using-postgres-ltree/>`_ you have
|
||||||
a low-level technical implementation of how lots and their
|
a low-level technical implementation of how lots and their
|
||||||
relationships are mapped.
|
relationships are mapped.
|
||||||
|
|
||||||
|
Getting lots
|
||||||
|
************
|
||||||
|
|
||||||
|
You can get lots list by ``GET /lots/``
|
||||||
|
There are one optional filter ``type``, only works with this 3 values ``temporary``, ``incoming`` and ``outgoing``
|
||||||
|
|
||||||
Create lots
|
Create lots
|
||||||
***********
|
***********
|
||||||
You create a lot by ``POST /lots/`` a `JSON Lot object <https://
|
You create a lot by ``POST /lots/`` a `JSON Lot object <https://
|
||||||
|
@ -28,7 +34,6 @@ And for devices is all the same:
|
||||||
``POST /lots/<parent-lot-id>/devices/?id=<device-id-1>&id=<device-id-2>``;
|
``POST /lots/<parent-lot-id>/devices/?id=<device-id-1>&id=<device-id-2>``;
|
||||||
idem for removing devices.
|
idem for removing devices.
|
||||||
|
|
||||||
|
|
||||||
Sharing lots
|
Sharing lots
|
||||||
************
|
************
|
||||||
Sharing a lot means giving certain permissions to users, like reading
|
Sharing a lot means giving certain permissions to users, like reading
|
||||||
|
|
|
@ -29,6 +29,7 @@ class LotView(View):
|
||||||
"""
|
"""
|
||||||
format = EnumField(LotFormat, missing=None)
|
format = EnumField(LotFormat, missing=None)
|
||||||
search = f.Str(missing=None)
|
search = f.Str(missing=None)
|
||||||
|
type = f.Str(missing=None)
|
||||||
|
|
||||||
def post(self):
|
def post(self):
|
||||||
l = request.get_json()
|
l = request.get_json()
|
||||||
|
@ -88,6 +89,7 @@ class LotView(View):
|
||||||
else:
|
else:
|
||||||
query = Lot.query
|
query = Lot.query
|
||||||
query = self.visibility_filter(query)
|
query = self.visibility_filter(query)
|
||||||
|
query = self.type_filter(query, args)
|
||||||
if args['search']:
|
if args['search']:
|
||||||
query = query.filter(Lot.name.ilike(args['search'] + '%'))
|
query = query.filter(Lot.name.ilike(args['search'] + '%'))
|
||||||
lots = query.paginate(per_page=6 if args['search'] else query.count())
|
lots = query.paginate(per_page=6 if args['search'] else query.count())
|
||||||
|
@ -104,6 +106,21 @@ class LotView(View):
|
||||||
Lot.owner_id == g.user.id))
|
Lot.owner_id == g.user.id))
|
||||||
return query
|
return query
|
||||||
|
|
||||||
|
def type_filter(self, query, args):
|
||||||
|
lot_type = args.get('type')
|
||||||
|
|
||||||
|
# temporary
|
||||||
|
if lot_type == "temporary":
|
||||||
|
return query.filter(Lot.trade == None)
|
||||||
|
|
||||||
|
if lot_type == "incoming":
|
||||||
|
return query.filter(Lot.trade and Trade.user_to == g.user)
|
||||||
|
|
||||||
|
if lot_type == "outgoing":
|
||||||
|
return query.filter(Lot.trade and Trade.user_from == g.user)
|
||||||
|
|
||||||
|
return query
|
||||||
|
|
||||||
def query(self, args):
|
def query(self, args):
|
||||||
query = Lot.query.distinct()
|
query = Lot.query.distinct()
|
||||||
return query
|
return query
|
||||||
|
|
|
@ -4,7 +4,7 @@ const Api = {
|
||||||
* @returns get lots
|
* @returns get lots
|
||||||
*/
|
*/
|
||||||
async get_lots() {
|
async get_lots() {
|
||||||
const request = await this.doRequest(API_URLS.lots, "GET", null);
|
const request = await this.doRequest(`${API_URLS.lots}?type=temporary`, "GET", null);
|
||||||
if (request != undefined) return request.items;
|
if (request != undefined) return request.items;
|
||||||
throw request;
|
throw request;
|
||||||
},
|
},
|
||||||
|
|
Reference in New Issue