diff --git a/core/Constants.py b/core/Constants.py index 5e8e9f2..7eaae50 100644 --- a/core/Constants.py +++ b/core/Constants.py @@ -8,6 +8,12 @@ class Constants: DB_VERSION_THIS_APP_WANTS = 1 + # Fallback for development (running outside AppImage) + fallback_non_appimage = os.path.dirname(os.path.abspath(__file__)) + + # appimage home + APPDIR_HOME: Final[str] = os.environ.get('APPDIR', fallback_non_appimage) + # ticketing group: TICKET_API_BASE_URL: Final[str] = os.environ.get( "TICKET_API_BASE_URL", "https://ticket.hydraveil.net" diff --git a/core/assets/yaml_mappings/locations.yaml b/core/assets/yaml_mappings/locations.yaml new file mode 100644 index 0000000..97ee248 --- /dev/null +++ b/core/assets/yaml_mappings/locations.yaml @@ -0,0 +1,54 @@ +fields: + - name: country_code + path: ['country', 'code'] + required: true + + - name: code # this is city code + path: ['code'] + required: true + + - name: id + path: ['id'] + + - name: country_name + path: ['country', 'name'] + + - name: name # this is CITY name + path: ['name'] + + - name: time_zone + path: ['time_zone', 'code'] + + - name: operator_id + path: ['operator_id'] + required: true + + - name: provider_name + path: ['provider', 'name'] + + - name: is_proxy_capable + path: ['is_proxy_capable'] + + - name: is_wireguard_capable + path: ['is_wireguard_capable'] + required: true + + - name: is_hysteria2_capable + path: ['is_hysteria2_capable'] + + - name: is_vless_capable + path: ['is_vless_capable'] + + +# original version: + # locations.append(( + # location['country']['code'], + # location['code'], + # location['id'], + # location['country']['name'], + # location['name'], + # location['time_zone']['code'], + # location['operator_id'], + # location['provider']['name'], + # location['is_proxy_capable'], + # location['is_wireguard_capable'])) diff --git a/core/assets/yaml_mappings/mapping_one.yaml b/core/assets/yaml_mappings/mapping_one.yaml new file mode 100644 index 0000000..903eaba --- /dev/null +++ b/core/assets/yaml_mappings/mapping_one.yaml @@ -0,0 +1,8 @@ +fields: + - name: group_a_code + path: ['group_a', 'code'] + - name: code + path: ['code'] + - name: id + path: ['id'] + required: true diff --git a/core/assets/yaml_mappings/operators.yaml b/core/assets/yaml_mappings/operators.yaml new file mode 100644 index 0000000..f7e9b8f --- /dev/null +++ b/core/assets/yaml_mappings/operators.yaml @@ -0,0 +1,19 @@ +fields: + - name: id + path: ['id'] + required: true + + - name: name + path: ['name'] + + - name: public_key # this is ed25519 + path: ['public_key'] + + - name: nostr_public_key + path: ['nostr_public_key'] + + - name: nostr_profile_reference + path: ['nostr_profile_reference'] + + - name: nostr_attestation_event_reference + path: ['nostr_attestation', 'event_reference'] diff --git a/core/services/helpers/manage_assets.py b/core/services/helpers/manage_assets.py new file mode 100644 index 0000000..f1d7052 --- /dev/null +++ b/core/services/helpers/manage_assets.py @@ -0,0 +1,20 @@ +import shutil +import os +from core.Constants import Constants + +def assets_folder_setup(): + initial_appimage_assets = f"{Constants.APPDIR_HOME}/assets" + current_assets_folder = f"{Constants.HV_DATA_HOME}/assets" + + print(f"initial_appimage_assets is {initial_appimage_assets}") + + # Step 1: Check if folder exists + if os.path.exists(current_assets_folder): + return True + else: + try: + # Step 2: Copy over from initial AppImage if not: + shutil.copytree(initial_appimage_assets, current_assets_folder) + return True + except: + return False diff --git a/core/services/sync/orm_methods/sync_one_orm.py b/core/services/sync/orm_methods/sync_one_orm.py index 3f83eb1..ed20b3e 100644 --- a/core/services/sync/orm_methods/sync_one_orm.py +++ b/core/services/sync/orm_methods/sync_one_orm.py @@ -35,9 +35,9 @@ def sync_one_orm_model( new_data = api_result.data # prep data (denormalize) - # parent_directory = get_parent_directory() + current_assets_folder = f"{Constants.HV_DATA_HOME}/assets" yaml_filename = f"{which_endpoint}.yaml" - full_yaml_path = f"assets/yaml_mappings/{yaml_filename}" + full_yaml_path = f"{current_assets_folder}/yaml_mappings/{yaml_filename}" denormalized_data = denormalize(new_data, str(full_yaml_path))