Merge branch 'py3'
This commit is contained in:
commit
5cd55d15bd
11 changed files with 52 additions and 48 deletions
|
@ -47,3 +47,8 @@ The encoding part is delegated to `ffmpeg`, but the code is really modular so
|
||||||
changing this is a breeze. To be quicker and avoid the quality issues related
|
changing this is a breeze. To be quicker and avoid the quality issues related
|
||||||
to reencoding, the codec "copy" is used: this means that input and output must
|
to reencoding, the codec "copy" is used: this means that input and output must
|
||||||
have the same format.
|
have the same format.
|
||||||
|
|
||||||
|
testing
|
||||||
|
-----------
|
||||||
|
|
||||||
|
unit tests can be run with `python setup.py test`
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
import server
|
from . import server
|
||||||
import cli
|
from . import cli
|
||||||
|
|
|
@ -9,10 +9,10 @@ logger = logging.getLogger('cli')
|
||||||
|
|
||||||
CWD = os.getcwd()
|
CWD = os.getcwd()
|
||||||
|
|
||||||
import forge
|
from . import forge
|
||||||
import maint
|
from . import maint
|
||||||
from config_manager import get_config
|
from .config_manager import get_config
|
||||||
import server
|
from . import server
|
||||||
|
|
||||||
|
|
||||||
def pre_check_permissions():
|
def pre_check_permissions():
|
||||||
|
@ -84,6 +84,7 @@ def common_pre():
|
||||||
def main():
|
def main():
|
||||||
parser = ArgumentParser(description='creates mp3 from live recordings')
|
parser = ArgumentParser(description='creates mp3 from live recordings')
|
||||||
parser.add_argument('--verbose', '-v', action='count',
|
parser.add_argument('--verbose', '-v', action='count',
|
||||||
|
default=0,
|
||||||
help='Increase verbosity; can be used multiple times')
|
help='Increase verbosity; can be used multiple times')
|
||||||
parser.add_argument('--pretend', '-p', action='store_true', default=False,
|
parser.add_argument('--pretend', '-p', action='store_true', default=False,
|
||||||
help='Only pretend; no real action will be done')
|
help='Only pretend; no real action will be done')
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
'''
|
'''
|
||||||
This module contains DB logic
|
This module contains DB logic
|
||||||
'''
|
'''
|
||||||
|
from __future__ import print_function
|
||||||
import logging
|
import logging
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
|
||||||
|
@ -11,7 +12,7 @@ from sqlalchemy import create_engine, Column, Integer, String, DateTime, inspect
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from sqlalchemy.ext.declarative import declarative_base
|
from sqlalchemy.ext.declarative import declarative_base
|
||||||
|
|
||||||
from config_manager import get_config
|
from .config_manager import get_config
|
||||||
|
|
||||||
PAGESIZE = 10
|
PAGESIZE = 10
|
||||||
|
|
||||||
|
@ -218,7 +219,7 @@ class RecDB:
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def get_err(self):
|
def get_err(self):
|
||||||
print "DB error: %s" % (self.err)
|
print("DB error: %s" % (self.err))
|
||||||
t = self.err
|
t = self.err
|
||||||
self.err = ""
|
self.err = ""
|
||||||
return t
|
return t
|
||||||
|
@ -227,25 +228,25 @@ class RecDB:
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
def printall(queryres):
|
def printall(queryres):
|
||||||
for record in queryres:
|
for record in queryres:
|
||||||
print "Record: %s" % record
|
print("Record: %s" % record)
|
||||||
|
|
||||||
db = RecDB()
|
db = RecDB()
|
||||||
_mytime = datetime(2014, 05, 23, 15, 12, 17)
|
_mytime = datetime(2014, 5, 23, 15, 12, 17)
|
||||||
_endtime = datetime(2014, 05, 24, 17, 45, 17)
|
_endtime = datetime(2014, 5, 24, 17, 45, 17)
|
||||||
|
|
||||||
a = Rec(name="Mimmo1", starttime=_mytime, endtime=_endtime)
|
a = Rec(name="Mimmo1", starttime=_mytime, endtime=_endtime)
|
||||||
printall(db._search())
|
printall(db._search())
|
||||||
sys.exit("End test job")
|
sys.exit("End test job")
|
||||||
|
|
||||||
# a = Rec(name="Mimmo1", starttime=_mytime, endtime=None)
|
# a = Rec(name="Mimmo1", starttime=_mytime, endtime=None)
|
||||||
print "Aggiunto", db.add(a)
|
print("Aggiunto", db.add(a))
|
||||||
printall(db.get_all(page_size=5, page=0))
|
printall(db.get_all(page_size=5, page=0))
|
||||||
|
|
||||||
print "Mimmo "
|
print("Mimmo ")
|
||||||
printall(db._search(name="Mimmo1"))
|
printall(db._search(name="Mimmo1"))
|
||||||
print "Search"
|
print("Search")
|
||||||
printall(db._search(name="Mimmo1",
|
printall(db._search(name="Mimmo1",
|
||||||
starttime=datetime(2014, 05, 24, 15, 16, 1) ))
|
starttime=datetime(2014, 5, 24, 15, 16, 1) ))
|
||||||
a = db.get_by_id(5)
|
a = db.get_by_id(5)
|
||||||
a.start()
|
a.start()
|
||||||
db.delete(1)
|
db.delete(1)
|
|
@ -33,7 +33,5 @@ try:
|
||||||
if resource_isdir('techrec', 'pages'):
|
if resource_isdir('techrec', 'pages'):
|
||||||
STATIC_PAGES = resource_filename('techrec', 'pages')
|
STATIC_PAGES = resource_filename('techrec', 'pages')
|
||||||
STATIC_FILES = resource_filename('techrec', 'static')
|
STATIC_FILES = resource_filename('techrec', 'static')
|
||||||
else:
|
|
||||||
print "invece dice", resource_filename('techrec', 'static')
|
|
||||||
except ImportError:
|
except ImportError:
|
||||||
logging.exception("Error loading resources from installed part")
|
logging.exception("Error loading resources from installed part")
|
||||||
|
|
|
@ -4,7 +4,7 @@ import os
|
||||||
from subprocess import Popen
|
from subprocess import Popen
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from config_manager import get_config
|
from .config_manager import get_config
|
||||||
|
|
||||||
|
|
||||||
def get_timefile_exact(time):
|
def get_timefile_exact(time):
|
||||||
|
|
|
@ -1,10 +1,11 @@
|
||||||
|
from __future__ import print_function
|
||||||
import sys
|
import sys
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
from sqlalchemy import inspect
|
from sqlalchemy import inspect
|
||||||
|
|
||||||
from config_manager import get_config
|
from .config_manager import get_config
|
||||||
from techrec import RecDB
|
from .db import RecDB
|
||||||
|
|
||||||
def cleanold_cmd(options):
|
def cleanold_cmd(options):
|
||||||
log = logging.getLogger('cleanold')
|
log = logging.getLogger('cleanold')
|
||||||
|
@ -14,7 +15,7 @@ def cleanold_cmd(options):
|
||||||
count = len(res)
|
count = len(res)
|
||||||
if options.pretend:
|
if options.pretend:
|
||||||
for rec in res:
|
for rec in res:
|
||||||
print rec
|
print(rec)
|
||||||
else:
|
else:
|
||||||
for rec in res:
|
for rec in res:
|
||||||
logging.info("Deleting " + str(rec))
|
logging.info("Deleting " + str(rec))
|
||||||
|
|
|
@ -40,11 +40,11 @@ class JobQueue(object):
|
||||||
|
|
||||||
def simulate_long_job(recid=None, starttime=None, endtime=None, name='', filename=None):
|
def simulate_long_job(recid=None, starttime=None, endtime=None, name='', filename=None):
|
||||||
from time import sleep
|
from time import sleep
|
||||||
print "evviva " + name
|
print("evviva " + name)
|
||||||
sleep(2)
|
sleep(2)
|
||||||
print "lavoro su " + name
|
print("lavoro su " + name)
|
||||||
sleep(2)
|
sleep(2)
|
||||||
print "done su " + name
|
print("done su " + name)
|
||||||
_queue = None
|
_queue = None
|
||||||
|
|
||||||
|
|
||||||
|
@ -60,15 +60,15 @@ if __name__ == '__main__':
|
||||||
|
|
||||||
def sleep(n):
|
def sleep(n):
|
||||||
import time
|
import time
|
||||||
print "Inizio %d" % n
|
print("Inizio %d" % n)
|
||||||
time.sleep(n)
|
time.sleep(n)
|
||||||
print "Finisco %d" % n
|
print("Finisco %d" % n)
|
||||||
return n
|
return n
|
||||||
|
|
||||||
get_process_queue().submit(sleep, 3)
|
get_process_queue().submit(sleep, 3)
|
||||||
get_process_queue().submit(sleep, 3)
|
get_process_queue().submit(sleep, 3)
|
||||||
get_process_queue().join()
|
get_process_queue().join()
|
||||||
print get_process_queue().jobs
|
print(get_process_queue().jobs)
|
||||||
delta = (datetime.now() - n).total_seconds()
|
delta = (datetime.now() - n).total_seconds()
|
||||||
print delta
|
print(delta)
|
||||||
assert 5 < delta < 7
|
assert 5 < delta < 7
|
||||||
|
|
|
@ -14,10 +14,10 @@ botlog.setLevel(logging.INFO)
|
||||||
botlog.addHandler(logging.StreamHandler(sys.stdout))
|
botlog.addHandler(logging.StreamHandler(sys.stdout))
|
||||||
bottle._stderr = lambda x: botlog.info(x.strip())
|
bottle._stderr = lambda x: botlog.info(x.strip())
|
||||||
|
|
||||||
from techrec import Rec, RecDB
|
from .db import Rec, RecDB
|
||||||
from processqueue import get_process_queue
|
from .processqueue import get_process_queue
|
||||||
from forge import create_mp3
|
from .forge import create_mp3
|
||||||
from config_manager import get_config
|
from .config_manager import get_config
|
||||||
|
|
||||||
|
|
||||||
def date_read(s):
|
def date_read(s):
|
||||||
|
@ -89,13 +89,13 @@ class RecAPI(Bottle):
|
||||||
self.get('/jobs/<job_id:int>', callback=self.check_job)
|
self.get('/jobs/<job_id:int>', callback=self.check_job)
|
||||||
|
|
||||||
def create(self):
|
def create(self):
|
||||||
req = dict(request.POST.allitems())
|
req = dict(request.POST.decode().allitems())
|
||||||
ret = {}
|
ret = {}
|
||||||
logger.debug("Create request %s " % req)
|
logger.debug("Create request %s " % req)
|
||||||
|
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
start = date_read(req['starttime']) if 'starttime' in req else now
|
start = date_read(req['starttime']) if 'starttime' in req else now
|
||||||
name = req['name'].decode('utf8') if 'name' in req else u""
|
name = req['name'] if 'name' in req else u""
|
||||||
end = date_read(req['endtime']) if 'endtime' in req else now
|
end = date_read(req['endtime']) if 'endtime' in req else now
|
||||||
|
|
||||||
rec = Rec(name=name,
|
rec = Rec(name=name,
|
||||||
|
@ -107,7 +107,7 @@ class RecAPI(Bottle):
|
||||||
rec=rec_sanitize(rec))
|
rec=rec_sanitize(rec))
|
||||||
|
|
||||||
def delete(self):
|
def delete(self):
|
||||||
req = dict(request.POST.allitems())
|
req = dict(request.POST.decode().allitems())
|
||||||
logging.info("Server: request delete %s " % (req))
|
logging.info("Server: request delete %s " % (req))
|
||||||
if 'id' not in req:
|
if 'id' not in req:
|
||||||
return self.rec_err("No valid ID")
|
return self.rec_err("No valid ID")
|
||||||
|
@ -118,7 +118,7 @@ class RecAPI(Bottle):
|
||||||
return self.rec_err("DELETE error: %s" % (self.db.get_err()))
|
return self.rec_err("DELETE error: %s" % (self.db.get_err()))
|
||||||
|
|
||||||
def update(self, recid):
|
def update(self, recid):
|
||||||
req = dict(request.POST.allitems())
|
req = dict(request.POST.decode().allitems())
|
||||||
|
|
||||||
newrec = {}
|
newrec = {}
|
||||||
now = datetime.now()
|
now = datetime.now()
|
||||||
|
@ -131,7 +131,7 @@ class RecAPI(Bottle):
|
||||||
else:
|
else:
|
||||||
newrec['endtime'] = date_read(req['endtime'])
|
newrec['endtime'] = date_read(req['endtime'])
|
||||||
if 'name' in req:
|
if 'name' in req:
|
||||||
newrec["name"] = req['name'].decode('utf8')
|
newrec["name"] = req['name']
|
||||||
|
|
||||||
try:
|
try:
|
||||||
logger.info("prima di update")
|
logger.info("prima di update")
|
||||||
|
@ -144,7 +144,7 @@ class RecAPI(Bottle):
|
||||||
|
|
||||||
def generate(self):
|
def generate(self):
|
||||||
# prendiamo la rec in causa
|
# prendiamo la rec in causa
|
||||||
recid = dict(request.POST.allitems())['id']
|
recid = dict(request.POST.decode().allitems())['id']
|
||||||
rec = self.db._search(_id=recid)[0]
|
rec = self.db._search(_id=recid)[0]
|
||||||
if rec.filename is not None and os.path.exists(rec.filename):
|
if rec.filename is not None and os.path.exists(rec.filename):
|
||||||
return {'status': 'ready',
|
return {'status': 'ready',
|
||||||
|
@ -166,8 +166,8 @@ class RecAPI(Bottle):
|
||||||
'endtime': rec.endtime.strftime('%H%M'),
|
'endtime': rec.endtime.strftime('%H%M'),
|
||||||
'startdt': rec.starttime.strftime('%y%m%d_%H%M'),
|
'startdt': rec.starttime.strftime('%y%m%d_%H%M'),
|
||||||
'enddt': rec.endtime.strftime('%y%m%d_%H%M'),
|
'enddt': rec.endtime.strftime('%y%m%d_%H%M'),
|
||||||
'name': filter(lambda c: c.isalpha(),
|
'name': ''.join(filter(lambda c: c.isalpha(),
|
||||||
unicodedata.normalize('NFKD', rec.name).encode('ascii', 'ignore')),
|
unicodedata.normalize('NFKD', rec.name).encode('ascii', 'ignore').decode('ascii'))),
|
||||||
}
|
}
|
||||||
self.db.get_session(rec).commit()
|
self.db.get_session(rec).commit()
|
||||||
job_id = self._app.pq.submit(
|
job_id = self._app.pq.submit(
|
||||||
|
|
|
@ -2,9 +2,9 @@ from datetime import datetime, timedelta
|
||||||
|
|
||||||
from nose.tools import raises, eq_
|
from nose.tools import raises, eq_
|
||||||
|
|
||||||
from forge import get_files_and_intervals, get_timefile_exact, round_timefile,\
|
from .forge import get_files_and_intervals, get_timefile_exact, round_timefile,\
|
||||||
get_timefile, mp3_join
|
get_timefile, mp3_join
|
||||||
from config_manager import get_config
|
from .config_manager import get_config
|
||||||
|
|
||||||
eight = datetime(2014, 5, 30, 20)
|
eight = datetime(2014, 5, 30, 20)
|
||||||
nine = datetime(2014, 5, 30, 21)
|
nine = datetime(2014, 5, 30, 21)
|
||||||
|
|
10
setup.py
10
setup.py
|
@ -13,15 +13,13 @@ setup(
|
||||||
author_email="piuttosto@logorroici.org",
|
author_email="piuttosto@logorroici.org",
|
||||||
packages=["techrec"],
|
packages=["techrec"],
|
||||||
package_dir={"techrec": "server"},
|
package_dir={"techrec": "server"},
|
||||||
install_requires=[
|
install_requires=["Paste~=3.2", "SQLAlchemy==0.8.3", "bottle~=0.12"],
|
||||||
"Paste==1.7.5.1",
|
|
||||||
"SQLAlchemy==0.8.3",
|
|
||||||
"bottle==0.11.6",
|
|
||||||
"wsgiref==0.1.2",
|
|
||||||
],
|
|
||||||
classifiers=["Programming Language :: Python :: 2.7"],
|
classifiers=["Programming Language :: Python :: 2.7"],
|
||||||
entry_points={"console_scripts": ["techrec = techrec.cli:main"]},
|
entry_points={"console_scripts": ["techrec = techrec.cli:main"]},
|
||||||
zip_safe=False,
|
zip_safe=False,
|
||||||
install_package_data=True,
|
install_package_data=True,
|
||||||
package_data={"techrec": ["static/**/*", "pages/*.html"]},
|
package_data={"techrec": ["static/**/*", "pages/*.html"]},
|
||||||
|
test_suite="nose.collector",
|
||||||
|
setup_requires=["nose>=1.0"],
|
||||||
|
tests_requires=["nose>=1.0"],
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue