Commit 6ac94b87 by ajil.k

first

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 (ticketConsumerNew)" 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/ticketConsumerNew.iml" filepath="$PROJECT_DIR$/.idea/ticketConsumerNew.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
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
[redis]
redis_host=127.0.0.1
redis_port=6379
redis_db=3
[mqtt]
mqtt_broker=192.168.0.220
mqtt_port=1883
mqtt_time=60
from script.serviece.ticketUpdation import run
if __name__ == "__main__":
run()
import configparser
config = configparser.RawConfigParser()
config.read("conf/app.conf")
redis_host = config.get("redis", "redis_host")
redis_port = int(config.get("redis", "redis_port"))
redis_db = int(config.get("redis", "redis_db"))
mqtt_broker = config.get("mqtt", "mqtt_broker")
mqtt_port = int(config.get("mqtt", "mqtt_port"))
mqtt_time = int(config.get("mqtt", "mqtt_time"))
class MqttFunctions:
@staticmethod
def connection_msg(rc):
if rc == 0:
print("Connected to MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
from script.config.appconfig import mqtt_broker, mqtt_port
from script.core.handlers.connection_check import MqttFunctions
from paho.mqtt import client as mqtt_client
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
import json
from script.core.handlers.updatingSeats import cancelled_ticket, golden_update
def redis_operation(r1, msg):
# accepting payload
topic_map = {
"ticket2/cancel_all": ("gold_available_seats", "silver_available_seats", "show_cancelled"),
"ticket2/delete": {
"gold": ("gold_available_seats", "gold", "seats_golden"),
"silver": ("silver_available_seats", "silver", "seats_silver"),
},
"ticket2/gold": {
"gold": ("gold_available_seats", "gold", "seats_golden"),
"silver": ("silver_available_seats", "silver", "seats_silver"),
},
"ticket2/silver": {
"gold": ("gold_available_seats", "gold", "seats_golden"),
"silver": ("silver_available_seats", "silver", "seats_silver"),
}
}
topic = msg.topic
payload = json.loads(msg.payload.decode())
class_type, seats_booked = next(iter(payload.items()))
try:
print(f"{msg.payload.decode()}` topic `{msg.topic}` ")
seat_available, redis_key, action = topic_map[topic][class_type]
except KeyError:
print("Invalid topic or class type")
return
if topic == "ticket2/cancel_all":
r1.mset({seat_available: action, redis_key: action})
elif topic == "ticket2/delete":
cancelled_ticket(r1, seats_booked, redis_key, seat_available)
else:
golden_update(r1, seats_booked, redis_key, seat_available)
import math
import pickle
count = 0
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)
for sublist in seats_:
for i, number in enumerate(sublist):
if number in seats_booked:
count += 1
sublist[i] = 0
seat_count -= count
r1.set(seat_available, seat_count)
r1.set(redis_key, pickle.dumps(seats_))
print(seats_)
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 == "gold":
seat_count = 30
else:
seat_count = 25
for seat in seats_cancelled:
seats_[math.floor(seat / 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.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 on_message(client, userdata, msg):
# performing update on redis
redis_operation(r1, msg)
client.subscribe("ticket2/#")
client.on_message = on_message
def run():
try:
client = connect_mqtt()
subscribe(client)
client.loop_forever()
except KeyboardInterrupt:
client.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