Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix owner comments #5

Merged
merged 1 commit into from
Jan 16, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
24 changes: 10 additions & 14 deletions fmrest/server.py
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,9 @@ def _get_api_path(self, resource: str,
path.format_map(PlaceholderDict(database=self.database,
layout=request_layout)))

def _date_format_for_keyword(self, keyword: str) -> Optional[str]:
return next((format[1] for format in API_DATE_FORMATS if format[0] == keyword), None)

def _with_auto_relogin(f):
@wraps(f)
def wrapper(self, *args, **kwargs):
Expand Down Expand Up @@ -421,7 +424,7 @@ def get_record(self, record_id: int, portals: Optional[List[Dict]] = None,

params = build_portal_params(portals, True) if portals else {}

params['dateformats'] = next((format[1] for format in API_DATE_FORMATS if format[0] == date_format), None)
params['dateformats'] = self._date_format_for_keyword(date_format)

# set response layout; layout param is only handled for backward-
# compatibility
Expand Down Expand Up @@ -557,7 +560,7 @@ def get_records(self, offset: int = 1, limit: int = 100,
params['_offset'] = offset
params['_limit'] = limit

params['dateformats'] = next((format[1] for format in API_DATE_FORMATS if format[0] == date_format), None)
params['dateformats'] = self._date_format_for_keyword(date_format)

# set response layout; layout param is only handled for backward-
# compatibility
Expand Down Expand Up @@ -645,7 +648,7 @@ def find(self, query: List[Dict[str, Any]],
'sort': sort,
'limit': str(limit),
'offset': str(offset),
'dateformats': next((format[1] for format in API_DATE_FORMATS if format[0] == date_format), None),
'dateformats': self._date_format_for_keyword(date_format),
# "layout" param is only handled for backwards-compatibility
'layout.response': layout if layout else response_layout
}
Expand Down Expand Up @@ -853,8 +856,9 @@ def get_layout(self, layout: Optional[str] = None, metadata: Optional[str] = Non
return response.get('fieldMetaData', None)

@_with_auto_relogin
def get_value_list_values(self, name: str, layout: Optional[str] = None, output: Optional[str] = None) -> List[Tuple[str, str]]:
"""Retrieves layout metadata and returns a list of tuple of (value, display value) a named FileMaker value list.
def get_value_list_values(self, name: str, layout: Optional[str] = None) -> List[Tuple[str, str]]:
"""Retrieves layout metadata and returns a list of tuple of (value, display value) of a named FileMaker value list
in the format [('a','A'), ('b','B'), ('c','C')]

Parameters
-----------
Expand All @@ -863,11 +867,6 @@ def get_value_list_values(self, name: str, layout: Optional[str] = None, output:
layout : str, optional
Sets the layout name for this request. This takes precedence over
the value stored in the Server instance's layout attribute
output : str, optional
Type to output the tupled values. Default to 'list'
Choices are
'list': [('a','A'), ('b','B'), ('c','C')]
'tuple': (('a','A'), ('b','B'), ('c','C'))
"""
target_layout = layout if layout else self.layout
value_lists = self.get_layout(layout=target_layout, metadata='value_lists')
Expand All @@ -879,10 +878,7 @@ def get_value_list_values(self, name: str, layout: Optional[str] = None, output:
values += [(v['value'], v['displayValue']) for v in vlist['values']]
break

if output == 'tuple':
return tuple(values)
else:
return values
return values

def _call_filemaker(self, method: str, path: str,
data: Optional[Dict] = None,
Expand Down