Commit e0af2c84 by mohammed.shibili

updating done

parent 16d4da95
topic = ticket2/#
show_cancelled = ticket2/cancel_all
ticket_cancelled = ticket2/delete
\ No newline at end of file
from script.serviece.ticketUpdation import run
from script.service.ticketUpdation import run
if __name__ == "__main__":
run()
import configparser
import os
from dotenv import load_dotenv
load_dotenv()
topic = os.getenv("topic")
show_cancelled = os.getenv("show_cancelled")
ticket_cancelled = os.getenv("ticket_cancelled")
config = configparser.RawConfigParser()
config.read("conf/app.conf")
......
topic_map = {
"ticket2/cancel_all": ("seats_golden", "seats_silver", "show_cancelled"),
"ticket2/delete": {
"gold": ("seats_golden", "available_seats_golden", "seats_golden"),
"silver": ("seats_silver", "available_seats_silver", "seats_silver"),
},
"ticket2/gold": {
"gold": ("seats_golden", "available_seats_golden", "seats_golden"),
"silver": ("seats_silver", "available_seats_silver", "seats_silver"),
},
"ticket2/silver": {
"gold": ("seats_golden", "available_seats_golden", "seats_golden"),
"silver": ("seats_silver", "available_seats_silver", "seats_silver"),
}
}
......@@ -7,7 +7,7 @@ def mqtt_connection():
def on_connect(client, userdata, flags, rc):
MqttFunctions().connection_msg(rc)
client = mqtt_client.Client()
client.on_connect = on_connect
client.connect(mqtt_broker, mqtt_port)
return client
clients = mqtt_client.Client()
clients.on_connect = on_connect
clients.connect(mqtt_broker, mqtt_port)
return clients
import json
from script.config.appconfig import ticket_cancelled, show_cancelled
from script.const.constants import topic_map
from script.core.handlers.redis_connection import r1
from script.core.handlers.updatingSeats import cancelled_ticket, golden_update
# def redis_operation(r1, msg):
# # accepting payload
# if msg.topic == "ticket2/cancel_all":
# r1.set("seats_golden", "show_cancelled")
# r1.set("seats_silver", "show_cancelled")
# else:
# print(f"{msg.payload.decode()}` topic `{msg.topic}` ")
# payload = json.loads(msg.payload.decode())
# seats_booked = payload[list(payload.keys())[0]]
# # update for deleting ticket
#
# if msg.topic == "ticket2/delete" and list(payload.keys())[0] == "gold":
# seat_available = "seats_golden"
# redis_key = "available_seats_golden"
# cancelled_ticket(r1, seats_booked, redis_key, seat_available)
# elif msg.topic == "ticket2/delete" and list(payload.keys())[0] == "silver":
# seat_available = "seats_silver"
# redis_key = "available_seats_silver"
# cancelled_ticket(r1, seats_booked, redis_key, seat_available)
# # update for golden class
# elif list(payload.keys())[0] == "gold":
# seat_available = "seats_golden"
# redis_key = "available_seats_golden"
# golden_update(r1, seats_booked, redis_key, seat_available)
# # update for silver class
# elif list(payload.keys())[0] == "silver":
# seat_available = "seats_silver"
# redis_key = "available_seats_silver"
# golden_update(r1, seats_booked, redis_key, seat_available)
# else:
# print("invalid class")
def redis_operation(r1, msg):
def redis_operation(msg):
# accepting payload
topic_map = {
"ticket2/cancel_all": ("seats_golden", "seats_silver", "show_cancelled"),
"ticket2/delete": {
"gold": ("seats_golden", "available_seats_golden", "seats_golden"),
"silver": ("seats_silver", "available_seats_silver", "seats_silver"),
},
"ticket2/gold": {
"gold": ("seats_golden", "available_seats_golden", "seats_golden"),
"silver": ("seats_silver", "available_seats_silver", "seats_silver"),
},
"ticket2/silver": {
"gold": ("seats_golden", "available_seats_golden", "seats_golden"),
"silver": ("seats_silver", "available_seats_silver", "seats_silver"),
}
}
topic = msg.topic
payload = json.loads(msg.payload.decode())
class_type, seats_booked = next(iter(payload.items()))
......@@ -62,9 +18,9 @@ def redis_operation(r1, msg):
print("Invalid topic or class type")
return
if topic == "ticket2/cancel_all":
if topic == show_cancelled:
r1.mset({seat_available: action, redis_key: action})
elif topic == "ticket2/delete":
elif topic == ticket_cancelled:
cancelled_ticket(r1, seats_booked, redis_key, seat_available)
else:
golden_update(r1, seats_booked, redis_key, seat_available)
import redis
from script.config.appconfig import redis_host, redis_port, redis_db
r1 = redis.Redis(host=redis_host, port=redis_port, db=redis_db)
import json
import math
import pickle
count = 0
......@@ -8,7 +9,7 @@ def golden_update(r1, seats_booked, redis_key, seat_available):
global count
seats_list = r1.get(redis_key)
seat_count = int(r1.get(seat_available).decode("utf-8"))
seats_ = pickle.loads(seats_list)
seats_ = json.loads(seats_list)
for sublist in seats_:
for i, number in enumerate(sublist):
if number in seats_booked:
......@@ -16,7 +17,7 @@ def golden_update(r1, seats_booked, redis_key, seat_available):
sublist[i] = 0
seat_count -= count
r1.set(seat_available, seat_count)
r1.set(redis_key, pickle.dumps(seats_))
r1.set(redis_key, json.dumps(seats_))
print(seats_)
......@@ -24,13 +25,12 @@ def cancelled_ticket(r1, seats_cancelled, redis_key, seat_available):
global count
seats_list = r1.get(redis_key)
avail_seat_count = int(r1.get(seat_available).decode("utf-8"))
seats_ = pickle.loads(seats_list)
if redis_key == "available_seats_golden":
seat_count = 30
else:
seat_count = 25
seats_ = json.loads(seats_list)
seat_count = 30 if redis_key == "available_seats_golden" else 25
for seat in seats_cancelled:
seats_[math.floor(seat / seat_count)][math.floor(seat % seat_count) - 1] = seat
# to avoid wrong updating of seat when mod is zero
seats = (seat - 1) if seat % seat_count == 0 else seat
seats_[math.floor(seats / seat_count)][math.floor(seat % seat_count) - 1] = seat
print(seats_)
avail_seat_count += len(seats_cancelled)
r1.set(seat_available, avail_seat_count)
import redis
from paho.mqtt import client as mqtt_client
from script.config.appconfig import redis_host, redis_port, redis_db
from script.config.appconfig import topic
from script.core.handlers.mqttconnection import mqtt_connection
from script.core.handlers.operations import redis_operation
# creating redis db
r1 = redis.Redis(host=redis_host, port=redis_port, db=redis_db)
def connect_mqtt():
# creating mqtt connection
return mqtt_connection()
def subscribe(client: mqtt_client):
def subscribe(clients: mqtt_client):
def on_message(client, userdata, msg):
# performing update on redis
redis_operation(r1, msg)
client.subscribe("ticket2/#")
client.on_message = on_message
redis_operation(msg)
clients.subscribe(topic)
clients.on_message = on_message
def run():
try:
client = connect_mqtt()
subscribe(client)
client.loop_forever()
clients = connect_mqtt()
subscribe(clients)
clients.loop_forever()
except KeyboardInterrupt:
client.loop_stop()
clients.loop_stop()
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