Пример #1
0
	def GET(self):
		i = web.input(uid=None, sha=None, full=0)
		if i.uid == None:
			return render.base(view.listing())
		else:
			results = config.DB.select('items', dict(n=str(i.uid)), where="id=$n")
			rows = results.list()
			print ("Row count: " + str(len(rows)))
			if len(rows) > 0:
				row = rows[0]

				results = config.DB.query("SELECT * FROM scores WHERE id='"  + str(i.uid) + "'")
				if i.full == 0:
					for r in results.list():
						print ("Updating: " + r['commitsha'])
						outdir = os.getcwd() + '/static/' + r['commitsha'] + '/'
						score, pagecount, all_scores = document_compare.compare_pdf_using_images(row['id'], outdir)
						config.DB.update('scores', where='id="' + str(i.uid) + '" AND commitsha="' + str(r['commitsha']) + '"', olscore=score[0],ollscore=score[1], olwscore=score[2], details=str(all_scores).strip('[]'))
				else:
					shutil.copy(os.getcwd() + '/static/originals/' + str(i.uid) + row['extension'], '/tmp/')
					
					if results[0].total_version == len(lo):
						config.DB.delete('scores', where='id = "' + str(i.uid) + '"')
						a = threading.Thread(target=worker, args=('/tmp/' + str(i.uid) + row['extension'], False, ))
						a.start()
					else:
						a = threading.Thread(target=worker, args=('/tmp/' + str(i.uid) + row['extension'], True, ))
						a.start()
			
			return render.base(view.listing())
Пример #2
0
def worker(tempfile, only_add_missing):
	baseoutdir = os.getcwd() + '/static/'
	uid = document_compare.init_document_compare (tempfile, baseoutdir)

	for libreoffice in lo:
		sha = document_compare.get_libreoffice_sha(libreoffice)
		outdir = baseoutdir + sha + '/'

		if only_add_missing:
			results = config.DB.select('scores', dict(n=str(uid)), where="id=$n AND commitsha='" + str(sha) + "'")
			if len(results.list()) > 0:
				continue

		b, ext = os.path.splitext(tempfile)
		filename = uid + ext

		document_compare.generate_pdf_for_doc(baseoutdir + 'originals/' + filename, uid, libreoffice, outdir)
		document_compare.generate_fullres_images_from_pdf(filename, uid, outdir)
		score, pagecount, all_scores = document_compare.compare_pdf_using_images(uid, outdir)
		# Update page count
		config.DB.update('items', where='id="' + str(uid) + '"', pagecount=pagecount)
		# Update score
		config.DB.insert('scores', id=str(uid), commitsha=sha, olscore=score[0],ollscore=score[1], olwscore=score[2], details=str(all_scores).strip('[]'))

	os.remove(tempfile)
Пример #3
0
    def GET(self):
        i = web.input(uid=None, sha=None, full=0)
        if i.uid == None:
            return render.base(view.listing())
        else:
            results = config.DB.select('items',
                                       dict(n=str(i.uid)),
                                       where="id=$n")
            rows = results.list()
            print("Row count: " + str(len(rows)))
            if len(rows) > 0:
                row = rows[0]

                results = config.DB.query("SELECT * FROM scores WHERE id='" +
                                          str(i.uid) + "'")
                if i.full == 0:
                    for r in results.list():
                        print("Updating: " + r['commitsha'])
                        outdir = os.getcwd(
                        ) + '/static/' + r['commitsha'] + '/'
                        score, pagecount, all_scores = document_compare.compare_pdf_using_images(
                            row['id'], outdir)
                        config.DB.update('scores',
                                         where='id="' + str(i.uid) +
                                         '" AND commitsha="' +
                                         str(r['commitsha']) + '"',
                                         olscore=score[0],
                                         ollscore=score[1],
                                         olwscore=score[2],
                                         details=str(all_scores).strip('[]'))
                else:
                    shutil.copy(
                        os.getcwd() + '/static/originals/' + str(i.uid) +
                        row['extension'], '/tmp/')

                    if results[0].total_version == len(lo):
                        config.DB.delete('scores',
                                         where='id = "' + str(i.uid) + '"')
                        a = threading.Thread(target=worker,
                                             args=(
                                                 '/tmp/' + str(i.uid) +
                                                 row['extension'],
                                                 False,
                                             ))
                        a.start()
                    else:
                        a = threading.Thread(target=worker,
                                             args=(
                                                 '/tmp/' + str(i.uid) +
                                                 row['extension'],
                                                 True,
                                             ))
                        a.start()

            return render.base(view.listing())
Пример #4
0
def worker(tempfile, only_add_missing):
    baseoutdir = os.getcwd() + '/static/'
    uid = document_compare.init_document_compare(tempfile, baseoutdir)

    for libreoffice in lo:
        sha = document_compare.get_libreoffice_sha(libreoffice)
        outdir = baseoutdir + sha + '/'

        if only_add_missing:
            results = config.DB.select('scores',
                                       dict(n=str(uid)),
                                       where="id=$n AND commitsha='" +
                                       str(sha) + "'")
            if len(results.list()) > 0:
                continue

        b, ext = os.path.splitext(tempfile)
        filename = uid + ext

        document_compare.generate_pdf_for_doc(
            baseoutdir + 'originals/' + filename, uid, libreoffice, outdir)
        document_compare.generate_fullres_images_from_pdf(
            filename, uid, outdir)
        score, pagecount, all_scores = document_compare.compare_pdf_using_images(
            uid, outdir)
        # Update page count
        config.DB.update('items',
                         where='id="' + str(uid) + '"',
                         pagecount=pagecount)
        # Update score
        config.DB.insert('scores',
                         id=str(uid),
                         commitsha=sha,
                         olscore=score[0],
                         ollscore=score[1],
                         olwscore=score[2],
                         details=str(all_scores).strip('[]'))

    os.remove(tempfile)