Commit 4085f920 by arjun.b

updated

parent a9a81c1e
...@@ -9,34 +9,6 @@ class Book_Ticket: ...@@ -9,34 +9,6 @@ class Book_Ticket:
@staticmethod @staticmethod
def book_ticket(ticket): def book_ticket(ticket):
try: 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 details to database
save_ticket = Ticket( save_ticket = Ticket(
...@@ -64,7 +36,6 @@ class BookingDetails: ...@@ -64,7 +36,6 @@ class BookingDetails:
session = db_connect() session = db_connect()
records = session.query(Ticket).all() records = session.query(Ticket).all()
dict_records = [record.__dict__ for record in records] dict_records = [record.__dict__ for record in records]
dict_records = dict_records[1:]
# Remove any keys from the dictionaries that start with an underscore # Remove any keys from the dictionaries that start with an underscore
dict_records_clean = [ dict_records_clean = [
{ {
...@@ -74,8 +45,19 @@ class BookingDetails: ...@@ -74,8 +45,19 @@ class BookingDetails:
] ]
# Use pandas to convert the list of dictionaries to a DataFrame # Use pandas to convert the list of dictionaries to a DataFrame
df = pd.DataFrame(dict_records_clean) df = pd.DataFrame(dict_records_clean)
df = df.drop(df.columns[0], axis=1)
# Use pandas to save the DataFrame to an Excel file # 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: except Exception as e:
logger.error(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 ...@@ -7,9 +7,9 @@ from scripts.logging.logging import logger
def db_connect(): def db_connect():
try: try:
engine = create_engine("postgresql://postgres:123@localhost/ticket") 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) Base.metadata.create_all(engine)
session = Session() session = sessions()
return session return session
except Exception as e: except Exception as e:
logger.error(e) logger.error(e)
......
from datetime import date from datetime import datetime
from sqlalchemy import Column, String, Integer, Boolean, Date from sqlalchemy import Column, String, Integer, Boolean, DateTime
from sqlalchemy.orm import declarative_base from sqlalchemy.orm import declarative_base
Base = declarative_base() Base = declarative_base()
...@@ -12,6 +12,6 @@ class Ticket(Base): ...@@ -12,6 +12,6 @@ class Ticket(Base):
preferred_class = Column(String) preferred_class = Column(String)
no_of_tickets = Column(Integer) no_of_tickets = Column(Integer)
seat_no = Column(String) seat_no = Column(String)
date_of_purchase = Column(Date, default=date.today()) date_of_purchase = Column(DateTime, default=datetime.now())
age = Column(Integer) age = Column(Integer)
deleted = Column(Boolean, default=False) deleted = Column(Boolean, default=False)
...@@ -144,3 +144,11 @@ DETAIL: Key (mobile_no)=(9988776655) already exists. ...@@ -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: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: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 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 ...@@ -3,7 +3,7 @@ from fastapi import APIRouter
from scripts.constants.end_points import EndPoints from scripts.constants.end_points import EndPoints
from scripts.core.handlers.book_ticket import Book_Ticket, BookingDetails from scripts.core.handlers.book_ticket import Book_Ticket, BookingDetails
from scripts.core.handlers.delete_ticket import db_handler 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() router = APIRouter()
...@@ -22,7 +22,7 @@ def book_ticket(ticket: Film_Ticket): ...@@ -22,7 +22,7 @@ def book_ticket(ticket: Film_Ticket):
@router.post(EndPoints.delete_a_ticket, tags=["delete a ticket"]) @router.post(EndPoints.delete_a_ticket, tags=["delete a ticket"])
def delete_tickets(tid: int): def delete_tickets(tid: int):
res = db_handler.delete_row(tid) res = db_handler.delete_row(tid)
return res return {f'tickets {res} deleted'}
@router.get(EndPoints.get_booking_details, tags=["get booking details"]) @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