Skip to content

Commit

Permalink
Merge pull request #965 from tarasfrompir/patch-7
Browse files Browse the repository at this point in the history
Update python
  • Loading branch information
sergejey authored Jun 21, 2021
2 parents f541b33 + 5fd63f1 commit 853f032
Show file tree
Hide file tree
Showing 12 changed files with 84 additions and 159 deletions.
4 changes: 2 additions & 2 deletions lib/caching.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ function clearCacheData($prefix='') {
}
return;
}
if(!prefix)SQLTruncateTable('cached_values');
if(!$prefix)SQLTruncateTable('cached_values');
else SQLExec("delete from cached_values where KEYWORD like '$prefix%'");
}

Expand Down Expand Up @@ -112,7 +112,7 @@ function checkFromCache($key)

$rec = SQLSelectOne("SELECT * FROM cached_values WHERE KEYWORD = '" . DBSafe($key) . "'");

if ($rec['KEYWORD']) {
if (isset($rec['KEYWORD'])) {
return $rec['DATAVALUE'];
} else {
return false;
Expand Down
2 changes: 1 addition & 1 deletion lib/db.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ private function __clone() {

}

private function __sleep() {
public function __sleep() {

}

Expand Down
4 changes: 2 additions & 2 deletions lib/module.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -524,7 +524,7 @@ public function dbInstall($data)
}
}

if ($to_optimize[0]) {
if (isset($to_optimize[0])) {
foreach ($to_optimize as $table) {
SQLExec("OPTIMIZE TABLE " . $table . ";");
}
Expand All @@ -541,7 +541,7 @@ public function dbInstall($data)
$queryCnt = count($query) - 1;

for ($i = 0; $i < $queryCnt; $i++) {
if ($query[$i]{0} != "#") {
if ($query[$i][0] != "#") {
SQLExec($query[$i]);
$mdf[] = "#" . $query[$i];
} else {
Expand Down
39 changes: 30 additions & 9 deletions lib/python.inc.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@

function python_run_code($code, $params = '', $object = '') {
//DebMes("Running python code: ".$code,'python');
$python_path = '';
if (defined('PYTHON_PATH')) {
$python_path = PYTHON_PATH;
} elseif (substr(php_uname(), 0, 7) != "Windows") {
$python_path = 'python';
} else {
DebMes("Chek config.php file for define path to php ");
return false;
}
if ($python_path!='') {
$result_code = python_make_full_code($code, $object);
Expand Down Expand Up @@ -87,7 +87,7 @@ function python_make_full_code($code, $object = '') {
}

$class_code.=<<<CL
class mjdThisObject(mjdm.mjdObject):
class mjdThisObject(mjdObject):
def thisMethod(self, params):
$method_code
return 1;
Expand All @@ -105,14 +105,35 @@ class mjdThisObject(mjdm.mjdObject):
import sys
import re
import json
import six
import importlib
import MySQLdb as mdb
import datetime
import time
from typing import List, Any
from datetime import datetime as DT, timedelta
from mjd_constants import *
try:
import urllib.request as urllib2
from urllib.parse import quote
from urllib.parse import urlencode
except ImportError:
import urllib2
from urllib import urlencode
sys.path.append(os.path.abspath("$lib_path"))
import mjdm
if (sys.argv[1]):
params=json.loads(sys.argv[1])
from events import *
from general import *
from historys import *
from job import *
from mjdm import *
from timer import *
if (sys.argv[1:]):
params=sys.argv[1:]
else:
params = {}
params = []
$code
FF;
Expand Down Expand Up @@ -151,4 +172,4 @@ function isItPythonCode($code) {
if (preg_match('/;\\n/ui',$code)) return false;
if (preg_match('/\$\w+.+;/ui',$code)) return false;
return true;
}
}
13 changes: 6 additions & 7 deletions lib/python/events.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,22 +6,21 @@
import datetime
import time
from typing import List, Any
import mjdm as mj

def registerEvent(eventName, details, expire_in):
'''
Принимает значения в следующем виде
mjdm.registerEvent("adminEvent4", "LOL" ,20)
registerEvent("adminEvent4", "LOL" ,20)
либо с установкой значения объекту
mjdm.registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","prop":"TEST","value":"22"}, 20)
registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","prop":"TEST","value":"22"}, 20)
либо с запуском метода объекта с параметрами
mjdm.registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","meth":"checkBt","param":"{"status":"0", 'brightness':"5",'color':'#fffff2' "}, 20)
registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","meth":"checkBt","param":"{"status":"0", 'brightness':"5",'color':'#fffff2' "}, 20)
либо с запуском метода объекта без паметров
mjdm.registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","meth":"checkBt","param":"{}"}, 20)
registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","meth":"checkBt","param":"{}"}, 20)
либо с установкой значения объекту и запуском метода для объекта
mjdm.registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","prop":"TEST","value":"","meth":"checkBt","param":"{}"}, 20)
registerEvent("adminEvent4", {"rec":"","obj":"Zokalo2","prop":"TEST","value":"","meth":"checkBt","param":"{}"}, 20)
mjdm.registerEvent("Имя Эвента строка STR ", Детали (строка, целое значение, словарь) , время жизни в днях целое значение INT)
registerEvent("Имя Эвента строка STR ", Детали (строка, целое значение, словарь) , время жизни в днях целое значение INT)
Запуск методов и установки значений свойств пока не работает так как надо код дорабатывается
obj - имя объекта
Expand Down
16 changes: 8 additions & 8 deletions lib/python/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ def callAPI(api_url, method="GET", params={}):
def say(ph, level=0, member_id=0, source=1):
'''
Работает аналогично функции saySafe на пхп, принимает значения в следующем виде
mjdm.say("Привет мажордомо от Питона",0)
mjdm.say(Тип параметра строка STR "", Тип параметра целое число INT, Тип параметра целое число INT)
say("Привет мажордомо от Питона",0)
say(Тип параметра строка STR "", Тип параметра целое число INT, Тип параметра целое число INT)
'''
ph = {"ph": ph}
data = urlencode(ph).encode('utf-8')
Expand All @@ -58,11 +58,11 @@ def say(ph, level=0, member_id=0, source=1):
def runScript(script_name, params):
'''
Принимает значения в следующем виде
mjdm.runScript ('action',{"status":"0", 'brightness':"5",'color':'#fffff2' }),
runScript ('action',{"status":"0", 'brightness':"5",'color':'#fffff2' }),
либо
mjdm.runScript ('action')
runScript ('action')
mjdm.runScript (Имя скрипта строка STR "", Тип значения Словарь все значения внутри словаря заполняются как строки STR ""{Праметр1:Значение 1, праметр2:значение2, и т.д)
runScript (Имя скрипта строка STR "", Тип значения Словарь все значения внутри словаря заполняются как строки STR ""{Праметр1:Значение 1, праметр2:значение2, и т.д)
'''
callAPI("/api/script/" + script_name, "GET", params)
return 1
Expand All @@ -71,11 +71,11 @@ def runScript(script_name, params):
def callMethod(method_name, params):
'''
Принимает значения в следующем виде
mjdm.callMethod('XiRgbgt02.action',{"status":"0", 'brightness':"5",'color':'#fffff2' }),
callMethod('XiRgbgt02.action',{"status":"0", 'brightness':"5",'color':'#fffff2' }),
либо
mjdm.callMethod('XiRelay10.turnOff')
callMethod('XiRelay10.turnOff')
mjdm.callMethod (Имя метода строка STR "", Тип параметра Словарь все значения внутри словаря заполняются как строки STR ""{Праметр1:Значение 1, праметр2:значение2, и т.д)
callMethod (Имя метода строка STR "", Тип параметра Словарь все значения внутри словаря заполняются как строки STR ""{Праметр1:Значение 1, праметр2:значение2, и т.д)
'''
callAPI("/api/method/" + method_name, "GET", params)
return 1
Expand Down
107 changes: 3 additions & 104 deletions lib/python/mjdm.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,107 +3,6 @@
import re
import sys
import six
import events as ev
import job
import historys as hist
import timers as tm
import general as gn


def getURL(url):

return gn.getURL(url)


def callAPI(api_url, method="GET", params={}):

return gn.callAPI(api_url, method="GET", params={})


def say(ph, level=0, member_id=0, source=1):
gn.say(ph, level=0, member_id=0, source=1)
return 1


def runScript(script_name, params={}):
gn.runScript(script_name, params)
return 1


def callMethod(method_name, params={}):
gn.callMethod(method_name, params)
return 1


def setGlobal(property, value):
gn.setGlobal(property, value)
return 1


def sg(property, value):
result = gn.setGlobal(property, value)
return result


def getGlobal(property):
return gn.getGlobal(property)


def gg(property):
result = gn.getGlobal(property)
return result


def getObjectsByClass(class_name):
return gn.getObjectsByClass(class_name)


def registerEvent(eventName, details, expire_in):
ev.registerEvent(eventName, details, expire_in)
return 1


def registeredEventTime(eventName):
return ev.registeredEventTime(eventName)



def registeredEventDetails(eventName):
return ev.registeredEventDetails(eventName)


def timeConvert(tm):
return tm.timeConvert(tm)


def timeBetween(tm1, tm2):
return tm.timeBetween(tm1, tm2)


def clearScheduledJob(title):
job.clearScheduledJob(title)
return


def addScheduledJob(title, commands, datetime, expire=1800):
return job.addScheduledJob(title, commands, datetime, expire=1800)

def setTimeOut(title, commands, timeout):
return job.setTimeOut(title, commands, timeout)


def getHistory(obj_prop, n_value):
return hist.getHistory(obj_prop, n_value)


def getHistoryexec(obj_prop, n_value, param):
return hist.getHistoryexec(obj_prop, n_value, param)

def RoomDevices(room):
return gn.RoomDevices(room)

def getObjects(name,info):
return gn.getObjects(name,info)

class mjdObject:
object_name = ""
Expand All @@ -112,13 +11,13 @@ def __init__(self, object_name):
self.object_name = object_name

def setProperty(self, property_name, value):
gn.setGlobal(self.object_name + "." + property_name, value)
setGlobal(self.object_name + "." + property_name, value)
return 1

def getProperty(self, property_name):
result = gn.getGlobal(self.object_name + "." + property_name)
result = getGlobal(self.object_name + "." + property_name)
return result

def callMethod(self, method_name, params={}):
result = gn.callMethod(self.object_name + "." + method_name, params)
result = callMethod(self.object_name + "." + method_name, params)
return result
6 changes: 4 additions & 2 deletions lib/session.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,8 +73,10 @@ public function __construct($name)

$this->started = 1;

Define("SESSION_ID", session_name() . "=" . session_id());
Define("SID", session_name() . "=" . session_id());
if (!defined('SID')) {
Define("SESSION_ID", session_name() . "=" . session_id());
Define("SID", session_name() . "=" . session_id());
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion lib/sqlFunctions.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ function SQLExec($query,$ignore_errors = false)
if (($query[0] == "#") || ($query == "")) return;
if (preg_match('/^ALTER TABLE/',$query)) {
global $alter_executed;
if ($alter_executed[$query]) return false;
if (isset($alter_executed[$query])) return false;
$alter_executed[$query] = 1;
}
global $db;
Expand Down
4 changes: 2 additions & 2 deletions load_settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@
Define('DISABLE_WEBSOCKETS', 1);
}

if ($_GET['lang']) {
if (isset($_GET['lang'])) {
Define("SETTINGS_SITE_LANGUAGE", $_GET['lang']);
$_SESSION['lang'] = SETTINGS_SITE_LANGUAGE;
} elseif ($_SESSION['lang']) {
} elseif (isset($_SESSION['lang'])) {
Define("SETTINGS_SITE_LANGUAGE", $_SESSION['lang']);
}

Expand Down
10 changes: 5 additions & 5 deletions modules/objects/objects.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -639,7 +639,8 @@ function callMethod($name, $params = 0, $parentClassId = 0)


if ($code != '') {
if (isItPythonCode($code)) {
if (defined('PYTHON_PATH') and isItPythonCode($code)) {
echo ($code);
python_run_code($code, $params, $this->object_title);
} else {
try {
Expand Down Expand Up @@ -701,7 +702,7 @@ function getPropertyByName($name, $class_id, $object_id)
}

$rec = SQLSelectOne("SELECT ID FROM properties WHERE OBJECT_ID='" . (int)$object_id . "' AND TITLE = '" . DBSafe($name) . "'");
if ($rec['ID']) {
if (isset($rec['ID'])) {
saveToCache($cached_name,$rec['ID']);
return $rec['ID'];
}
Expand Down Expand Up @@ -817,7 +818,7 @@ function setProperty($property, $value, $no_linked = 0, $source = '')
if (!$source && defined('CALL_SOURCE')) {
$source = CALL_SOURCE;
}
if (!$source && $_SERVER['REQUEST_URI']) {
if (!$source && isset($_SERVER['REQUEST_URI'])) {
$source = urldecode($_SERVER['REQUEST_URI']);
}
if (strlen($source) > 250) {
Expand Down Expand Up @@ -982,7 +983,7 @@ function setProperty($property, $value, $no_linked = 0, $source = '')

$p_lower = strtolower($property);
if (!defined('DISABLE_SIMPLE_DEVICES') &&
$this->device_id &&
isset($this->device_id) &&
($p_lower == 'value' ||
$p_lower == 'valuehumidity' ||
$p_lower == 'status' ||
Expand Down Expand Up @@ -1181,7 +1182,6 @@ function dbInstall($data)
objects: CLASS_ID int(10) NOT NULL DEFAULT '0'
objects: DESCRIPTION text
objects: LOCATION_ID int(10) NOT NULL DEFAULT '0'
objects: KEEP_HISTORY int(10) NOT NULL DEFAULT '0'
properties: ID int(10) unsigned NOT NULL auto_increment
properties: CLASS_ID int(10) NOT NULL DEFAULT '0'
Expand Down
Loading

0 comments on commit 853f032

Please sign in to comment.