|
|
@ -27,11 +27,12 @@ class YwsdYateModel(YateModel):
|
|
|
|
@classmethod
|
|
|
|
@classmethod
|
|
|
|
def create(cls, diffsync, ids, attrs):
|
|
|
|
def create(cls, diffsync, ids, attrs):
|
|
|
|
with diffsync.engine.connect() as conn:
|
|
|
|
with diffsync.engine.connect() as conn:
|
|
|
|
conn.execute(
|
|
|
|
result = conn.execute(
|
|
|
|
Yate.table.insert().values(
|
|
|
|
Yate.table.insert().values(
|
|
|
|
guru3_identifier=ids["guru3_identifier"], **attrs
|
|
|
|
guru3_identifier=ids["guru3_identifier"], **attrs
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
attrs["yate_id"] = result.inserted_primary_key[0]
|
|
|
|
return super().create(diffsync, ids=ids, attrs=attrs)
|
|
|
|
return super().create(diffsync, ids=ids, attrs=attrs)
|
|
|
|
|
|
|
|
|
|
|
|
def update(self, attrs):
|
|
|
|
def update(self, attrs):
|
|
|
@ -84,7 +85,7 @@ class YwsdExtensionModel(ExtensionModel):
|
|
|
|
@classmethod
|
|
|
|
@classmethod
|
|
|
|
def create(cls, diffsync, ids, attrs):
|
|
|
|
def create(cls, diffsync, ids, attrs):
|
|
|
|
with diffsync.engine.connect() as conn:
|
|
|
|
with diffsync.engine.connect() as conn:
|
|
|
|
conn.execute(
|
|
|
|
result = conn.execute(
|
|
|
|
Extension.table.insert().values(
|
|
|
|
Extension.table.insert().values(
|
|
|
|
extension=ids["extension"],
|
|
|
|
extension=ids["extension"],
|
|
|
|
type=attrs["extension_type"],
|
|
|
|
type=attrs["extension_type"],
|
|
|
@ -98,6 +99,7 @@ class YwsdExtensionModel(ExtensionModel):
|
|
|
|
),
|
|
|
|
),
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
attrs["extension_id"] = result.inserted_primary_key[0]
|
|
|
|
return super().create(diffsync, ids=ids, attrs=attrs)
|
|
|
|
return super().create(diffsync, ids=ids, attrs=attrs)
|
|
|
|
|
|
|
|
|
|
|
|
def update(self, attrs):
|
|
|
|
def update(self, attrs):
|
|
|
@ -210,7 +212,7 @@ class YwsdForkRankModel(ForkRankModel):
|
|
|
|
@classmethod
|
|
|
|
@classmethod
|
|
|
|
def create(cls, diffsync, ids, attrs):
|
|
|
|
def create(cls, diffsync, ids, attrs):
|
|
|
|
with diffsync.engine.connect() as conn:
|
|
|
|
with diffsync.engine.connect() as conn:
|
|
|
|
conn.execute(
|
|
|
|
result = conn.execute(
|
|
|
|
ForkRank.table.insert().values(
|
|
|
|
ForkRank.table.insert().values(
|
|
|
|
extension_id=diffsync.get(
|
|
|
|
extension_id=diffsync.get(
|
|
|
|
"extension", ids["extension"]
|
|
|
|
"extension", ids["extension"]
|
|
|
@ -219,6 +221,7 @@ class YwsdForkRankModel(ForkRankModel):
|
|
|
|
**attrs,
|
|
|
|
**attrs,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
|
|
|
|
attrs["forkrank_id"] = result.inserted_primary_key[0]
|
|
|
|
return super().create(diffsync, ids=ids, attrs=attrs)
|
|
|
|
return super().create(diffsync, ids=ids, attrs=attrs)
|
|
|
|
|
|
|
|
|
|
|
|
def update(self, attrs):
|
|
|
|
def update(self, attrs):
|
|
|
@ -275,7 +278,7 @@ class YwsdForkRankMemberModel(ForkRankMemberModel):
|
|
|
|
conn.execute(
|
|
|
|
conn.execute(
|
|
|
|
ForkRank.member_table.update()
|
|
|
|
ForkRank.member_table.update()
|
|
|
|
.where(
|
|
|
|
.where(
|
|
|
|
_and(
|
|
|
|
sqlalchemy.and_(
|
|
|
|
ForkRank.member_table.c.forkrank_id
|
|
|
|
ForkRank.member_table.c.forkrank_id
|
|
|
|
== self.diffsync.get("forkrank", self.forkrank).forkrank_id,
|
|
|
|
== self.diffsync.get("forkrank", self.forkrank).forkrank_id,
|
|
|
|
ForkRank.member_table.c.extension_id
|
|
|
|
ForkRank.member_table.c.extension_id
|
|
|
@ -290,7 +293,7 @@ class YwsdForkRankMemberModel(ForkRankMemberModel):
|
|
|
|
with self.diffsync.engine.connect() as conn:
|
|
|
|
with self.diffsync.engine.connect() as conn:
|
|
|
|
conn.execute(
|
|
|
|
conn.execute(
|
|
|
|
ForkRank.member_table.delete().where(
|
|
|
|
ForkRank.member_table.delete().where(
|
|
|
|
_and(
|
|
|
|
sqlalchemy.and_(
|
|
|
|
ForkRank.member_table.c.forkrank_id
|
|
|
|
ForkRank.member_table.c.forkrank_id
|
|
|
|
== self.diffsync.get("forkrank", self.forkrank).forkrank_id,
|
|
|
|
== self.diffsync.get("forkrank", self.forkrank).forkrank_id,
|
|
|
|
ForkRank.member_table.c.extension_id
|
|
|
|
ForkRank.member_table.c.extension_id
|
|
|
@ -310,11 +313,15 @@ class BackendNerd(diffsync.DiffSync):
|
|
|
|
|
|
|
|
|
|
|
|
top_level = ["yate", "extension", "user", "forkrank", "forkrankmember"]
|
|
|
|
top_level = ["yate", "extension", "user", "forkrank", "forkrankmember"]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def __init__(self, fp, *args, **kwargs):
|
|
|
|
|
|
|
|
self.fp = fp
|
|
|
|
|
|
|
|
super().__init__(*args, **kwargs)
|
|
|
|
|
|
|
|
|
|
|
|
def load(self, data):
|
|
|
|
def load(self, data):
|
|
|
|
yate_dect = self.yate(
|
|
|
|
#yate_dect = self.yate(
|
|
|
|
guru3_identifier="dect", hostname="dect", voip_listener="local"
|
|
|
|
# guru3_identifier="dect", hostname="dect", voip_listener="local"
|
|
|
|
)
|
|
|
|
#)
|
|
|
|
self.add(yate_dect)
|
|
|
|
#self.add(yate_dect)
|
|
|
|
yate_sip = self.yate(
|
|
|
|
yate_sip = self.yate(
|
|
|
|
guru3_identifier="sip", hostname="sip", voip_listener="local"
|
|
|
|
guru3_identifier="sip", hostname="sip", voip_listener="local"
|
|
|
|
)
|
|
|
|
)
|
|
|
@ -339,6 +346,8 @@ class BackendNerd(diffsync.DiffSync):
|
|
|
|
active=True,
|
|
|
|
active=True,
|
|
|
|
)
|
|
|
|
)
|
|
|
|
self.add(frm)
|
|
|
|
self.add(frm)
|
|
|
|
|
|
|
|
elif value["type"] in ["temp"]:
|
|
|
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
|
|
extension = self.extension(
|
|
|
|
extension = self.extension(
|
|
|
|
extension=key,
|
|
|
|
extension=key,
|
|
|
@ -361,7 +370,7 @@ class BackendNerd(diffsync.DiffSync):
|
|
|
|
user = self.user(
|
|
|
|
user = self.user(
|
|
|
|
username=key,
|
|
|
|
username=key,
|
|
|
|
displayname=value["name"],
|
|
|
|
displayname=value["name"],
|
|
|
|
password=value.get("sip_password", key),
|
|
|
|
password=value.get("sip_password", self.fp._dect.get_sip_password_for_number(key)),
|
|
|
|
user_type=user_type[value["type"]],
|
|
|
|
user_type=user_type[value["type"]],
|
|
|
|
trunk=value["trunk"],
|
|
|
|
trunk=value["trunk"],
|
|
|
|
static_target=value.get("static_target", ""),
|
|
|
|
static_target=value.get("static_target", ""),
|
|
|
@ -473,8 +482,8 @@ class Routing:
|
|
|
|
|
|
|
|
|
|
|
|
def run(self):
|
|
|
|
def run(self):
|
|
|
|
while True:
|
|
|
|
while True:
|
|
|
|
msg = self.fp.queues["dect"].get()
|
|
|
|
msg = self.fp.queues["routing"].get()
|
|
|
|
self.fp.queues["dect"].task_done()
|
|
|
|
self.fp.queues["routing"].task_done()
|
|
|
|
|
|
|
|
|
|
|
|
if msg.get("type") == "stop":
|
|
|
|
if msg.get("type") == "stop":
|
|
|
|
break
|
|
|
|
break
|
|
|
@ -482,8 +491,10 @@ class Routing:
|
|
|
|
|
|
|
|
|
|
|
|
logger.info("syncing")
|
|
|
|
logger.info("syncing")
|
|
|
|
|
|
|
|
|
|
|
|
state_fieldpoc = BackendNerd()
|
|
|
|
state_fieldpoc = BackendNerd(self.fp)
|
|
|
|
state_fieldpoc.load(self.fp.extensions._c)
|
|
|
|
extensions = self.fp.extensions._c.copy()
|
|
|
|
|
|
|
|
extensions['extensions'].update(self.fp.temp_extensions)
|
|
|
|
|
|
|
|
state_fieldpoc.load(extensions)
|
|
|
|
state_yate = BackendYwsd()
|
|
|
|
state_yate = BackendYwsd()
|
|
|
|
state_yate.load("postgresql+psycopg2://{}:{}@{}/{}".format(
|
|
|
|
state_yate.load("postgresql+psycopg2://{}:{}@{}/{}".format(
|
|
|
|
self.fp.config.database.username,
|
|
|
|
self.fp.config.database.username,
|
|
|
|