https and ssl integration on the backend, frontend and started integration of logistics app as a separate frontend
This commit is contained in:
@@ -1 +1,2 @@
|
||||
from .data import contacts, return_addresses, dewars, proposals, shipments, pucks, samples, dewar_types, serial_numbers
|
||||
from .slots_data import slots
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
from app.models import ContactPerson, Address, Dewar, Proposal, Shipment, Puck, Sample, DewarType, DewarSerialNumber
|
||||
from app.models import ContactPerson, Address, Dewar, Proposal, Shipment, Puck, Sample, DewarType, DewarSerialNumber, Slot
|
||||
from datetime import datetime
|
||||
import random
|
||||
import uuid
|
||||
import time
|
||||
import hashlib
|
||||
|
||||
|
||||
dewar_types = [
|
||||
@@ -44,8 +45,14 @@ return_addresses = [
|
||||
]
|
||||
|
||||
# Utilize a function to generate unique IDs
|
||||
def generate_unique_id():
|
||||
return str(uuid.uuid4())
|
||||
def generate_unique_id(length=16):
|
||||
base_string = f"{time.time()}{random.randint(0, 10 ** 6)}"
|
||||
hash_object = hashlib.sha256(base_string.encode())
|
||||
hash_digest = hash_object.hexdigest()
|
||||
short_unique_id = ''.join(random.choices(hash_digest, k=length))
|
||||
return short_unique_id
|
||||
|
||||
|
||||
|
||||
# Define dewars with unique IDs
|
||||
dewars = [
|
||||
@@ -54,20 +61,20 @@ dewars = [
|
||||
dewar_serial_number_id=2, tracking_number='TRACK123',
|
||||
return_address_id=1, contact_person_id=1, status='Ready for Shipping',
|
||||
ready_date=datetime.strptime('2023-09-30', '%Y-%m-%d'), shipping_date=None, arrival_date=None,
|
||||
returning_date=None, qrcode=generate_unique_id()
|
||||
returning_date=None, unique_id=generate_unique_id()
|
||||
),
|
||||
Dewar(
|
||||
id=2, dewar_name='Dewar Two', dewar_type_id=3,
|
||||
dewar_serial_number_id=1, tracking_number='TRACK124',
|
||||
return_address_id=2, contact_person_id=2, status='In Preparation',
|
||||
ready_date=None, shipping_date=None, arrival_date=None, returning_date=None, qrcode=generate_unique_id()
|
||||
ready_date=None, shipping_date=None, arrival_date=None, returning_date=None, unique_id=generate_unique_id()
|
||||
),
|
||||
Dewar(
|
||||
id=3, dewar_name='Dewar Three', dewar_type_id=2,
|
||||
dewar_serial_number_id=3, tracking_number='TRACK125',
|
||||
return_address_id=1, contact_person_id=3, status='Not Shipped',
|
||||
ready_date=datetime.strptime('2024-01-01', '%Y-%m-%d'), shipping_date=None, arrival_date=None,
|
||||
returning_date=None, qrcode=''
|
||||
returning_date=None, unique_id=None
|
||||
),
|
||||
Dewar(
|
||||
id=4, dewar_name='Dewar Four', dewar_type_id=2,
|
||||
@@ -75,7 +82,7 @@ dewars = [
|
||||
return_address_id=1, contact_person_id=3, status='Delayed',
|
||||
ready_date=datetime.strptime('2024-01-01', '%Y-%m-%d'),
|
||||
shipping_date=datetime.strptime('2024-01-02', '%Y-%m-%d'),
|
||||
arrival_date=None, returning_date=None, qrcode=''
|
||||
arrival_date=None, returning_date=None, unique_id=None
|
||||
),
|
||||
Dewar(
|
||||
id=5, dewar_name='Dewar Five', dewar_type_id=1,
|
||||
@@ -83,7 +90,7 @@ dewars = [
|
||||
return_address_id=1, contact_person_id=3, status='Returned',
|
||||
arrival_date=datetime.strptime('2024-01-03', '%Y-%m-%d'),
|
||||
returning_date=datetime.strptime('2024-01-07', '%Y-%m-%d'),
|
||||
qrcode=''
|
||||
unique_id=None
|
||||
),
|
||||
]
|
||||
|
||||
|
||||
36
backend/app/data/slots_data.py
Normal file
36
backend/app/data/slots_data.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from datetime import datetime, timedelta
|
||||
from app.models import Slot
|
||||
|
||||
slotQRCodes = [
|
||||
"A1-X06SA", "A2-X06SA", "A3-X06SA", "A4-X06SA", "A5-X06SA",
|
||||
"B1-X06SA", "B2-X06SA", "B3-X06SA", "B4-X06SA", "B5-X06SA",
|
||||
"C1-X06SA", "C2-X06SA", "C3-X06SA", "C4-X06SA", "C5-X06SA",
|
||||
"D1-X06SA", "D2-X06SA", "D3-X06SA", "D4-X06SA", "D5-X06SA",
|
||||
"A1-X10SA", "A2-X10SA", "A3-X10SA", "A4-X10SA", "A5-X10SA",
|
||||
"B1-X10SA", "B2-X10SA", "B3-X10SA", "B4-X10SA", "B5-X10SA",
|
||||
"C1-X10SA", "C2-X10SA", "C3-X10SA", "C4-X10SA", "C5-X10SA",
|
||||
"D1-X10SA", "D2-X10SA", "D3-X10SA", "D4-X10SA", "D5-X10SA",
|
||||
"NB1", "NB2", "NB3", "NB4", "NB5", "NB6",
|
||||
"X10SA-beamline", "X06SA-beamline", "X06DA-beamline",
|
||||
"X10SA-outgoing", "X06-outgoing"
|
||||
]
|
||||
|
||||
def timedelta_to_str(td: timedelta) -> str:
|
||||
days, seconds = td.days, td.seconds
|
||||
hours = days * 24 + seconds // 3600
|
||||
minutes = (seconds % 3600) // 60
|
||||
return f'PT{hours}H{minutes}M'
|
||||
|
||||
slots = [
|
||||
Slot(
|
||||
id=str(i + 1), # Convert id to string to match your schema
|
||||
qr_code=qrcode,
|
||||
label=qrcode.split('-')[0],
|
||||
qr_base=qrcode.split('-')[1] if '-' in qrcode else '',
|
||||
occupied=False,
|
||||
needs_refill=False,
|
||||
last_refill=datetime.utcnow(),
|
||||
time_until_refill=timedelta_to_str(timedelta(hours=24)) # Serialize timedelta to ISO 8601 string
|
||||
)
|
||||
for i, qrcode in enumerate(slotQRCodes)
|
||||
]
|
||||
Reference in New Issue
Block a user