Commit 4085f920 by arjun.b

updated

parent a9a81c1e
......@@ -9,34 +9,6 @@ class Book_Ticket:
@staticmethod
def book_ticket(ticket):
try:
# gold_row = 10
# gold_seat_per_row = 30
# silver_row = 5
# silver_seat_per_row = 25
booking = []
r = redis.Redis(host='localhost', port=6379, db=3)
# Check the availability of seats in the preferred class
if ticket.pref_class == 'Gold':
total_rows = 10
total_seats_per_row = 30
key = 'gold_class_seats'
elif ticket.pref_class == 'Silver':
total_rows = 5
total_seats_per_row = 25
key = 'silver_class_seats'
# Get the current seat availability
seat_availability = r.get(key)
if seat_availability:
seat_availability = int(seat_availability)
else:
seat_availability = total_rows * total_seats_per_row
r.set(key, seat_availability)
# Check if there are enough seats available
if seat_availability >= ticket.no_of_ticket:
seat_numbers = []
for i in range(ticket.no_of_ticket):
seat_numbers.append(f'{ticket.pref_class}-{seat_availability - i}')
r.decr(key, ticket.no_of_ticket)
# save ticket details to database
save_ticket = Ticket(
......@@ -64,7 +36,6 @@ class BookingDetails:
session = db_connect()
records = session.query(Ticket).all()
dict_records = [record.__dict__ for record in records]
dict_records = dict_records[1:]
# Remove any keys from the dictionaries that start with an underscore
dict_records_clean = [
{
......@@ -74,8 +45,19 @@ class BookingDetails:
]
# Use pandas to convert the list of dictionaries to a DataFrame
df = pd.DataFrame(dict_records_clean)
df = df.drop(df.columns[0], axis=1)
# Use pandas to save the DataFrame to an Excel file
df.to_excel('scripts/external/output_file.xlsx', index=False)
df.to_excel('scripts/external/booking_details.xlsx', index=False)
except Exception as e:
logger.error(e)
@staticmethod
def clean_record(records):
dict_records = [record.__dict__ for record in records]
# Remove any keys from the dictionaries that start with an underscore
dict_records_clean = [
{
key: values for key, values in record.items() if not key.startswith('_')
}
for record in dict_records
]
return dict_records_clean
......@@ -7,9 +7,9 @@ from scripts.logging.logging import logger
def db_connect():
try:
engine = create_engine("postgresql://postgres:123@localhost/ticket")
Session=sessionmaker(autocommit=False, autoflush=False, bind=engine)
sessions = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base.metadata.create_all(engine)
session = Session()
session = sessions()
return session
except Exception as e:
logger.error(e)
......
from datetime import date
from sqlalchemy import Column, String, Integer, Boolean, Date
from datetime import datetime
from sqlalchemy import Column, String, Integer, Boolean, DateTime
from sqlalchemy.orm import declarative_base
Base = declarative_base()
......@@ -12,6 +12,6 @@ class Ticket(Base):
preferred_class = Column(String)
no_of_tickets = Column(Integer)
seat_no = Column(String)
date_of_purchase = Column(Date, default=date.today())
date_of_purchase = Column(DateTime, default=datetime.now())
age = Column(Integer)
deleted = Column(Boolean, default=False)
......@@ -144,3 +144,11 @@ DETAIL: Key (mobile_no)=(9988776655) already exists.
2023-02-14 14:13:54 - ERROR - [AnyIO worker thread:delete_row():29] - type object 'Ticket' has no attribute 'status'
2023-02-14 14:14:54 - ERROR - [AnyIO worker thread:delete_row():29] - type object 'Ticket' has no attribute 'status'
2023-02-14 14:16:47 - ERROR - [AnyIO worker thread:delete_row():29] - type object 'Ticket' has no attribute 'status'
2023-02-14 15:09:33 - ERROR - [AnyIO worker thread:get_details():81] - index 0 is out of bounds for axis 0 with size 0
2023-02-14 15:56:34 - ERROR - [AnyIO worker thread:book_ticket():51] - local variable 'key' referenced before assignment
2023-02-14 16:08:50 - ERROR - [AnyIO worker thread:book_ticket():51] - (psycopg2.errors.UniqueViolation) duplicate key value violates unique constraint "ticket_details_mobile_no_key"
DETAIL: Key (mobile_no)=(8989898989) already exists.
[SQL: INSERT INTO ticket_details (mobile_no, preferred_class, no_of_tickets, seat_no, date_of_purchase, age, deleted) VALUES (%(mobile_no)s, %(preferred_class)s, %(no_of_tickets)s, %(seat_no)s, %(date_of_purchase)s, %(age)s, %(deleted)s) RETURNING ticket_details.booking_id]
[parameters: {'mobile_no': 8989898989, 'preferred_class': 'Gold', 'no_of_tickets': 1, 'seat_no': '25', 'date_of_purchase': datetime.datetime(2023, 2, 14, 16, 8, 7, 834305), 'age': 21, 'deleted': False}]
(Background on this error at: https://sqlalche.me/e/20/gkpj)
......@@ -3,7 +3,7 @@ from fastapi import APIRouter
from scripts.constants.end_points import EndPoints
from scripts.core.handlers.book_ticket import Book_Ticket, BookingDetails
from scripts.core.handlers.delete_ticket import db_handler
from scripts.database.schema import Film_Ticket, soft_delete
from scripts.database.schema import Film_Ticket
router = APIRouter()
......@@ -22,7 +22,7 @@ def book_ticket(ticket: Film_Ticket):
@router.post(EndPoints.delete_a_ticket, tags=["delete a ticket"])
def delete_tickets(tid: int):
res = db_handler.delete_row(tid)
return res
return {f'tickets {res} deleted'}
@router.get(EndPoints.get_booking_details, tags=["get booking details"])
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment