Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
T
ticket_consumer
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
mohammed.shibili
ticket_consumer
Commits
e0af2c84
Commit
e0af2c84
authored
Feb 15, 2023
by
mohammed.shibili
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
updating done
parent
16d4da95
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
62 additions
and
79 deletions
+62
-79
.env
+4
-0
main.py
+1
-1
script/config/appconfig.py
+8
-0
script/const/constants.py
+15
-0
script/core/handlers/mqttconnection.py
+4
-4
script/core/handlers/operations.py
+7
-52
script/core/handlers/redis_connection.py
+5
-0
script/core/handlers/updatingSeats.py
+9
-9
script/service/ticketUpdation.py
+9
-13
No files found.
.env
0 → 100644
View file @
e0af2c84
topic = ticket2/#
show_cancelled = ticket2/cancel_all
ticket_cancelled = ticket2/delete
\ No newline at end of file
main.py
View file @
e0af2c84
from
script.servi
e
ce.ticketUpdation
import
run
from
script.service.ticketUpdation
import
run
if
__name__
==
"__main__"
:
run
()
script/config/appconfig.py
View file @
e0af2c84
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"
)
...
...
script/const/constants.py
0 → 100644
View file @
e0af2c84
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"
),
}
}
script/core/handlers/mqttconnection.py
View file @
e0af2c84
...
...
@@ -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
client
s
=
mqtt_client
.
Client
()
client
s
.
on_connect
=
on_connect
client
s
.
connect
(
mqtt_broker
,
mqtt_port
)
return
client
s
script/core/handlers/operations.py
View file @
e0af2c84
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
)
\ No newline at end of file
golden_update
(
r1
,
seats_booked
,
redis_key
,
seat_available
)
script/core/handlers/redis_connection.py
0 → 100644
View file @
e0af2c84
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
)
script/core/handlers/updatingSeats.py
View file @
e0af2c84
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
)
script/servi
e
ce/ticketUpdation.py
→
script/service/ticketUpdation.py
View file @
e0af2c84
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
(
client
s
:
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
)
client
s
.
subscribe
(
topic
)
client
s
.
on_message
=
on_message
def
run
():
try
:
client
=
connect_mqtt
()
subscribe
(
client
)
client
.
loop_forever
()
client
s
=
connect_mqtt
()
subscribe
(
client
s
)
client
s
.
loop_forever
()
except
KeyboardInterrupt
:
client
.
loop_stop
()
client
s
.
loop_stop
()
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment