Skip to content

Commit

Permalink
Merge branch 'description_tasks' into 3.0-dodo
Browse files Browse the repository at this point in the history
  • Loading branch information
artem12345-png authored Jan 2, 2025
2 parents bdae55f + 0c0aae3 commit d4cb012
Show file tree
Hide file tree
Showing 8 changed files with 50 additions and 43 deletions.
25 changes: 12 additions & 13 deletions superset/charts/data/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -419,9 +419,9 @@ def _send_chart_response(
if not (result_queries := result["queries"]):
return self.response_400(_("Empty query result"))

exportAsTime = form_data.get("exportAsTime")
column_config = form_data.get("column_config")
table_order_by = form_data.get("table_order_by")
exportAsTime = form_data.get('exportAsTime') # с фронтам приходит поле "exportAstime", если тип графика big number и значение нужно экспортнуть как время
column_config = form_data.get('column_config') # с фронта приходит словарь, где лежат словари, в которых возможно есть поле "exportAsTime", если значение нужно экспортнуть как время, используется во всех остальных типах графиков
table_order_by = form_data.get('table_order_by') # используем для сортировки данных, приходит словарь, где ключ это колонка, по которому отсортировали, а значение это в каком порядке было отсортировано

if result_format == ChartDataResultFormat.XLSX:
# Verify user has permission to export XLSX file
Expand Down Expand Up @@ -451,18 +451,17 @@ def _send_chart_response(
return self.response_500(
_("Server error occurred while exporting the file")
)
if exportAsTime:
if exportAsTime: # экспорт в формате времени
key_column = df.keys()[0]
df[key_column] = df[key_column].apply(convert_to_time)

metric_map = dict()
datasourceMetrics = form_data.get("datasourceMetrics")
metric_map = dict() # получаем данные с фронта о метриках, чтобы корректно переводить колонки на русский язык при выгрузке
datasourceMetrics = form_data.get('datasourceMetrics')
if datasourceMetrics:
for datasource_metric in datasourceMetrics:
metric_map[datasource_metric.get("metric_name")] = (
datasource_metric.get("verbose_name")
)
if column_config:
metric_map[datasource_metric.get('metric_name')] = datasource_metric.get('verbose_name')
if column_config: # экспорт в формате времени

for k, v in column_config.items():
if v.get("exportAsTime"):
if isinstance(df.get(k), Series):
Expand All @@ -472,7 +471,7 @@ def _send_chart_response(
convert_to_time
)

if table_order_by:
if table_order_by: # сортируем данные при выгрузке
for k, v in table_order_by.items():
if v == "desc":
df = df.sort_values(by=[k], ascending=False)
Expand Down Expand Up @@ -532,7 +531,7 @@ def _send_chart_response(
datasource_metric.get("verbose_name")
)

if column_config:
if column_config: # экспорт в формате времени
for k, v in column_config.items():
if v.get("exportAsTime"):
if isinstance(df.get(k), Series):
Expand All @@ -542,7 +541,7 @@ def _send_chart_response(
convert_to_time
)

if table_order_by:
if table_order_by: # сортируем данные при выгрузке
for k, v in table_order_by.items():
if v == "desc":
df = df.sort_values(by=[k], ascending=False)
Expand Down
4 changes: 2 additions & 2 deletions superset/common/utils/dataframe_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,10 +47,10 @@ def left_join_df(
return df


def convert_to_time(value):
def convert_to_time(value): # экспорт в формате времени
if value and (isinstance(value, int) or isinstance(value, float)) and not math.isnan(value):
dt = datetime.datetime.fromtimestamp(value / 1000.0, tz=datetime.timezone.utc) - datetime.datetime.fromtimestamp(0, tz=datetime.timezone.utc)
return (
return ( # переводим время в продолдительность времени
f"{dt.seconds//3600 + dt.days * 24 if ((dt.seconds // 3600) + dt.days * 24 and len(str((dt.seconds // 3600) + dt.days * 24)) != 1) else f'{str((dt.seconds // 3600) + dt.days * 24)}'}:"
f"{(dt.seconds % 3600 // 60) if ((dt.seconds % 3600 // 60) and len(str(dt.seconds % 3600 // 60)) != 1) else f'0{str(dt.seconds % 3600 // 60)}'}:"
f"{dt.seconds % 60 if ((dt.seconds % 60) and len(str(dt.seconds % 60)) != 1) else f'0{str(dt.seconds % 60)}'}"
Expand Down
22 changes: 14 additions & 8 deletions superset/connectors/base/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -638,8 +638,11 @@ class BaseColumn(AuditMixinNullable, ImportExportMixin):
groupby = Column(Boolean, default=True)
filterable = Column(Boolean, default=True)
description = Column(MediumText())
# добавили поля для описания колонок на двух языках
description_EN = Column(MediumText(), nullable=True)
description_RU = Column(MediumText(), nullable=True)
# добавили поля для наименования колонок на двух языках
# описание данных в туллтипе
verbose_name_RU = Column(Text, nullable=True)
verbose_name_EN = Column(Text, nullable=True, default=None)
is_dttm = None
Expand Down Expand Up @@ -708,11 +711,11 @@ def data(self) -> dict[str, Any]:
"id",
"column_name",
"verbose_name",
"verbose_name_RU",
"verbose_name_EN",
"verbose_name_RU", # описание данных в туллтипе
"verbose_name_EN", # описание данных в туллтипе
"description",
"description_EN",
"description_RU",
"description_EN", # описание данных в туллтипе
"description_RU", # описание данных в туллтипе
"expression",
"filterable",
"groupby",
Expand All @@ -733,8 +736,11 @@ class BaseMetric(AuditMixinNullable, ImportExportMixin):
verbose_name = Column(String(1024))
metric_type = Column(String(32))
description = Column(MediumText())
# описание данных в туллтипе
# добавили поля для оптсания мер в датасете
description_EN = Column(MediumText(), nullable=True)
description_RU = Column(MediumText(), nullable=True)
# добавили поля для описания нарменовая мер в датасете
verbose_name_RU = Column(Text, nullable=True)
verbose_name_EN = Column(Text, nullable=True, default=None)
number_format = Column(Text, nullable=True)
Expand Down Expand Up @@ -780,12 +786,12 @@ def data(self) -> dict[str, Any]:
"id",
"metric_name",
"verbose_name",
"verbose_name_RU",
"verbose_name_EN",
"verbose_name_RU", # описание данных в туллтипе
"verbose_name_EN", # описание данных в туллтипе
"number_format",
"description",
"description_EN",
"description_RU",
"description_EN", # описание данных в туллтипе
"description_RU", # описание данных в туллтипе
"expression",
"warning_text",
"d3format",
Expand Down
16 changes: 8 additions & 8 deletions superset/datasets/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ class DatasetRestApi(BaseSupersetModelRestApi):
"columns.column_name",
"columns.created_on",
"columns.description",
"columns.description_RU",
"columns.description_EN",
"columns.description_RU", # описание данных в туллтипе
"columns.description_EN", # описание данных в туллтипе
"columns.expression",
"columns.filterable",
"columns.groupby",
Expand All @@ -168,24 +168,24 @@ class DatasetRestApi(BaseSupersetModelRestApi):
"columns.python_date_format",
"columns.type",
"columns.uuid",
"columns.verbose_name_RU",
"columns.verbose_name_EN",
"columns.verbose_name_RU", # описание данных в туллтипе
"columns.verbose_name_EN", # описание данных в туллтипе
"columns.verbose_name",
"metrics.changed_on",
"metrics.created_on",
"metrics.d3format",
"metrics.currency",
"metrics.description",
"metrics.description_RU",
"metrics.description_EN",
"metrics.description_RU", # описание данных в туллтипе
"metrics.description_EN", # описание данных в туллтипе
"metrics.expression",
"metrics.extra",
"metrics.id",
"metrics.metric_name",
"metrics.metric_type",
"metrics.verbose_name",
"metrics.verbose_name_RU",
"metrics.verbose_name_EN",
"metrics.verbose_name_RU", # описание данных в туллтипе
"metrics.verbose_name_EN", # описание данных в туллтипе
"metrics.number_format",
"metrics.warning_text",
"datasource_type",
Expand Down
1 change: 1 addition & 0 deletions superset/views/statement/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# это все нужно для вкладки на странице
import logging

from flask import g, redirect, request, Response
Expand Down
1 change: 1 addition & 0 deletions superset/views/team/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# это все нужно для вкладки на странице
import logging

from flask import request
Expand Down
6 changes: 3 additions & 3 deletions superset/views/users/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ def put_onboarding(self):
}
return self.response(200, result=user_response_schema.dump(result))

@expose("/team", ("GET",))
@expose("/team", ("GET",)) # текущая команда пользователя
def my_team(self):
try:
user = g.user
Expand All @@ -197,7 +197,7 @@ def my_team(self):
result["team"] = None
return self.response(200, result=user_response_schema.dump(result))

@expose("/statements", ("GET",))
@expose("/statements", ("GET",)) # все заявки пользователя
def my_statements(self):
try:
user = g.user
Expand All @@ -220,7 +220,7 @@ def my_statements(self):
result["statements"] = None
return self.response(200, result=user_response_schema.dump(result))

@expose("/country", ("GET",))
@expose("/country", ("GET",)) # страна пользователя, получаем в профиле
def my_country(self):
try:
user = g.user
Expand Down
18 changes: 9 additions & 9 deletions superset/views/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ def get_primary_filtersets(dashboard_id: int) -> Union[list[FilterSet], None]:
return None


def finish_onboarding():
def finish_onboarding(): # записываем в бд, что пользователь прошел onboarding
user_id = get_user_id()
try:
user_info = (
Expand All @@ -105,7 +105,7 @@ def finish_onboarding():
}


def get_onboarding() -> dict:
def get_onboarding() -> dict: # получаем информацию по onboarding из бд
user_id = get_user_id()
try:
user_info = (
Expand All @@ -120,7 +120,7 @@ def get_onboarding() -> dict:
}


def get_team_by_user_id() -> Team:
def get_team_by_user_id() -> Team: # получаем команду пользователя по его id
user_id = get_user_id()
try:
user = (
Expand All @@ -134,7 +134,7 @@ def get_team_by_user_id() -> Team:
return None


def get_statements_by_user_id() -> list[Statement]:
def get_statements_by_user_id() -> list[Statement]: # получаем все заявки пользователя по его id
user_id = get_user_id()
try:
user = (
Expand All @@ -147,7 +147,7 @@ def get_statements_by_user_id() -> list[Statement]:
return []


def get_country_by_user_id() -> list[UserInfo]:
def get_country_by_user_id() -> list[UserInfo]: # получаем странну пользователя по его id
user_id = get_user_id()
try:
user = (
Expand All @@ -160,7 +160,7 @@ def get_country_by_user_id() -> list[UserInfo]:
return []


def update_onboarding(dodo_role, started_time):
def update_onboarding(dodo_role, started_time): # обновляем данные по onboarding
user_id = get_user_id()
try:
user_info = (
Expand Down Expand Up @@ -251,7 +251,7 @@ def create_userinfo(lang: str): # DODO changed #33835937
logger.warning(e)


def insert_country(country_iso_num: int, username: str):
def insert_country(country_iso_num: int, username: str): # пишем в бд страну пользователя
try:
import pycountry
country_name = pycountry.countries.get(numeric=f"{country_iso_num}").name
Expand Down Expand Up @@ -281,7 +281,7 @@ def insert_country(country_iso_num: int, username: str):
logger.warning("Error add to db country")


def insert_data_auth(data_auth: str, username: str):
def insert_data_auth(data_auth: str, username: str): # пишем в бд информацию из додо ис
try:
user = (
db.session.query(User).filter(
Expand Down Expand Up @@ -332,7 +332,7 @@ def update_user_roles(user_model: int, roles): # DODO changed #33835937
return user_model


def find_team_by_slug(team_slug: str):
def find_team_by_slug(team_slug: str): # получаем команду по уникальному slug
try:
team = (
db.session.query(Team).filter(Team.slug == team_slug).one_or_none()
Expand Down

0 comments on commit d4cb012

Please sign in to comment.