cmtelecom status inbound provider added.
authorhefee
Sat, 27 Jul 2019 13:36:18 +0200
changeset 308 a891fdd0c1a9
parent 307 6acae4210716
child 309 7fa1d4713a4f
cmtelecom status inbound provider added.
iro/controller/cmtelecom.py
iro/iro.py
iro/main.py
iro/model/schema.py
iro/view/cmtelecom.py
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/controller/cmtelecom.py	Sat Jul 27 13:36:18 2019 +0200
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+
+from datetime import datetime
+import json
+from ..model import schema
+from ..model.dbdefer import dbdefer
+from twisted.python import log
+
+@dbdefer
+def addStatus(session, recipient, exID, status, data):
+    try:
+        status = int(status)
+    except ValueError:
+        log.msg("Ungültiger Status", status)
+        status = -1
+    _s = schema.Status(recipient=recipient,
+                           exID = exID,
+                           status = status,
+                           data = json.dumps(data),
+                           date = datetime.now(),
+                           sender = "cmtelecom"
+                           )
+    session.add(_s)
+    session.commit()
+    return _s
--- a/iro/iro.py	Sat Jul 27 13:34:22 2019 +0200
+++ b/iro/iro.py	Sat Jul 27 13:36:18 2019 +0200
@@ -28,7 +28,7 @@
 from sqlalchemy import create_engine, pool
 
 import config, install
-from .view import xmlrpc, jsonrpc, jsonresource
+from .view import xmlrpc, jsonrpc, jsonresource, cmtelecom
 from .model import setEngine, setPool
 from .controller.pool import startPool, dbPool
 
@@ -67,6 +67,7 @@
         raise Exception("offerlist is not up-to-date.\nPlease run iro-install --update")
 
     root = resource.Resource()
+    cmtelecom.appendResource(root)
     xmlrpc.appendResource(root)
     jsonrpc.appendResource(root)
     jsonresource.appendResource(root)
--- a/iro/main.py	Sat Jul 27 13:34:22 2019 +0200
+++ b/iro/main.py	Sat Jul 27 13:36:18 2019 +0200
@@ -27,7 +27,7 @@
 
 from .model import setEngine, setPool
 from .controller.pool import startPool, dbPool
-from .view import xmlrpc, jsonrpc, jsonresource
+from .view import xmlrpc, jsonrpc, jsonresource, cmtelecom
 from . import config
 
 def runReactor(reactor, engine, port, root):
@@ -56,6 +56,7 @@
 
 
     root = resource.Resource()
+    cmtelecom.appendResource(root)
     xmlrpc.appendResource(root)
     jsonrpc.appendResource(root)
     jsonresource.appendResource(root)
--- a/iro/model/schema.py	Sat Jul 27 13:34:22 2019 +0200
+++ b/iro/model/schema.py	Sat Jul 27 13:36:18 2019 +0200
@@ -158,6 +158,30 @@
     def __init__(self, **kwargs):
         Base.__init__(self,**kwargs)
 
+class Status(Base):
+    """ Status updates from external"""
+    __tablename__ = "status"
+
+    id = Column(Integer, Sequence('status_id_seq'), primary_key=True)
+    """primary key of the message"""
+
+    date = Column(DateTime)
+    """date of status message"""
+
+    recipient = Column(String(100))
+    """string representation of the recipient"""
+
+    exID = Column(String(100))
+    """external API id """
+
+    status = Column(Integer)
+    """ status of the message"""
+
+    sender = Column(String(100))
+    """ sender of the message """
+
+    data = Column(String(2550))
+    """ rest of the data """
 
 class Job(Base):
     """A complete Job.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/iro/view/cmtelecom.py	Sat Jul 27 13:36:18 2019 +0200
@@ -0,0 +1,26 @@
+
+from twisted.python import log
+from twisted.web import resource
+
+from ..controller import cmtelecom
+
+class CMTelecom(resource.Resource):
+    isLeaf = True
+    def render_GET(self, request):
+        args = request.args
+        cmtelecom.addStatus(recipient=args['GSM'][0], exID=args["REFERENCE"][0], status=args["STATUS"][0], data=args)
+
+        return "Nothing to see here."
+
+def appendResource(root):
+    """adding CMTelecom to root."""
+    root.putChild('cmtelecom', CMTelecom())
+
+if __name__ == '__main__':
+    from twisted.web import resource, server
+    from twisted.internet import reactor
+    
+    root = resource.Resource()
+    root = appendResource(root)
+    reactor.listenTCP(7080, server.Site(root))
+    reactor.run()