dmart 1.4.41.post35__py3-none-any.whl → 1.4.41.post37__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -27,6 +27,9 @@ async def drop_index(space: str, schema: str) -> None:
27
27
  print(f"Error: {e}")
28
28
 
29
29
 
30
+ def main():
31
+ asyncio.run(drop_index(args.space, args.schema))
32
+
30
33
  if __name__ == "__main__":
31
34
  parser = argparse.ArgumentParser(description="Script to drop index and delete associated documents in Redis.")
32
35
  parser.add_argument("space", help="Space name where the index is located.")
@@ -37,4 +40,4 @@ if __name__ == "__main__":
37
40
  if args.schema == "meta":
38
41
  print("Cannot drop index for schema 'meta'")
39
42
 
40
- asyncio.run(drop_index(args.space, args.schema))
43
+ main()
dmart/dmart.py CHANGED
@@ -37,6 +37,7 @@ commands = """
37
37
  archive
38
38
  json_to_db
39
39
  db_to_json
40
+ update_query_policies
40
41
  help
41
42
  version
42
43
  info
@@ -140,7 +141,8 @@ LISTENING_PORT=8282
140
141
  "default_language": "en",
141
142
  "languages": { "ar": "العربية", "en": "English" },
142
143
  "backend": "http://localhost:8282",
143
- "websocket": "ws://0.0.0.0:8484/ws"
144
+ "websocket": "ws://0.0.0.0:8484/ws",
145
+ "cxb_url": "/cxb"
144
146
  }
145
147
  with open(cxb_config, "w") as f:
146
148
  json.dump(default_cxb_config, f, indent=2)
@@ -443,6 +445,7 @@ def hypercorn_main() -> int:
443
445
 
444
446
  if args.cxb_config is not sentinel:
445
447
  os.environ["DMART_CXB_CONFIG"] = args.cxb_config
448
+ settings.load_cxb_config()
446
449
 
447
450
  env_file = get_env_file()
448
451
  if env_file and os.path.exists(env_file):
@@ -594,6 +597,8 @@ def main():
594
597
  os.environ["DMART_CXB_CONFIG"] = sys.argv[idx + 1]
595
598
  sys.argv.pop(idx + 1)
596
599
  sys.argv.pop(idx)
600
+
601
+ settings.load_cxb_config()
597
602
 
598
603
  if open_cxb:
599
604
  host = settings.listening_host
@@ -733,6 +738,9 @@ def main():
733
738
  case "db_to_json":
734
739
  from data_adapters.sql.db_to_json_migration import main as db_to_json_migration
735
740
  db_to_json_migration()
741
+ case "update_query_policies":
742
+ from data_adapters.sql.update_query_policies import main as update_query_policies
743
+ update_query_policies()
736
744
  case "help":
737
745
  print("Available commands:")
738
746
  print(commands)
dmart/main.py CHANGED
@@ -493,9 +493,8 @@ if not os.path.exists(os.path.join(cxb_path, "index.html")):
493
493
  if os.path.isdir(cxb_path):
494
494
  @app.get(f"{settings.cxb_url}/config.json", include_in_schema=False)
495
495
  async def get_cxb_config():
496
- cxb_config = os.getenv("DMART_CXB_CONFIG")
497
- if cxb_config and os.path.exists(cxb_config):
498
- return FileResponse(cxb_config)
496
+ if settings.cxb_config_path and os.path.exists(settings.cxb_config_path):
497
+ return FileResponse(settings.cxb_config_path)
499
498
 
500
499
  if os.path.exists("config.json"):
501
500
  return FileResponse("config.json")
@@ -521,7 +520,8 @@ if os.path.isdir(cxb_path):
521
520
  "default_language": "en",
522
521
  "languages": { "ar": "العربية", "en": "English" },
523
522
  "backend": f"{settings.app_url}" if settings.app_url else f"http://{settings.listening_host}:{settings.listening_port}",
524
- "websocket": settings.websocket_url if settings.websocket_url else f"ws://{settings.listening_host}:{settings.websocket_port}/ws"
523
+ "websocket": settings.websocket_url if settings.websocket_url else f"ws://{settings.listening_host}:{settings.websocket_port}/ws",
524
+ "cxb_url": settings.cxb_url
525
525
  }
526
526
 
527
527
  app.mount(settings.cxb_url, SPAStaticFiles(directory=cxb_path, html=True), name="cxb")
@@ -537,7 +537,7 @@ async def myoptions():
537
537
  @app.patch("/{x:path}", include_in_schema=False)
538
538
  @app.delete("/{x:path}", include_in_schema=False)
539
539
  async def catchall(x):
540
- if x.startswith("cxb"):
540
+ if x.startswith(settings.cxb_url.strip("/")):
541
541
  return RedirectResponse(f"{settings.cxb_url}/")
542
542
  raise api.Exception(
543
543
  status_code=status.HTTP_404_NOT_FOUND,
dmart/utils/settings.py CHANGED
@@ -34,6 +34,7 @@ class Settings(BaseSettings):
34
34
 
35
35
  app_url: str = ""
36
36
  cxb_url: str = "/cxb"
37
+ cxb_config_path: str = ""
37
38
  public_app_url: str = ""
38
39
  app_name: str = "dmart"
39
40
  websocket_url: str = "" #"http://127.0.0.1:8484"
@@ -150,6 +151,46 @@ class Settings(BaseSettings):
150
151
 
151
152
  except Exception as e:
152
153
  logger.error(f"Failed to open the channel config file at {channels_config_file}. Error: {e}")
154
+
155
+ self.load_cxb_config()
156
+
157
+ def load_cxb_config(self) -> None:
158
+ backend_dir = Path(__file__).resolve().parent.parent
159
+ cxb_path = backend_dir / "cxb"
160
+ if (cxb_path / "client").is_dir():
161
+ cxb_path = cxb_path / "client"
162
+
163
+ if not (cxb_path / "index.html").exists():
164
+ project_root = backend_dir.parent
165
+ cxb_dist_path = project_root / "cxb" / "dist" / "client"
166
+ if cxb_dist_path.is_dir():
167
+ cxb_path = cxb_dist_path
168
+
169
+ config_path = None
170
+ cxb_config_env = os.getenv("DMART_CXB_CONFIG")
171
+ if cxb_config_env and os.path.exists(cxb_config_env):
172
+ config_path = cxb_config_env
173
+ elif os.path.exists("config.json"):
174
+ config_path = "config.json"
175
+ elif (self.spaces_folder / "config.json").exists():
176
+ config_path = str(self.spaces_folder / "config.json")
177
+ elif (Path.home() / ".dmart" / "config.json").exists():
178
+ config_path = str(Path.home() / ".dmart" / "config.json")
179
+ elif (cxb_path / "config.json").exists():
180
+ config_path = str(cxb_path / "config.json")
181
+
182
+ if config_path:
183
+ self.cxb_config_path = config_path
184
+ try:
185
+ with open(config_path, "r") as f:
186
+ config_data = json.load(f)
187
+ if "cxb_url" in config_data:
188
+ url = config_data["cxb_url"]
189
+ if not url.startswith("/"):
190
+ url = "/" + url
191
+ self.cxb_url = url
192
+ except Exception as e:
193
+ logger.error(f"Failed to read CXB config at {config_path}. Error: {e}")
153
194
 
154
195
  raw_allowed_submit_models: str = Field(default="",alias="allowed_submit_models")
155
196
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dmart
3
- Version: 1.4.41.post35
3
+ Version: 1.4.41.post37
4
4
  Requires-Python: >=3.11
5
5
  Requires-Dist: fastapi
6
6
  Requires-Dist: pydantic
@@ -8,13 +8,13 @@ dmart/conftest.py,sha256=0ry_zeCmdBNLbm5q115b-pkOrUFYxdsOUXbIMkr7E5Y,362
8
8
  dmart/curl.pypi.sh,sha256=KQ-kgV3_d5mwqoLd4XOwz5s2wRQ7LDVX3z-kvjvp9hA,15631
9
9
  dmart/curl.sh,sha256=lmHSFVr5ft-lc5Aq9LfvKyWfntrfYbnirhzx1EGjp_A,15743
10
10
  dmart/data_generator.py,sha256=CnE-VHEeX7-lAXtqCgbRqR9WHjTuOgeiZcviYrHAmho,2287
11
- dmart/dmart.py,sha256=GlDIYDINf74w1imZv0eDDZyYqdzBN5vkGSaoNidR4Os,33963
11
+ dmart/dmart.py,sha256=Hf3Ac9qq7xW43xKuZZHZQDDPl-DUiBlhae7nXHaTBQw,34281
12
12
  dmart/get_settings.py,sha256=Sbe2WCoiK398E7HY4SNLfDN_GmE8knR4M-YJWF31jcg,153
13
13
  dmart/hypercorn_config.toml,sha256=-eryppEG8HBOM_KbFc4dTQePnpyfoW9ZG5aUATU_6yM,50
14
14
  dmart/info.json,sha256=1VYb3TIoWeUp8-9IPkNkfqHIb3znxlrd8qa7oBl3_No,123
15
15
  dmart/login_creds.sh,sha256=Aht1LwL11uzR13sa8p3BdeUCprIa9tq0vzOoplJjH5U,235
16
16
  dmart/login_creds.sh.sample,sha256=Sb43HNNn1g11rrJrtDsPgAxcXu3_wJvdNn--8S62dTE,227
17
- dmart/main.py,sha256=EMsrV57yAf_LZbM-dY9ZkD6oEAFmdhIUQn9l81vmVn4,20072
17
+ dmart/main.py,sha256=FzxxjWwTF_DPUB7WvBpvqPnlqqZ2jvSPg-MNPJIfsYk,20126
18
18
  dmart/manifest.sh,sha256=K3mY5MsUlrTyHa5cARslkShegvXh-UeqJcE2UZobdrE,544
19
19
  dmart/migrate.py,sha256=hn1MZoVby_Jjqhc7y3CrLcGD619QmVZv3PONNvO7VKQ,665
20
20
  dmart/password_gen.py,sha256=xjx8wi105ZYvhLBBQj7_rugACpxifGXHse6f7YlGXWQ,196
@@ -204,7 +204,7 @@ dmart/data_adapters/file/archive.py,sha256=B4VV6HNB3Bqd4tlqZ3jUQps8oqht_xOdBNOi9
204
204
  dmart/data_adapters/file/create_index.py,sha256=lUcUkepo9QUIQDDDgoPAL74_n16cZ_q0NKnITGmbF6I,11888
205
205
  dmart/data_adapters/file/create_users_folders.py,sha256=zOBgxMnqgEskYP4pgkmE6VYMca-ADLz8mXKPHJPYpys,1670
206
206
  dmart/data_adapters/file/custom_validations.py,sha256=ziOERgTr-eY_zrN0C41B2FYmpEyoKiV4holh8an-p2c,1754
207
- dmart/data_adapters/file/drop_index.py,sha256=OK3wXwaO9tUcHcJjqyLeBnkElzK35MZMi8YLGWdrXRw,1417
207
+ dmart/data_adapters/file/drop_index.py,sha256=iczJVaEw22Q_x7u4GqyYCUdaeVUqLB8v5pCiONK24Ko,1441
208
208
  dmart/data_adapters/file/health_check.py,sha256=cMvwsXhjEykjrTyB3HtUn8QqKdtB_h5w8mGOEYPepzU,24221
209
209
  dmart/data_adapters/file/redis_services.py,sha256=83STcca5fYFaEVLRYAxfUQXeUQZqJOT8XH-GBSbkR-E,39914
210
210
  dmart/data_adapters/sql/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -476,15 +476,15 @@ dmart/utils/query_policies_helper.py,sha256=Bf5qriQJ8CpUqPaQg5cdvNrn-92l_jKxHwsv
476
476
  dmart/utils/regex.py,sha256=cv9b_l_e8tz42mKckeeyDgypKqh2e71E28co2iuEVxA,2286
477
477
  dmart/utils/repository.py,sha256=9L-IvQ0Js0SQ5OR-Rh0i2Wdu4H9H06r8eE84hfBIu7Q,18313
478
478
  dmart/utils/router_helper.py,sha256=Tgoq3oakejdEeyeVieTNk38JsPZ8x5RuR0kw2THc1mI,604
479
- dmart/utils/settings.py,sha256=TOlW_ZWYQ_KyelPWCDg30V-fa1jsgazlek8agAPgkQ0,6036
479
+ dmart/utils/settings.py,sha256=zCqwt3TDensl1xCdHomyog6nZnL4RfNICUA28shhOT0,7785
480
480
  dmart/utils/sms_notifier.py,sha256=04D6D_ldk3S9SojI7_381pqLc8v9lligeNHAysohz7w,550
481
481
  dmart/utils/social_sso.py,sha256=Dm1W6U9OwKbAeUwM-kwJBHFEoreeoN-s-RHdOZ1-cNg,2216
482
482
  dmart/utils/ticket_sys_utils.py,sha256=9QAlW2iiy8KyxQRBDj_WmzS5kKb0aYJmGwd4qzmGVqo,7005
483
483
  dmart/utils/web_notifier.py,sha256=QM87VVid2grC5lK3NdS1yzz0z1wXljr4GChJOeK86W4,843
484
484
  dmart/utils/templates/activation.html.j2,sha256=XAMKCdoqONoc4ZQucD0yV-Pg5DlHHASZrTVItNS-iBE,640
485
485
  dmart/utils/templates/reminder.html.j2,sha256=aoS8bTs56q4hjAZKsb0jV9c-PIURBELuBOpT_qPZNVU,639
486
- dmart-1.4.41.post35.dist-info/METADATA,sha256=1eB2ctYWV10q8p6rgXSD0TBEPwZxtXn0JdYbt7jGnJQ,839
487
- dmart-1.4.41.post35.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
488
- dmart-1.4.41.post35.dist-info/entry_points.txt,sha256=N832M4wG8d2GDw1xztKRVM3TnxpY2QDzvdFE8XaWaG8,43
489
- dmart-1.4.41.post35.dist-info/top_level.txt,sha256=zJo4qk9fUW0BGIR9f4DCfpxaXbvQXH9izIOom6JsyAo,6
490
- dmart-1.4.41.post35.dist-info/RECORD,,
486
+ dmart-1.4.41.post37.dist-info/METADATA,sha256=D6RpAeaCE4zAg0zQPI2wEIWbxN-psKLpk89wLYa60wA,839
487
+ dmart-1.4.41.post37.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
488
+ dmart-1.4.41.post37.dist-info/entry_points.txt,sha256=N832M4wG8d2GDw1xztKRVM3TnxpY2QDzvdFE8XaWaG8,43
489
+ dmart-1.4.41.post37.dist-info/top_level.txt,sha256=zJo4qk9fUW0BGIR9f4DCfpxaXbvQXH9izIOom6JsyAo,6
490
+ dmart-1.4.41.post37.dist-info/RECORD,,