def get(self, request, *args, **kwargs): start = time.time() add_query_syntax = as_bool(request.GET, 'add_query_syntax', False) document_type_schema = dict() for document_type in DocumentType.objects.all(): columns = get_columns(document_type, include_suggested=False, include_generic=document_type.is_generic() ) # type: List[ColumnDesc] system_fields = FIELD_CODES_SHOW_BY_DEFAULT_GENERIC \ if document_type.is_generic() else FIELD_CODES_SHOW_BY_DEFAULT_NON_GENERIC search_fields = set(document_type.search_fields.all().values_list( 'code', flat=True)) default_columns = { c.name for c in columns if c.field_code in system_fields or c.field_code in search_fields } document_type_schema[ document_type.code] = _document_type_schema_to_dto( document_type, columns, default_columns, add_query_syntax) common_filters_by_document_type = dict() for document_type_code, filter_id, title in SavedFilter.objects \ .filter(user__isnull=True, project_id__isnull=True, filter_type=FT_COMMON_FILTER) \ .values_list('document_type__code', 'id', 'title'): common_filters_by_document_type[document_type_code] = { 'id': filter_id, 'title': title } common_filters_by_project = dict() for project_id, filter_id, title in SavedFilter.objects \ .filter(user__isnull=True, project_id__isnull=False, filter_type=FT_COMMON_FILTER) \ .values_list('project_id', 'id', 'title'): common_filters_by_project[project_id] = { 'id': filter_id, 'title': title } user_doc_grid_configs_by_project = dict() for project_id, columns, column_filters, order_by in SavedFilter.objects \ .filter(user=request.user, project_id__isnull=False, filter_type=FT_USER_DOC_GRID_CONFIG) \ .values_list('project_id', 'columns', 'column_filters', 'order_by'): user_doc_grid_configs_by_project[project_id] = { 'columns': columns, 'column_filters': column_filters, 'order_by': order_by } return Response({ 'document_type_schema': document_type_schema, 'common_filters_by_document_type': common_filters_by_document_type, 'common_filters_by_project': common_filters_by_project, 'user_doc_grid_configs_by_project': user_doc_grid_configs_by_project, 'time': time.time() - start })
def get(self, request, *args, **kwargs): start = time.time() add_query_syntax = as_bool(request.GET, 'add_query_syntax', False) document_type_schema = dict() for document_type in DocumentType.objects.all(): columns = get_columns(document_type, include_generic=document_type.is_generic(), is_select=True) # type: List[ColumnDesc] columns = [ c for c in columns if c.field_code not in FIELD_CODES_HIDE_FROM_CONFIG_API ] system_fields = FIELD_CODES_SHOW_BY_DEFAULT_GENERIC \ if document_type.is_generic() else FIELD_CODES_SHOW_BY_DEFAULT_NON_GENERIC search_fields = set(document_type.search_fields.all().values_list( 'code', flat=True)) default_columns = { c.name for c in columns if c.field_code not in FIELD_CODES_HIDE_FROM_CONFIG_API and c.field_code not in FIELD_CODES_HIDE_BY_DEFAULT and (c.field_code in system_fields or c.field_code in search_fields ) } document_type_schema[ document_type.code] = _document_type_schema_to_dto( document_type, columns, default_columns, add_query_syntax) common_filters_by_document_type = defaultdict(list) # type: Dict[List] for document_type_code, filter_id, title, display_order in SavedFilter.objects \ .filter(project_id__isnull=True, filter_type=FT_COMMON_FILTER) \ .filter(Q(user__isnull=True) | Q(user=request.user)) \ .values_list('document_type__code', 'id', 'title', 'display_order'): common_filters_by_document_type[document_type_code].append({ 'id': filter_id, 'title': title, 'display_order': display_order }) common_filters_by_project = defaultdict(list) # type: Dict[List] for project_id, filter_id, title, display_order in SavedFilter.objects \ .filter(project_id__isnull=False, filter_type=FT_COMMON_FILTER) \ .filter(Q(user__isnull=True) | Q(user=request.user)) \ .values_list('project_id', 'id', 'title', 'display_order'): common_filters_by_project[project_id].append({ 'id': filter_id, 'title': title, 'display_order': display_order }) user_doc_grid_configs_by_project = defaultdict( list) # type: Dict[List] for project_id, columns, column_filters, order_by in SavedFilter.objects \ .filter(user=request.user, project_id__isnull=False, filter_type=FT_USER_DOC_GRID_CONFIG) \ .filter(document_type_id=F('project__type_id')) \ .order_by('pk') \ .values_list('project_id', 'columns', 'column_filters', 'order_by'): user_doc_grid_configs_by_project[project_id] = { 'columns': columns, 'column_filters': column_filters, 'order_by': order_by } return Response({ 'document_type_schema': document_type_schema, 'common_filters_by_document_type': common_filters_by_document_type, 'common_filters_by_project': common_filters_by_project, 'user_doc_grid_configs_by_project': user_doc_grid_configs_by_project, 'time': time.time() - start, 'scheme_migrations': { 'migrations': MIGRATION_TAGS, 'current_version': CURRENT_VERSION } })