Commit a1c3fd63 by ajil.k

added

parents
# Default ignored files
/shelf/
/workspace.xml
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="PyPep8NamingInspection" enabled="true" level="WEAK WARNING" enabled_by_default="true">
<option name="ignoredErrors">
<list>
<option value="N801" />
</list>
</option>
</inspection_tool>
<inspection_tool class="PyUnresolvedReferencesInspection" enabled="true" level="WARNING" enabled_by_default="true">
<option name="ignoredIdentifiers">
<list>
<option value="dict.mobile" />
<option value="dict.dob" />
<option value="dict.gender" />
<option value="dict.name" />
</list>
</option>
</inspection_tool>
</profile>
</component>
\ No newline at end of file
<component name="InspectionProjectProfileManager">
<settings>
<option name="USE_PROJECT_PROFILE" value="false" />
<version value="1.0" />
</settings>
</component>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9 (theater_management)" project-jdk-type="Python SDK" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/theater_management.iml" filepath="$PROJECT_DIR$/.idea/theater_management.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/venv" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
# importing libraries
import uvicorn
if __name__ == "__main__":
try:
uvicorn.run("scripts.services.api_call:app", port=8000, reload=True)
except Exception as e:
print("Error-", e)
from pydantic import BaseModel
# Model for fetching details from user
class ticket_booking(BaseModel):
mobile_no: int
preferred_class: str
no_of_tickets: int
seat_numbers: str
age: int
from scripts.database.postgresql.db_connection import db_connect
from scripts.database.postgresql.model import BookingDetails
def insert_data_into_db(details):
# add new booking details
try:
print(details)
new_booking = BookingDetails(mobile_no=details.mobile_no,
preferred_class=details.preferred_class,
no_of_tickets=details.no_of_tickets,
seat_numbers=details.seat_numbers,
age=details.age)
session = db_connect()
session.add(new_booking)
session.commit()
except Exception as e:
print(e)
from scripts.database.postgresql.model import Base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
def db_connect():
try:
engine = create_engine("postgresql://postgres:test@localhost/theater_db")
Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base.metadata.create_all(engine)
session = Session()
return session
except Exception as e:
print(e)
from datetime import date
from sqlalchemy import Column, Integer, String, Date, Boolean
from sqlalchemy.orm import declarative_base
Base = declarative_base()
# create BookingDetails class
class BookingDetails(Base):
__tablename__ = 'ticket_details'
booking_id = Column(Integer, primary_key=True)
mobile_no = Column(Integer)
preferred_class = Column(String)
no_of_tickets = Column(Integer)
seat_numbers = Column(String)
date_of_purchase = Column(Date, default=date.today())
age = Column(Integer)
status = Column(Boolean, default=False)
# importing libraries
from scripts.constants.schema import ticket_booking
from scripts.core.handlers.api_functions import insert_data_into_db
from fastapi import FastAPI, HTTPException
import paho.mqtt.client as mqtt
# Create FastAPI instance
app = FastAPI()
# Root
@app.get("/")
async def root():
return {"Message": "It's Working!"}
# Upload and Insert data from csv to database
@app.post("/read_data/")
def read_data():
insert_data_into_db()
return {"Message": "Data inserted from csv to database successfully!"}
#
# def on_connect(client, userdata, flags, rc):
# print("Connected with result code " + str(rc))
# client.subscribe("ticket_booking")
#
#
# def on_message(client, userdata, msg):
# print(msg.topic + " " + str(msg.payload))
#
#
# client = mqtt.Client()
# client.on_connect = on_connect
# client.on_message = on_message
#
# client.connect("192.168.0.220", 1883, 60)
#
#
# booked_seats = []
@app.post("/book_ticket/")
async def book_ticket(details: ticket_booking):
# if details.preferred_class not in ["gold", "silver"]:
# raise HTTPException(status_code=400, detail="Invalid class type")
#
# if len(details.seat_numbers) != details.no_of_tickets:
# raise HTTPException(status_code=400, detail="Number of seat numbers must match the number of tickets")
# seats = ""
# for seat_number in details.seat_numbers:
# seats += str(seat_number)
# if seat_number in booked_seats:
# raise HTTPException(status_code=400, detail=f"Seat number {seat_number} is already booked")
# booked_seats.append(seat_number)
#
# payload = f"{details.preferred_class} class ticket : booking: {details.no_of_tickets} tickets" \
# f"for seat numbers {details.seat_numbers} having telephone number {details.mobile_no} whose age is" \
# f" {details.age}",
# gold_payload = f"class_type :{details.preferred_class} ,seat_number :{details.seat_numbers} "
# silver_payload = f"class_type :{details.preferred_class} ,seat_number :{details.seat_numbers} "
# client.publish("ticket", str(payload))
# client.subscribe("ticket/#")
# print(seats)
try:
insert_data_into_db(details)
except Exception as e:
print("error ", e)
return {"message": "Ticket booking successful"}
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