Skip to content

Commit c69b727

Browse files
committed
[IMP] Add a demo example
1 parent bd18467 commit c69b727

File tree

4 files changed

+110
-0
lines changed

4 files changed

+110
-0
lines changed

demo/file_reader/launcher.py

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import os
2+
import logging.config
3+
from ootdemo import DemoOot
4+
5+
path = os.path.dirname(os.path.realpath(__file__))
6+
7+
log_folder = path + "/log"
8+
9+
if not os.path.isdir(log_folder):
10+
os.mkdir(log_folder)
11+
12+
logging.config.fileConfig(path + "/logging.conf")
13+
14+
data_folder = path + "/data"
15+
16+
if not os.path.isdir(data_folder):
17+
os.mkdir(data_folder)
18+
19+
DemoOot(data_folder + "/data.json", data_folder + "/read").run()

demo/file_reader/logging.conf

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
[loggers]
2+
keys=root,oot,ootdemo
3+
4+
[handlers]
5+
keys=consoleHandler
6+
7+
[formatters]
8+
keys=consoleFormatter
9+
10+
[logger_root]
11+
level=INFO
12+
handlers=consoleHandler
13+
14+
[logger_oot]
15+
level=DEBUG
16+
handlers=consoleHandler
17+
qualname=oot
18+
propagate=0
19+
20+
[logger_ootdemo]
21+
level=DEBUG
22+
handlers=consoleHandler
23+
qualname=ootdemo
24+
propagate=0
25+
26+
[handler_consoleHandler]
27+
class=StreamHandler
28+
level=DEBUG
29+
formatter=consoleFormatter
30+
args=(sys.stdout,)
31+
32+
[formatter_consoleFormatter]
33+
format=%(levelname)s: %(message)s
34+
datefmt=
35+

demo/file_reader/ootdemo/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from .ootdemo import DemoOot

demo/file_reader/ootdemo/ootdemo.py

+55
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
from oot import OotAmqp, api, Field
2+
import os
3+
import logging
4+
import time
5+
6+
_logger = logging.getLogger(__name__)
7+
8+
9+
class FileReader:
10+
def __init__(self, file_path, delay=15):
11+
self.file_path = file_path
12+
self.delay = delay
13+
14+
def scan(self):
15+
while True:
16+
if not os.path.exists(self.file_path):
17+
time.sleep(0.1)
18+
continue
19+
if os.path.getmtime(self.file_path) > time.time() - self.delay:
20+
time.sleep(0.1)
21+
continue
22+
with open(self.file_path, "r") as f:
23+
data = f.read()
24+
os.remove(self.file_path)
25+
return data
26+
27+
28+
class DemoOot(OotAmqp):
29+
"""We are using AMQP as it allows to define some extra configuration"""
30+
template = "demo_template"
31+
# Template to be used on odoo
32+
oot_input = "demo_input"
33+
_ignore_access_point = True
34+
# Input to be used on odoo
35+
36+
# Now we define the configuration fields
37+
admin_id = Field(name="Admin key", required=True)
38+
39+
def __init__(self, connection, file_path):
40+
super(DemoOot, self).__init__(connection)
41+
self.reader = FileReader(file_path)
42+
43+
@api.oot
44+
def get_data_mfrc522(self, **kwargs):
45+
"""We will return the card if a card is readed. Otherwise, we will wait"""
46+
time.sleep(5.0)
47+
while True:
48+
uid = self.reader.scan()
49+
if uid:
50+
_logger.info("Sending %s" % uid)
51+
return uid
52+
53+
def process_result(self, key, result, **kwargs):
54+
_logger.info("For %s, we received the following result: %s" % (key, result))
55+
return super(DemoOot, self).process_result(key, result, **kwargs)

0 commit comments

Comments
 (0)