Compare commits
3 Commits
main
...
ng-subscri
Author | SHA1 | Date | |
---|---|---|---|
74e86df7d2 | |||
|
f8934ebdfe | ||
62ece58a96 |
6
.gitignore
vendored
Normal file
6
.gitignore
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
venv
|
||||
laconic_testnet.egg-info
|
||||
__pycache__
|
||||
|
||||
*-deployment
|
||||
*-spec.yml
|
32
cli/README.md
Normal file
32
cli/README.md
Normal file
@ -0,0 +1,32 @@
|
||||
# cli
|
||||
|
||||
## Setup
|
||||
|
||||
* Run commands in repo root directory
|
||||
```bash
|
||||
python3 -m venv venv
|
||||
source ./venv/bin/activate
|
||||
```
|
||||
|
||||
* Install CLI in editable mode
|
||||
```bash
|
||||
pip install --editable .
|
||||
```
|
||||
|
||||
* Verify installation
|
||||
```bash
|
||||
laconic-testnet --help
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
laconic-testnet --onboarded-json path/to/onboarded-accounts.json --subscribers-csv path/to/subscribers.csv --output path/to/subscribed-onboarded-accounts.csv
|
||||
```
|
||||
|
||||
## Cleanup
|
||||
|
||||
Deactivate virtual environment
|
||||
```bash
|
||||
deactivate
|
||||
```
|
15
cli/cli.py
Normal file
15
cli/cli.py
Normal file
@ -0,0 +1,15 @@
|
||||
import click
|
||||
from .core import process_subscribers
|
||||
|
||||
@click.command()
|
||||
@click.option('--onboarded-json', required=True, type=click.Path(exists=True), help='Path to onboarded accounts JSON file.')
|
||||
@click.option('--subscribers-csv', required=True, type=click.Path(exists=True), help='Path to the subscribers CSV file.')
|
||||
@click.option('--output', required=True, type=click.Path(), help='Path to the output CSV file.')
|
||||
def main(onboarded_json, subscribers_csv, output):
|
||||
"""
|
||||
CLI tool to match subscriber data with participant data and generate a CSV.
|
||||
"""
|
||||
process_subscribers(onboarded_json, subscribers_csv, output)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
50
cli/core.py
Normal file
50
cli/core.py
Normal file
@ -0,0 +1,50 @@
|
||||
import csv
|
||||
import hashlib
|
||||
import json
|
||||
|
||||
def hash_subscriber_id(subscriber_id):
|
||||
return '0x' + hashlib.sha256(subscriber_id.encode()).hexdigest()
|
||||
|
||||
def process_subscribers(onboarded_json, subscribers_csv, output):
|
||||
# Load JSON data from the file
|
||||
with open(onboarded_json, 'r') as json_file:
|
||||
json_data = json.load(json_file)
|
||||
|
||||
# Create a dictionary mapping kyc_id to participant data
|
||||
kyc_map = {participant['kyc_id']: participant for participant in json_data['participants']}
|
||||
|
||||
# Load subscribers data from the CSV file and process it using map
|
||||
with open(subscribers_csv, 'r') as csv_file:
|
||||
csv_reader = csv.DictReader(csv_file)
|
||||
subscribers = list(csv_reader)
|
||||
|
||||
# Use map to process subscribers
|
||||
def process_subscriber(subscriber):
|
||||
hashed_subscriber_id = hash_subscriber_id(subscriber['subscriber_id'])
|
||||
participant = kyc_map.get(hashed_subscriber_id)
|
||||
|
||||
if participant:
|
||||
return {
|
||||
'subscriber_id': subscriber['subscriber_id'],
|
||||
'email': subscriber['email'],
|
||||
'cosmos_address': participant['cosmos_address'],
|
||||
'nitro_address': participant['nitro_address'],
|
||||
'role': participant['role'],
|
||||
'hashed_subscriber_id': participant['kyc_id'],
|
||||
'status': subscriber['status'],
|
||||
'premium': subscriber['premium?'],
|
||||
'created_at': subscriber['created_at']
|
||||
}
|
||||
return None
|
||||
|
||||
# Apply the map function and filter out None values
|
||||
output_data = list(filter(None, map(process_subscriber, subscribers)))
|
||||
|
||||
# Write the matched data to a new CSV file
|
||||
with open(output, 'w', newline='') as csv_file:
|
||||
fieldnames = ['subscriber_id', 'email', 'cosmos_address', 'nitro_address', 'role', 'hashed_subscriber_id', 'status', 'premium', 'created_at']
|
||||
csv_writer = csv.DictWriter(csv_file, fieldnames=fieldnames)
|
||||
csv_writer.writeheader()
|
||||
csv_writer.writerows(output_data)
|
||||
|
||||
print(f'Data has been written to {output}')
|
@ -99,7 +99,7 @@
|
||||
cat <<EOF > stage0-deployment/config.env
|
||||
# Set to true to enable adding participants functionality of the onboarding module
|
||||
ONBOARDING_ENABLED=true
|
||||
|
||||
|
||||
# A custom human readable name for this node
|
||||
MONIKER=LaconicStage0
|
||||
EOF
|
||||
@ -625,7 +625,7 @@
|
||||
```bash
|
||||
network:
|
||||
ports:
|
||||
laconic-console:
|
||||
console:
|
||||
- '127.0.0.1:4001:80'
|
||||
```
|
||||
|
||||
|
1
requirements.txt
Normal file
1
requirements.txt
Normal file
@ -0,0 +1 @@
|
||||
Click
|
15
setup.py
Normal file
15
setup.py
Normal file
@ -0,0 +1,15 @@
|
||||
from setuptools import setup, find_packages
|
||||
|
||||
setup(
|
||||
name="laconic-testnet",
|
||||
version="0.1.0",
|
||||
packages=find_packages(),
|
||||
install_requires=[
|
||||
"Click",
|
||||
],
|
||||
entry_points={
|
||||
'console_scripts': [
|
||||
'laconic-testnet = cli.cli:main',
|
||||
],
|
||||
},
|
||||
)
|
@ -277,7 +277,7 @@ laconic-so deployment --dir laconic-console-deployment start
|
||||
|
||||
```bash
|
||||
# Example
|
||||
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry bond create --type photon --quantity 1000000000000"
|
||||
laconic-so deployment --dir laconic-console-deployment exec cli "laconic registry bond create --type alnt --quantity 1000000000000"
|
||||
```
|
||||
|
||||
## Clean up
|
||||
|
Loading…
Reference in New Issue
Block a user