271 |
271 |
ref[place_id]['city'] = place.get('city')
|
272 |
272 |
ref[place_id]['zipcode'] = place.get('zipCode')
|
273 |
273 |
|
|
274 |
# Custom attributes
|
274 |
275 |
for attr_name, attr_def in extensionAttributes.items():
|
275 |
276 |
attr_value = place.get(attr_name)
|
276 |
277 |
if attr_value is not None and attr_def['type'] == 'int':
|
... | ... | |
280 |
281 |
cache.set(cache_key, ref)
|
281 |
282 |
return ref
|
282 |
283 |
|
|
284 |
def _filter_places_referential(self, places_ref, ref_filters):
|
|
285 |
# Strip filter name from their prefix
|
|
286 |
filters = {}
|
|
287 |
for p_name, p_value in ref_filters.items():
|
|
288 |
if p_name.startswith('referential_'):
|
|
289 |
p_name = p_name.replace('referential_', '')
|
|
290 |
filters[p_name] = p_value
|
|
291 |
|
|
292 |
# Filter on custom attributes
|
|
293 |
if filters:
|
|
294 |
res = {}
|
|
295 |
for place_id, place in places_ref.items():
|
|
296 |
for filter_name, filter_value in filters.items():
|
|
297 |
for field in self.custom_fields:
|
|
298 |
if filter_name == field['name']:
|
|
299 |
if field['type'] == 'int':
|
|
300 |
filter_value = int(filter_value)
|
|
301 |
if place.get(filter_name) == filter_value:
|
|
302 |
res[place_id] = place
|
|
303 |
places_ref = res
|
|
304 |
|
|
305 |
return places_ref
|
|
306 |
|
283 |
307 |
def _login(self):
|
284 |
308 |
try:
|
285 |
309 |
auth_url = urlparse.urljoin(self.url, 'auth')
|
... | ... | |
501 |
525 |
if place_id is not None:
|
502 |
526 |
places_id = [int(place_id)]
|
503 |
527 |
elif kwargs:
|
504 |
|
places_filter = {}
|
505 |
|
for p_name, p_value in kwargs.items():
|
506 |
|
if p_name.startswith('referential_'):
|
507 |
|
p_name = p_name.replace('referential_', '')
|
508 |
|
places_filter[p_name] = p_value
|
509 |
|
|
510 |
|
places = self._get_places_referential()
|
511 |
|
places_id = []
|
512 |
|
for place in places.values():
|
513 |
|
for filter_name, filter_value in places_filter.items():
|
514 |
|
for field in self.custom_fields:
|
515 |
|
if filter_name == field['name']:
|
516 |
|
if field['type'] == 'int':
|
517 |
|
filter_value = int(filter_value)
|
518 |
|
if place.get(filter_name) == filter_value:
|
519 |
|
places_id.append(place['identifier'])
|
|
528 |
places_id = self._filter_places_referential(
|
|
529 |
self._get_places_referential(), kwargs).keys()
|
520 |
530 |
else:
|
521 |
531 |
places_id = self._get_places_by_capacity(int(min_capacity), int(max_capacity))
|
522 |
532 |
|
... | ... | |
558 |
568 |
return {'data': self.generic_call('getActivityTypes', 'types')}
|
559 |
569 |
|
560 |
570 |
@endpoint(description_get=_('Get places referential'), methods=['get'], perm='can_access')
|
561 |
|
def getplacesreferential(self, request):
|
562 |
|
return {'data': self._get_places_referential()}
|
|
571 |
def getplacesreferential(self, request, **kwargs):
|
|
572 |
return {
|
|
573 |
'data': self._filter_places_referential(
|
|
574 |
self._get_places_referential(), kwargs)
|
|
575 |
}
|
563 |
576 |
|
564 |
577 |
@endpoint(description_get=_('Get reservation types'), methods=['get'], perm='can_access')
|
565 |
578 |
def getreservationtypes(self, request):
|
566 |
579 |
return {'data': self.generic_call('getReservationTypes', 'types')}
|
567 |
580 |
|
568 |
|
|
569 |
581 |
@endpoint(description_get=_('Get users'), methods=['get'], perm='can_access')
|
570 |
582 |
def getusers(self, request):
|
571 |
583 |
return {'data': self.generic_call('getUsersList', 'usersList')}
|