Adding Movie Series CRUD Functionality
#controllers/dashboard/movie.py
import config, copy, lib, datetime, uuid, json
from flask import render_template, session, request, redirect
from models.seriesdb import Seriesdb
class Series():
def __init__(self):
self.lib = lib.Lib()
self.seriesdb = Seriesdb()
def get_post(self):
vdict = copy.deepcopy(config.vdict)
vdict['site_title'] = "ទំព័រភាពយន្តភាគ"
vdict['datetime'] = self.lib.get_timezone()
session['page'] = 0
if (request.method == "POST") and ('logged-in' in session):
title = request.form['ftitle']
content = request.form['fcontent']
playlist = request.form['fplaylist']
country = request.form['fcountry']
date = request.form['fdate']
time = request.form['ftime']
author = session['logged-in']
ending = request.form['fend']
edit_id = request.form['fedit-id']
print(edit_id)
try:
date = datetime.datetime.strptime(date, "%d/%m/%Y")
except ValueError:
vdict['message'] = 'ទំរង់កាលបរិច្ឆេទមិនត្រឹមត្រូវ!'
return render_template('dashboard/series.html', data=vdict)
try:
time = datetime.datetime.strptime(time, "%H:%M:%S")
except ValueError:
vdict['message'] = 'ទំរង់ពេលវេលាមិនត្រឹមត្រូវ!'
return render_template('dashboard/series.html', data=vdict)
if edit_id:
self.seriesdb.update(playlist, title, country, content, date, time, author, ending, edit_id)
else:
id = str(uuid.uuid4().int)
self.seriesdb.insert(id, playlist, title, country, content, date, time, author, ending)
vdict['series'] = self.seriesdb.select(vdict['dashboard_max_post'])
vdict['count'] = self.seriesdb.count()
vdict['thumbs'] = self.lib.get_thumbs(vdict['series'], 4, type='movie')
return render_template('dashboard/series.html', data=vdict)
elif 'logged-in' in session:
vdict['series'] = self.seriesdb.select(vdict['dashboard_max_post'])
vdict['count'] = self.seriesdb.count()
vdict['thumbs'] = self.lib.get_thumbs(vdict['series'], 4, type='movie')
return render_template('dashboard/series.html', data=vdict)
else:
return redirect('/login/')
def edit(self, id):
vdict = copy.deepcopy(config.vdict)
vdict['site_title'] = 'កែតំរូវភាពយន្តភាគ'
vdict['edit-id'] = id
if 'logged-in' in session:
vdict['series'] = self.seriesdb.select(vdict['dashboard_max_post'])
vdict['count'] = self.seriesdb.count()
vdict['thumbs'] = self.lib.get_thumbs(vdict['series'], 4, type='movie')
vdict['serie'] = self.seriesdb.select(id=id)
date = (vdict['serie'][5]).strftime('%d/%m/%Y')
time = (vdict['serie'][6]).strftime('%H:%M:%S')
vdict['datetime'] = (date, time)
return render_template('dashboard/series.html', data=vdict)
return redirect('/login/')
def delete(self, id):
self.seriesdb.delete(id)
return redirect('/dashboard/series/')
def load(self):
if 'logged-in' in session:
vdict = copy.deepcopy(config.vdict)
session['page'] += 1
vdict['series'] = self.seriesdb.select(vdict['dashboard_max_post'], page=session['page'])
vdict['thumbs'] = self.lib.get_thumbs(vdict['series'], 4, type="movie")
new_list = []
for serie in vdict['series']:
new_serie = list(serie)
new_serie[5] = serie[5].strftime('%d/%m/%Y')
new_serie[6] = serie[6].strftime('%H:%M:%S')
new_list.append(new_serie)
vdict['series'] = new_list
return vdict
else:
return render_template('login.html', data=vdict)
#models/seriesdb.py
import os, psycopg2
class Seriesdb():
def __init__(self):
self.create_table()
def set_conection(self):
if 'DYNO' in os.environ:
DATABASE_URL = os.environ['DATABASE_URL']
self.conn = psycopg2.connect(DATABASE_URL, sslmode='require')
self.cursor = self.conn.cursor()
else:
self.conn = psycopg2.connect(
database="postgres",
user="postgres",
password="sokhavuth",
host="localhost",
port="5432"
)
self.cursor = self.conn.cursor()
def create_table(self):
self.set_conection()
SQL = '''CREATE TABLE IF NOT EXISTS SERIES(
ID TEXT,
VIDTYPE TEXT,
TITLE TEXT,
COUNTRY TEXT,
CONTENT TEXT,
CDATE DATE,
CTIME TIME,
AUTHOR TEXT,
ENDING TEXT
)'''
self.cursor.execute(SQL)
self.conn.commit()
self.conn.close()
def insert(self, *series):
self.set_conection()
self.cursor.execute("INSERT INTO SERIES (ID, VIDTYPE, TITLE, COUNTRY, CONTENT, CDATE, CTIME, AUTHOR, ENDING) VALUES %s ", (series,))
self.conn.commit()
self.conn.close()
def select(self, amount=5, id='', page=0, random=False, type=None, label=''):
self.set_conection()
if id:
SQL = "SELECT * FROM SERIES WHERE ID=%s"
self.cursor.execute(SQL, (id,))
result = self.cursor.fetchone()
elif page and label:
if label == "all":
SQL = "SELECT * FROM SERIES ORDER BY CDATE DESC, CTIME DESC OFFSET %s ROWS FETCH NEXT %s ROWS ONLY"
else:
SQL = "SELECT * FROM SERIES WHERE COUNTRY = '"+label+"' ORDER BY CDATE DESC, CTIME DESC OFFSET %s ROWS FETCH NEXT %s ROWS ONLY"
self.cursor.execute(SQL, (amount*page, amount))
result = self.cursor.fetchall()
elif page:
SQL = "SELECT * FROM SERIES ORDER BY CDATE DESC, CTIME DESC OFFSET %s ROWS FETCH NEXT %s ROWS ONLY"
self.cursor.execute(SQL, (amount*page, amount))
result = self.cursor.fetchall()
elif random:
SQL = "SELECT * FROM SERIES WHERE ID != %s ORDER BY RANDOM() LIMIT %s"
self.cursor.execute(SQL, (random, amount))
result = self.cursor.fetchall()
elif type:
SQL = "SELECT * FROM MOVIES WHERE TYPE = %S ORDER BY CDATE DESC, CTIME DESC LIMIT %s"
self.cursor.execute(SQL, (type, amount))
result = self.cursor.fetchall()
elif label:
if label == 'all':
SQL = "SELECT * FROM SERIES ORDER BY CDATE DESC, CTIME DESC LIMIT %s"
else:
SQL = "SELECT * FROM SERIES WHERE COUNTRY = '"+label+"' ORDER BY CDATE DESC, CTIME DESC LIMIT %s"
self.cursor.execute(SQL, (amount,))
result = self.cursor.fetchall()
else:
SQL = "SELECT * FROM SERIES ORDER BY CDATE DESC, CTIME DESC LIMIT %s"
self.cursor.execute(SQL, (amount,))
result = self.cursor.fetchall()
self.conn.close()
return result
def delete(self, id):
self.set_conection()
SQL = "DELETE FROM SERIES WHERE ID = %s"
self.cursor.execute(SQL, (id,))
self.conn.commit()
self.conn.close()
def update(self, *series):
self.set_conection()
sql = "UPDATE SERIES SET VIDTYPE = %s, TITLE = %s, COUNTRY = %s, CONTENT = %s, CDATE = %s, CTIME = %s, AUTHOR = %s, ENDING = %s WHERE ID = %s"
self.cursor.execute(sql, series)
self.conn.commit()
self.conn.close()
def count(self):
self.set_conection()
sql = "SELECT COUNT(*) FROM SERIES"
self.cursor.execute(sql)
result = self.cursor.fetchone()
self.conn.close()
return result[0]
def search(self, query):
self.set_conection()
sql = "SELECT * from USERS WHERE"
sql += " EMAIL LIKE '%"+query+"%'"
sql += " OR CONTENT LIKE '%"+query+"%'"
sql += " ORDER BY CATDATE DESC, CATTIME DESC LIMIT 20"
self.cursor.execute(sql)
result = self.cursor.fetchall()
return result
GitHub: "https://github.com/Sokhavuth/ETV
Heroku: https://khmerweb-etv.herokuapp.com/

Comments
Post a Comment