예제 #1
0
    def action(self, query, args=None):

        if query == None:
            return

        sqlResult = None
        attempt = 0

        while attempt < 5:
            try:
                if args == None:
                    #logger.debug(self.filename+": "+query)
                    sqlResult = self.connection.execute(query)
                else:
                    #logger.debug(self.filename+": "+query+" with args "+str(args))
                    logger.log(self.filename+": "+query+" with args "+str(args))
                    sqlResult = self.connection.execute(query, args)
                self.connection.commit()
                break
            except sqlite3.OperationalError, e:
                if "unable to open database file" in e.message or "database is locked" in e.message:
                    logger.log('Database Error: %s' % e)
                    attempt += 1
                    time.sleep(1)
                else:
                    print 'Database error: %s' % e
                    raise
            except sqlite3.DatabaseError, e:
                print 'Fatal Error executing %s :: %s' % (query, e)
                raise
예제 #2
0
    def upload(self,*args,**kwargs):
        invul={}
        error=[]
        if kwargs:
            errorflag=False
            #check voor compleetheid
            if len(kwargs["klas"])==0:
                error.append("Geen klas ingevuld")
                errorflag=True
                invul['klas']="0"
            elif (kwargs['klas']=="nieuw" and len(kwargs['klasnieuw'])==0) or \
                 (kwargs['klas']=="nieuw" and not kwargs['klasnieuw'].isdigit()) or \
                 (kwargs['klas']=="nieuw" and not int(kwargs['klasnieuw']) in range(1,7)):
                error.append("Geen geldige nieuwe klas ingevuld")
                errorflag=True
                invul['klas']="nieuw"
            else:
                invul['klas']=kwargs['klas']

            if len(kwargs["hoofdstuk"])==0:
                error.append("Geen hoofdstuk gekozen")
                errorflag=True
                invul['hoofdstuk']=''
            elif (kwargs['hoofdstuk']=="nieuw" and len(kwargs['hoofdstuknieuw'])==0):
                error.append("Geen nieuw hoofdstuk ingevuld hoofdstuk gekozen")
                errorflag=True
                invul['hoofdstuk']="nieuw"
            else:
                invul['hoofdstuk']=kwargs['hoofdstuk']
            if len(kwargs["naam"])==0:
                error.append("Geen naam ingevuld")
                errorflag=True
            else:
                invul['naam']=kwargs['naam']

            if 'cb' in kwargs.keys():
                logger.log(kwargs['cb'])
                invul['cb']=kwargs['cb']
            else:
                invul['cb']="off"

            if not helper.checkFile(kwargs['docxfile']):
                error.append("Geen geldig word-bestand")
                errorflag=True

            if len(kwargs['pdffile'].filename)>0 and not helper.checkFile(kwargs['pdffile'],"pdf"):
                error.append("Geen geldig pdf-bestand")
                errorflag=True

            if errorflag:
                myDB=db.DBConnection()
                items = myDB.select("SELECT hoofdstuk, klas FROM practica")
                return serve_template("upload.html",erro=error,bekenden=dict(items),ingevuld=invul)
            else:
                bestandsnamen = helper.processUpload(kwargs)
                return serve_template("uploaded.html",bestanden=bestandsnamen)
        myDB=db.DBConnection()
        items = myDB.select("SELECT hoofdstuk, klas FROM practica")
        return serve_template("upload.html",erro="",bekenden=dict(items),ingevuld={"klas":"0","hoofdstuk":"","Naam":"","cb":"off"})
예제 #3
0
def processUpload(kwargs):
    if kwargs['klas']=="nieuw":
        klas = kwargs['klasnieuw']
    else:
        klas=kwargs['klas']
    if kwargs['hoofdstuk'] =="nieuw":
        hoofdstuk = kwargs['hoofdstuknieuw']
    else:
        hoofdstuk=kwargs['hoofdstuk']
    naam = kwargs['naam']
    if "cb" in kwargs.keys():
        cb = True
        if not "cb" in naam.lower():
            naam += " CB"
    else:
        cb=False

    vandaag = date.today().strftime("%Y-%m-%d")
    bestandsnaamenpad = practicumbank.PRACTICUM_DIR+"\\klas "+klas+"\\"+hoofdstuk+"\\"+naam+" - "+vandaag
    bestandspad = practicumbank.PRACTICUM_DIR+"\\klas "+klas+"\\"+hoofdstuk
    saveFile(kwargs['docxfile'],bestandspad,bestandsnaamenpad)
    retlist=[os.path.normpath(bestandsnaamenpad+".docx")]
    if checkFile(kwargs['pdffile'],"pdf"):
        saveFile(kwargs['pdffile'],bestandspad,bestandsnaamenpad)
        retlist.append(os.path.normpath(bestandsnaamenpad+".pdf"))

    try:
        query = "SELECT * FROM practica WHERE name = ?"
        mydb=db.DBConnection()
        indatabase = mydb.select(query, [naam])
    except:
        indatabase=None
    if indatabase:
        files=list(indatabase[5])
        files.extend(retlist)
    else:
        files=retlist
    controldict={"klas":int(klas),"hoofdstuk":hoofdstuk,"naam":naam}
    valdict={"cb":cb,"bestanden":str(files)}
    logger.log(str(controldict)+str(valdict))
    savetodb("practica",controldict,valdict)
    return retlist
예제 #4
0
def initialize():
    practicumbank.PAD = os.path.abspath(__file__)
    practicumbank.DIR = os.path.dirname(practicumbank.PAD)
    practicumbank.LOG_DIR = os.path.join(os.path.dirname(practicumbank.PAD),"logs")
    logger.pb_log_instance.initLogging()
    logger.log("initiating practicumbank")
    if not os.path.exists(practicumbank.LOG_DIR):
        try:
            os.makedirs(practicumbank.LOG_DIR)
        except:
            pass
    practicumbank.CONF  = {
                       '/': {
                             'tools.staticdir.root':  os.path.join(practicumbank.DIR,'data')
                             },
                       '/interfaces':{
                             'tools.staticdir.on': True,
                             'tools.staticdir.dir': "interfaces"
                             }
                       }
    helper.dbcheck()