コード例 #1
0
ファイル: migration_base.py プロジェクト: wiz21b/koi
def init_base():
    init_logging()
    mainlog.setLevel(logging.INFO)
    load_configuration("server.cfg")

    parser = argparse.ArgumentParser(formatter_class=argparse.RawDescriptionHelpFormatter,
                                     description='This is an Horse! migration script.',
                                     epilog="For example --db-url {}".format(
                                         configuration.get("Database", "admin_url")))

    parser.add_argument('--db-url', default=configuration.database_url, help='Database URL')
    args = parser.parse_args()

    mainlog.info("Connecting to {}".format(args.db_url))
    init_i18n()
    from koi.db_mapping import metadata
    init_db_session(args.db_url, metadata, False)  # True or configuration.echo_query)
コード例 #2
0
ファイル: admin_gui.py プロジェクト: wiz21b/koi
    def _save(self):

        try:
            old_server_ip = configuration.get("DEFAULT", "public_ip")

            cfg_path = os.path.join(get_data_dir(), "server.cfg")
            f = open(cfg_path, "w")
            f.write(self.text_edit_widget.toPlainText())
            f.close()
            self._log._log_success(
                "Server configuration saved in {}".format(cfg_path))

            load_configuration(cfg_path, "server_config_check.cfg")
            self._log._log_success("Server configuration reloaded")

            server_ip = configuration.get("DEFAULT", "public_ip")
            if old_server_ip != server_ip:
                self._log._log_success(
                    "Updating IP address in the downloadable delivery_slips")
                inject_public_ip_in_client(server_ip)

        except Exception as ex:
            self._log._log_error(
                "Something went wrong while saving the configuration : {}".
                format(ex))

        self._log._log("Reloading server configuration")
        import threading

        def open_server(url):
            try:
                urlopen(url)
            except ConnectionResetError as ex:
                pass

        threading.Thread(target=open_server,
                         args=['http://127.0.0.1:8079/reload']).start()
コード例 #3
0
ファイル: migrate_to_1_0_50.py プロジェクト: wiz21b/koi
from datetime import date
import argparse
from sqlalchemy.sql import select, func, and_, or_

from koi.base_logging import mainlog, init_logging
from koi.Configurator import init_i18n, load_configuration, configuration, resource_dir
init_logging()
init_i18n()
load_configuration()

from koi.db_mapping import metadata
from koi.datalayer.database_session import init_db_session, db_engine, session

from koi.datalayer.supplier_mapping import Supplier
from koi.datalayer.supply_order_mapping import SupplyOrderPart, SupplyOrder

import argparse

parser = argparse.ArgumentParser(
    description='This is an Horse! migration script.')
parser.add_argument('--db-url',
                    default=configuration.database_url,
                    help='Database connection URL {}'.format(
                        configuration.database_url))


def alter_structure():

    try:
        session().connection().execute("drop table horse.supplier_orders")
        session().commit()
コード例 #4
0
import os.path
from datetime import date
import argparse
from sqlalchemy.sql import select, func, and_, or_

from koi.base_logging import mainlog, init_logging
from koi.Configurator import init_i18n, load_configuration, configuration, resource_dir
init_logging()
init_i18n()
load_configuration("server.cfg")

from koi.db_mapping import metadata
from koi.datalayer.database_session import init_db_session, db_engine, session

from koi.people_admin.people_admin_mapping import *

parser = argparse.ArgumentParser(
    description='This is an Horse! migration script.')
parser.add_argument('--db-url',
                    default=configuration.database_url,
                    help='Database connection URL {}'.format(
                        configuration.get("Database", "admin_url")))

from sqlalchemy import create_engine
from sqlalchemy.schema import CreateTable


def dump(sql, *multiparams, **params):
    print(sql.compile(dialect=engine.dialect))

コード例 #5
0
def dirup(path):
    return os.path.split(os.path.abspath(path))[0]


updir = dirup(dirup(__file__))
# sys.path.append(updir)
# sys.path.append(os.path.join(updir,'server'))
# sys.path.append(os.path.join(updir,'datalayer'))

from koi.Configurator import init_i18n, load_configuration, resource_dir

from koi.base_logging import init_logging
init_logging("test.log")

init_i18n()

# load_configuration(os.path.join( resource_dir,'test_config.cfg'))
load_configuration('config.cfg')
# load_configuration() # Default run on my PC

from koi.Configurator import mainlog, configuration

import koi.db_mapping
from koi.datalayer.database_session import init_db_session, session
init_db_session(configuration.database_url, koi.db_mapping.metadata, True
                or configuration.echo_query)

from koi.db_mapping import *
from koi.dao import *
コード例 #6
0
ファイル: server_setup.py プロジェクト: wiz21b/koi
if __name__ == "__main__":
    from koi.base_logging import init_logging
    from koi.Configurator import init_i18n,load_configuration,configuration

    init_logging()
    init_i18n()
    load_configuration("server.cfg","server_config_check.cfg")

import os.path

from koi.Configurator import resource_dir
from koi.base_logging import mainlog
from koi.doc_manager.client_utils import upload_template
from koi.server.json_decorator import JsonCallWrapper
from koi.doc_manager.documents_service import DocumentsService
import inspect

def register_horse_template_online(description, fn, ref):
    documents_service = JsonCallWrapper( DocumentsService(), JsonCallWrapper.HTTP_MODE)

    doc_id = documents_service.reference_to_document_id(ref)
    if not doc_id:
        doc_id = upload_template(os.path.join(resource_dir, fn))
        documents_service.update_template_description(doc_id,description,ref)
    else:
        mainlog.debug("I didn't add {} with reference {} because it's already there".format(fn,ref))

def register_horse_template_offline(description, full_path, ref):
    """ Register a file in the template library, will do it by accessing the
    server code directly instead of via HTTP.
コード例 #7
0
ファイル: setup_test.py プロジェクト: mobidian/koi
#     return os.path.split(os.path.abspath(path))[0]

# updir = dirup(dirup(__file__))
# sys.path.append(updir)
# sys.path.append(os.path.join(updir,'server'))
# sys.path.append(os.path.join(updir,'datalayer'))

from koi.Configurator import init_i18n, load_configuration, resource_dir

from koi.base_logging import init_logging, mainlog
init_logging("test.log", hook_exceptions=False)
mainlog.setLevel(logging.DEBUG)
init_i18n()

mainlog.debug(u"Test resource dir is {}".format(resource_dir))
load_configuration(
    os.path.abspath(os.path.join(resource_dir, 'test_config.cfg')))
from koi.Configurator import configuration

import koi.db_mapping
from koi.datalayer.database_session import init_db_session, session
init_db_session(configuration.database_url, koi.db_mapping.metadata, False
                or configuration.echo_query)

from koi.datalayer.create_database import create_all_tables, do_basic_inserts, drop_all_tables, set_up_database, disconnect_db, create_root_account
from koi.datalayer.utils import _extract_db_params_from_url


def add_user(login, password, fullname, roles):
    h = hashlib.md5()
    h.update(password.encode('utf-8'))  # and you need h.hexdigest()
    session().connection().execute(
コード例 #8
0
    def handle_request(self):

        path = re.sub("\\?.*", "", self.path)
        params = urlparse.parse_qs(urlparse.urlparse(self.path).query)

        if path == '/version':
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write(
                configuration.get("DownloadSite", "current_version"))
            return

        elif path == '/file':
            f = open(configuration.get("DownloadSite", "client_path"), 'rb')
            bytes = f.read()
            f.close()
            self.send_response(200)
            self.send_header('Content-type', 'application/octet-stream')
            self.send_header('Content-Length', str(len(bytes)))
            self.send_header(
                'Content-Disposition', 'attachment; filename={}'.format(
                    os.path.split(
                        configuration.get("DownloadSite", "client_path"))[-1]))
            self.send_header('Content-Transfer-Encoding', 'binary')
            self.end_headers()
            self.wfile.write(bytes)
            mainlog.info("Served {} with {} bytes".format(
                configuration.get("DownloadSite", "client_path"), len(bytes)))
            return

        elif path == '/database':
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write(configuration.get("DownloadSite", "db_url"))
            return

        elif path == '/delivery_slips':
            f = open(configuration.get("DownloadSite", "client_path"), 'rb')
            bytes = f.read()
            f.close()
            self.send_response(200)
            self.send_header('Content-type', 'application/octet-stream')
            self.send_header('Content-Length', str(len(bytes)))
            self.end_headers()
            self.wfile.write(bytes)
            return

        elif path == '/logo.png':
            f = open(os.path.join(resource_dir, "file_server_logo.png"), 'rb')
            bytes = f.read()
            f.close()
            self.send_response(200)
            self.send_header('Content-type', 'image/png')
            self.end_headers()
            self.wfile.write(bytes)
            return

        elif self.path.startswith('/upgrade'):

            if 'version' not in params:
                mainlog.error("Upgrade requested without version")

                self.send_response(500)
                self.send_header('Content-type', 'text/html')
                self.end_headers()
                self.wfile.write("Version parameter not supplied")
                return

            version = ''.join(params['version']).strip()
            mainlog.info("Upgrade requested to version {}".format(version))

            res = "No message"
            try:
                res = upgrade(version)
                self.send_response(200)
            except Exception as ex:
                mainlog.error("Upgrade failed because {}".format(str(ex)))
                res = str(ex)
                self.send_response(500)

            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write(cgi.escape(res))

            return
        else:
            mainlog.error("Unsupported path {} from {}".format(
                self.path, self.client_address))

            load_configuration("server.cfg", "server_config_check.cfg")

            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write("""<html><head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"><style>
p,h2 {text-align:center; font-family:Verdana; }
table, th, td { border: 1px solid #2900af; border-collapse:collapse; padding:0; margin:0; }
img {background-color:white;}
</style></head>

<body>
   <br/>
   <p><img koi="logo.png"></p>
   <br/>
   <table width="100%" height="1"><tr><td></td><tr/></table><br/><br/>
   <h2>This is the Horse download site !</h2>
""")
            self.wfile.write("<p>The current version is <b>{}</b>.</p>".format(
                configuration.get("DownloadSite", "current_version")))
            self.wfile.write(
                "<p>To download the latest delivery_slips, <a href='/file'>click here</a>.</p>"
            )
            self.wfile.write("</body></html>")
コード例 #9
0
ファイル: completer.py プロジェクト: wiz21b/koi
    #   return nr_matches,first_match


@Slot(QModelIndex)
def index_changed(ndx):
    # print "index_changed {}".format(ndx)
    pass


if __name__ == "__main__":
    from koi.base_logging import init_logging
    from koi.Configurator import init_i18n, load_configuration

    init_logging("completer.log")
    init_i18n()
    load_configuration("config.cfg")
    from koi.Configurator import configuration  # Why should I do this here ? I don't get it :-(

    from koi.datalayer.sqla_mapping_base import metadata
    from koi.datalayer.database_session import init_db_session

    init_db_session(configuration.database_url, metadata, False
                    or configuration.echo_query)

    from PySide.QtGui import QApplication, QMainWindow, QWidget, QHBoxLayout
    from koi.dao import dao

    app = QApplication(sys.argv)
    window = QMainWindow()

    from koi.machine.machine_service import machine_service