Skip to content

Commit

Permalink
Merge branch 'stage'
Browse files Browse the repository at this point in the history
  • Loading branch information
f1nality committed Mar 15, 2024
2 parents d2f041a + f554800 commit 052fde6
Show file tree
Hide file tree
Showing 12 changed files with 41 additions and 23 deletions.
2 changes: 1 addition & 1 deletion packages/jet_bridge/jet_bridge/__init__.py
@@ -1 +1 @@
VERSION = '1.8.40'
VERSION = '1.8.41'
1 change: 1 addition & 0 deletions packages/jet_bridge/jet_bridge/configuration.py
Expand Up @@ -35,6 +35,7 @@ def get_settings(self):
'JWT_VERIFY_KEY': settings.JWT_VERIFY_KEY,
'BEARER_AUTH_KEY': settings.BEARER_AUTH_KEY,
'ENVIRONMENT_TYPE': settings.ENVIRONMENT_TYPE,
'BLACKLIST_HOSTS': settings.BLACKLIST_HOSTS,
'DATABASE_ENGINE': settings.DATABASE_ENGINE,
'DATABASE_HOST': settings.DATABASE_HOST,
'DATABASE_PORT': settings.DATABASE_PORT,
Expand Down
2 changes: 2 additions & 0 deletions packages/jet_bridge/jet_bridge/settings.py
Expand Up @@ -39,6 +39,7 @@
define('jwt_verify_key', help='JWT verify key', type=str, default=None)
define('bearer_auth_key', help='Bearer auth key', type=str, default=None)
define('environment_type', help='environment type', type=str, default=None)
define('blacklist_hosts', help='blacklisted hosts', type=str, default=None)

define('web_base_url', default=DEFAULT_WEB_BASE_URL, help='Jet Admin frontend application base URL')
define('api_base_url', default=DEFAULT_API_BASE_URL, help='Jet Admin API base URL')
Expand Down Expand Up @@ -154,6 +155,7 @@
JWT_VERIFY_KEY = options.jwt_verify_key
BEARER_AUTH_KEY = options.bearer_auth_key
ENVIRONMENT_TYPE = options.environment_type
BLACKLIST_HOSTS = options.blacklist_hosts

WEB_BASE_URL = options.web_base_url
API_BASE_URL = options.api_base_url
Expand Down
2 changes: 1 addition & 1 deletion packages/jet_bridge/setup.py
Expand Up @@ -15,7 +15,7 @@ def get_install_requires():
install_requires = [
'tornado==5.1.1',
'six',
'jet-bridge-base==1.8.40',
'jet-bridge-base==1.8.41',
'paramiko==2.8.1',
'sshtunnel',
]
Expand Down
2 changes: 1 addition & 1 deletion packages/jet_bridge_base/jet_bridge_base/__init__.py
@@ -1,3 +1,3 @@
from jet_bridge_base import settings

VERSION = '1.8.40'
VERSION = '1.8.41'
18 changes: 12 additions & 6 deletions packages/jet_bridge_base/jet_bridge_base/db.py
Expand Up @@ -381,6 +381,11 @@ def clean_hostname(hostname):


def get_blacklist_hostnames():
hostnames = []

if settings.BLACKLIST_HOSTS:
hostnames.extend(settings.BLACKLIST_HOSTS.split(','))

try:
import configparser
except ImportError:
Expand All @@ -391,13 +396,14 @@ def get_blacklist_hostnames():
config.read(settings.CONFIG)

config_value = config.get('JET', 'BLACKLIST_HOSTS', fallback='')

return list(filter(
lambda x: x is not None,
map(lambda x: clean_hostname(x), config_value.split(','))
))
hostnames.extend(config_value.split(','))
except:
return []
pass

return list(filter(
lambda x: x is not None,
map(lambda x: clean_hostname(x), hostnames)
))


def is_hostname_blacklisted(hostname):
Expand Down
30 changes: 18 additions & 12 deletions packages/jet_bridge_base/jet_bridge_base/serializers/sql.py
Expand Up @@ -4,7 +4,7 @@
from jet_bridge_base.fields.datetime import datetime_apply_default_timezone
from sqlalchemy import text, select, column, func, desc, or_, cast
from sqlalchemy import sql
from sqlalchemy.sql import sqltypes
from sqlalchemy.sql import sqltypes, quoted_name
from sqlalchemy.exc import SQLAlchemyError

from jet_bridge_base import fields
Expand Down Expand Up @@ -93,11 +93,11 @@ def validate(self, attrs):

return attrs

def aggregate_queryset(self, subquery, data):
def aggregate_queryset(self, subquery, data, session):
func_param = data['aggregate'].get('func').lower()
column_param = data['aggregate'].get('column')

y_column = column(column_param) if column_param is not None else None
y_column = self.get_column(session, column_param) if column_param is not None else None
y_func = get_query_func_by_name(func_param, y_column)

if y_func is None:
Expand All @@ -109,7 +109,7 @@ def group_queryset(self, subquery, data, session):
def get_y_func(group):
y_func_param = group.get('yFunc').lower()
y_column_param = group.get('yColumn')
y_column = column(y_column_param) if y_column_param is not None else None
y_column = self.get_column(session, y_column_param) if y_column_param is not None else None
return get_query_func_by_name(y_func_param, y_column)

if 'groups' in data:
Expand All @@ -131,7 +131,7 @@ def group_name(i):
def map_group_column(group, i):
x_lookup_param = group.get('xLookup')
x_column_param = group.get('xColumn')
x_column = column(x_column_param) if x_column_param is not None else None
x_column = self.get_column(session, x_column_param) if x_column_param is not None else None

lookup_params = x_lookup_param.split('_') if x_lookup_param else []
lookup_type = lookup_params[0] if len(lookup_params) >= 1 else None
Expand Down Expand Up @@ -163,9 +163,10 @@ def filter_queryset(self, queryset, data):
filter_data = filter_for_data_type(query_type)
for lookup in filter_data['lookups']:
for exclude in [False, True]:
column_ = self.get_column(session, item['name'], type_=query_type)
instance = filter_data['filter_class'](
name=item['name'],
column=column(item['name'], type_=query_type),
column=column_,
lookup=lookup,
exclude=exclude
)
Expand Down Expand Up @@ -211,7 +212,7 @@ def get_filter_value(name, filters_instance=None):

if search not in EMPTY_VALUES:
def map_column(item):
field = column(item['name'])
field = self.get_column(session, item['name'])
query_type = map_to_sql_type(item['data_type'])()

if isinstance(query_type, (sqltypes.Integer, sqltypes.Numeric)):
Expand All @@ -238,25 +239,30 @@ def paginate_queryset(self, queryset, data):

return queryset

def map_order_field(self, name):
def map_order_field(self, session, name):
descending = False
if name.startswith('-'):
name = name[1:]
descending = True
field = column(name)
field = self.get_column(session, name)
if descending:
field = desc(field)
return field

def get_column(self, session, name, **kwargs):
if get_session_engine(session) == 'oracle':
name = quoted_name(name, True)
return column(name, **kwargs)

def sort_queryset(self, queryset, data, session):
if 'order_by' in data:
order_by = list(map(lambda x: self.map_order_field(x), data['order_by']))
order_by = list(map(lambda x: self.map_order_field(session, x), data['order_by']))
queryset = queryset.order_by(*order_by)
else:
if 'aggregate' not in data and 'group' not in data and 'groups' not in data:
if get_session_engine(session) == 'mssql':
for item in data.get('columns', []):
field = column(item['name'])
field = self.get_column(session, item['name'])
queryset = queryset.order_by(field)
break

Expand Down Expand Up @@ -309,7 +315,7 @@ def execute(self, data):

try:
if 'aggregate' in data:
queryset = self.aggregate_queryset(subquery, data)
queryset = self.aggregate_queryset(subquery, data, session)
elif 'groups' in data or 'group' in data:
queryset = self.group_queryset(subquery, data, session)
else:
Expand Down
1 change: 1 addition & 0 deletions packages/jet_bridge_base/jet_bridge_base/settings.py
Expand Up @@ -20,6 +20,7 @@
JWT_VERIFY_KEY = '-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAyfJablscZmsh7eHisWHi\n/x2gJUjc9juL4VLkEpp6PH9Ah+wBtGmPF9nfoVlQsgH9hra63POiaLUzIwW/ewOl\njyPF0FJngsxreCxNs8lmd/WNXrcnazknFItkFFeXJuMTfoBPQGiZOmVYb14jmvkc\n9vMmeXYjrbT+95SVayN3E6DzLoHDhny4Mka1OsxvIP5s77s0dOo68TzoEfBVeuto\nI/dopG86DVu4wYVtYPITzJ4z47OFVPKCyYVyy5aR3+DUnmdK7xTRVr+iWmHpcr7e\nhoeVcL4CqAILZ0gd54kQmnHbg7Bu6x8JtQkiLU5TQvWzjiN00io4eydvIAkQTAaR\nmdd32O1vJbSHmLyCR2tEW/uV7P25naPUlkApxuLzh5C21S0XJxNJ/P07KSMymt5U\n1lWqt4CInpjAwMI8qs9MkEwJev5+yumxqIrDKcQLMR3TBLJZIb+rL1teCLOW28qB\nL6VSKhfKRIaXUdLpRwAcSuXraTzwa9oCCZa19tw3uizMeMFrCrv43YbyOsS9h7JQ\n8ixj/a1R/ud0fCrhXWUl7nKlz0b15koILLG1Ts+MUTmIaEnHTVEY74CfJVq7waw9\nx2kyzSzbsmMXvFkrVzTmyImTN631+gatU+npJ3vtcD9SooEZLOCLa4pb+DIsv9P1\nEeIEAh1VZC7s2qsQZsiYTG0CAwEAAQ==\n-----END PUBLIC KEY-----\n'
BEARER_AUTH_KEY = None
ENVIRONMENT_TYPE = None
BLACKLIST_HOSTS = None

WEB_BASE_URL = None
API_BASE_URL = None
Expand Down
2 changes: 1 addition & 1 deletion packages/jet_django/jet_django/__init__.py
@@ -1,2 +1,2 @@
VERSION = '1.8.40'
VERSION = '1.8.41'
default_app_config = 'jet_django.apps.JetDjangoConfig'
1 change: 1 addition & 0 deletions packages/jet_django/jet_django/configuration.py
Expand Up @@ -65,6 +65,7 @@ def get_settings(self):
'JWT_VERIFY_KEY': settings.JET_JWT_VERIFY_KEY,
'BEARER_AUTH_KEY': settings.JET_BEARER_AUTH_KEY,
'ENVIRONMENT_TYPE': settings.JET_ENVIRONMENT_TYPE,
'BLACKLIST_HOSTS': settings.JET_BLACKLIST_HOSTS,
'DATABASE_ENGINE': settings.database_engine,
'DATABASE_HOST': settings.database_settings.get('HOST'),
'DATABASE_PORT': settings.database_settings.get('PORT'),
Expand Down
1 change: 1 addition & 0 deletions packages/jet_django/jet_django/settings.py
Expand Up @@ -17,6 +17,7 @@
JET_JWT_VERIFY_KEY = getattr(settings, 'JET_JWT_VERIFY_KEY', None)
JET_BEARER_AUTH_KEY = getattr(settings, 'JET_BEARER_AUTH_KEY', None)
JET_ENVIRONMENT_TYPE = getattr(settings, 'JET_ENVIRONMENT_TYPE', 'django')
JET_BLACKLIST_HOSTS = getattr(settings, 'JET_BLACKLIST_HOSTS', None)

JET_BACKEND_API_BASE_URL = getattr(settings, 'JET_BACKEND_API_BASE_URL', 'https://api.jetadmin.io/api')
JET_BACKEND_WEB_BASE_URL = getattr(settings, 'JET_BACKEND_WEB_BASE_URL', 'https://app.jetadmin.io')
Expand Down
2 changes: 1 addition & 1 deletion packages/jet_django/setup.py
Expand Up @@ -15,7 +15,7 @@ def get_install_requires():
install_requires = [
'Django',
'requests',
'jet-bridge-base==1.8.40',
'jet-bridge-base==1.8.41',
]

try:
Expand Down

0 comments on commit 052fde6

Please sign in to comment.