def mobiles(request): #connect to our local mongodb client = MongoClient('localhost',27017) #get a connection to our database db = client['gsmarena'] mobileCollection = db['phones_test'] if request.method == 'GET': #get our collection mobiles = [] camera = int(request.query_params['camera']) ram = int(request.query_params['ram']) storage = int(request.query_params['storage']) battery = int(request.query_params['battery']) list1 = mobileCollection.find() newlist = sorted(list1, key=lambda k: ((camera * int(k['camera']))/8) + ((battery * int(k['battery']))/2100) + ((ram * int(k['ram']))/2) + ((storage * int(k['storage']))/8), reverse=True) for r in newlist: mobile = Mobile(r["url"],r["name"],r["camera"],r["ram"],r["storage"],r["battery"]) mobiles.append(mobile) serializedList = mobileSerializer(mobiles, many=True) # print serializedList return Response(serializedList.data) elif request.method == 'POST': pass
def restore_object(self, attrs, instance=None): if instance: instance.url = attrs.get('url', instance.url) instance.name = attrs.get('name', instance.name) instance.camera = attrs.get('camera', instance.camera) instance.ram = attrs.get('ram', instance.ram) instance.storage = attrs.get('storage', instance.storage) instance.battery = attrs.get('battery', instance.battery) return instance return Mobile(attrs.get('url'), attrs.get('name'), attrs.get('camera'), attrs.get('ram'), attrs.get('storage'), attrs.get('battery'))