From af9a8eb81b4d2eb17443c1ed03c3f9557175f65d Mon Sep 17 00:00:00 2001 From: sqozz Date: Thu, 19 Feb 2015 00:50:18 +0100 Subject: [PATCH] implemented sqlite database backend --- .gitignore | 2 ++ indexer.py | 48 +++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 63ebf93..1fd8db3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,5 @@ backup uploadTest torrentFiles/* +torrentdb.sqlite +torrentdb.sql diff --git a/indexer.py b/indexer.py index 6930ba7..4128399 100644 --- a/indexer.py +++ b/indexer.py @@ -1,6 +1,6 @@ #!/usr/bin/python3 #/* vim:set ts=2 set noexpandtab */ -import json, uuid, hashlib +import json, uuid, hashlib, sqlite3, base64 from flask import Flask, render_template, url_for, request from werkzeug import secure_filename app = Flask(__name__) @@ -38,6 +38,15 @@ def init(): with open("settings.json") as settingsJson: settings = json.load(settingsJson) + initDb() + +def initDb(): + connection = sqlite3.connect("torrentdb.sqlite") + c = connection.cursor() + c.execute('CREATE TABLE IF NOT EXISTS torrents (fileid TEXT PRIMARY KEY NOT NULL, name TEXT NOT NULL, category TEXT NOT NULL, subcategory TEXT NOT NULL, description TEXT NOT NULL);') + c.execute('CREATE TABLE IF NOT EXISTS language_mapping (fileid TEXT NOT NULL, language TEXT NOT NULL);') + connection.commit() + connection.close() def getLocalString(language, descriptor): global strings @@ -63,8 +72,41 @@ def createNewTorrent(reuqest): print( "Category: " + request.form["category"] ) print( "Subcategory: " + request.form["subcategory"] ) print( "Description: " + request.form["description"] ) - # TODO: Process inputdate from the form and save it to the (until now) non-existing DB - return ["Error1", "Error2"] + + #TODO: Validate the input serverside before writing it to the database + name = request.form["name"] + category = request.form["category"] + subcategory = request.form["subcategory"] + description = request.form["description"] + languages = [] + newTFile = TorrentFile(safeFilename, name, category, subcategory, description, languages) + connection = sqlite3.connect("torrentdb.sqlite") + newTFile.writeToDb(connection.cursor()) + connection.commit() + connection.close() + return ["Error1"] + +class TorrentFile(): + fileid = None + name = None + category = None + subcategory = None + description = None + languages = [] + def __init__(self, fileid=fileid, name=name, category=category, subcategory=subcategory, description=description, languages=languages): + self.fileid = fileid + self.name = name + self.category = category + self.subcategory = subcategory + self.description = description + self.languages = languages + + def writeToDb(self, cursor): + c = cursor + b64description = base64.b64encode(self.description.encode()) + c.execute("INSERT INTO torrents(fileid, name, category, subcategory, description) VALUES(:fileid, :name, :category, :subcategory, :description)", { 'fileid' : self.fileid, 'name' : self.name, 'category' : self.category, 'subcategory' : self.subcategory, 'description' : b64description }) + for language in self.languages: + c.execute("INSERT INTO language_mapping(fileid, language)", { "fileid" : self.fileid, "language" : language }) if __name__ == "__main__": init()