implemented sqlite database backend
This commit is contained in:
		
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -3,3 +3,5 @@
 | 
			
		||||
backup
 | 
			
		||||
uploadTest
 | 
			
		||||
torrentFiles/*
 | 
			
		||||
torrentdb.sqlite
 | 
			
		||||
torrentdb.sql
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										48
									
								
								indexer.py
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								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()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user