Advertisement
Guest User

Untitled

a guest
Feb 17th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 95.34 KB | None | 0 0
  1. from flask import *
  2. import os
  3. from werkzeug.wrappers import BaseRequest
  4. from werkzeug.wsgi import responder
  5. from werkzeug.exceptions import HTTPException, NotFound
  6. from flask_wtf import Form,RecaptchaField
  7. from wtforms.widgets import TextArea, PasswordInput, SubmitInput, FileInput, TextInput, HiddenInput, CheckboxInput, \
  8. Option, RadioInput, Select
  9. from wtforms import StringField, PasswordField, BooleanField, IntegerField, RadioField, SubmitField, TextField, \
  10. SelectField, FileField, DateField, DateTimeField, TextAreaField
  11. from wtforms.validators import InputRequired, Length, AnyOf, Email, DataRequired
  12. from flask_sqlalchemy import SQLAlchemy
  13. from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
  14. from flask_bcrypt import Bcrypt,check_password_hash,generate_password_hash
  15. import re
  16. from werkzeug.utils import secure_filename
  17. from datetime import timezone, datetime, timedelta
  18. import requests
  19. import arrow
  20. from werkzeug.urls import url_parse
  21. import random
  22. import flask_excel as excel
  23. STATIC_FOLDER = os.path.join(os.path.dirname(__file__), "static")
  24. app = Flask(__name__, static_url_path="/static", static_folder=STATIC_FOLDER)
  25. app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///my_project.db'
  26. app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
  27. app.config['SECRET_KEY'] = "myproject"
  28. app.config['UPLOAD_FOLDER_IMAGE'] = 'static/img'
  29. #app.config['UPLOAD_FOLDER_videos'] = 'static/videos'
  30.  
  31.  
  32. db = SQLAlchemy(app)
  33. bcrypt = Bcrypt(app)
  34. excel.init_excel(app)
  35.  
  36. langs_dir = os.path.realpath(os.path.dirname(__file__))
  37. login_manager = LoginManager()
  38. login_manager.init_app(app)
  39. login_manager.login_view = 'login'
  40. #
  41. class Users(UserMixin,db.Model):
  42. __tablename__ = 'users'
  43. id = db.Column(db.BIGINT, unique=True,nullable=False,primary_key=True,autoincrement=True)
  44. username = db.Column(db.String(50), unique=True,nullable=False)
  45. password = db.Column(db.String(250),nullable=False)
  46. name = db.Column(db.String(50),nullable=False)
  47. email = db.Column(db.String(50), unique=False,nullable=False)
  48. type = db.Column(db.INTEGER,nullable=False)
  49. stop_user = db.Column(db.INTEGER,nullable=False)
  50. photo = db.Column(db.String(250),nullable=False)
  51. token_id = db.Column(db.String(250),nullable=False)
  52. created_at = db.Column(db.String(30),nullable=False)
  53. class Idea(db.Model):
  54. __tablename__ = 'ideas'
  55. id = db.Column(db.BIGINT, unique=True,nullable=False,primary_key=True,autoincrement=True)
  56. title = db.Column(db.String(50), unique=False,nullable=False)
  57. description = db.Column(db.String(5000),nullable=False)
  58. created_at = db.Column(db.String(30), nullable=False)
  59. who_user_add = db.Column(db.INTEGER, nullable=False)
  60. class Comment(db.Model):
  61. __tablename__ = 'comments'
  62. id = db.Column(db.BIGINT, unique=True,nullable=False,primary_key=True,autoincrement=True)
  63. idea_id = db.Column(db.BIGINT, unique=False,nullable=False)
  64. comment = db.Column(db.String(5000), nullable=False)
  65. created_at = db.Column(db.String(30), nullable=False)
  66. who_user_add = db.Column(db.INTEGER, nullable=False)
  67. class Group(db.Model):
  68. __tablename__ = 'groups'
  69. id = db.Column(db.BIGINT, unique=True,nullable=False,primary_key=True,autoincrement=True)
  70. idea_id = db.Column(db.BIGINT, unique=False,nullable=False)
  71. faculty_id = db.Column(db.BIGINT, unique=False, nullable=False)
  72. faculty_id_done = db.Column(db.BIGINT, unique=False, nullable=False)
  73. created_at = db.Column(db.String(30), nullable=False)
  74. who_user_add = db.Column(db.INTEGER, nullable=False)
  75. class Group_Member(db.Model):
  76. __tablename__ = 'Group_Member'
  77. id = db.Column(db.BIGINT, unique=True,nullable=False,primary_key=True,autoincrement=True)
  78. idea_id = db.Column(db.BIGINT, unique=False,nullable=False)
  79. student_id = db.Column(db.BIGINT, unique=False,nullable=False)
  80. student_id_done = db.Column(db.BIGINT, unique=False,nullable=False)
  81. created_at = db.Column(db.String(30), nullable=False)
  82. who_user_add = db.Column(db.INTEGER, nullable=False)
  83.  
  84. db.create_all()
  85.  
  86. class LoginForm(Form):
  87. username = StringField('username', validators=[InputRequired('A description is required!'),
  88. Length(min=4, max=12, message='Must be between 5 and 10 characters.')],widget=TextInput())
  89.  
  90. @login_manager.user_loader
  91. def load_user(token_id):
  92. return Users.query.get(str(token_id))
  93.  
  94. def random_string(size=100000):
  95. return ''.join(random.choice("aMNO9bdeRS4fghKLijklBmnPop3TUqEF1rs9AcGHXYZVWtuvCDwxyz175IJQ") for x in range(size))
  96. def random_number(size=100000):
  97. return ''.join(random.choice("0123456789") for x in range(size))
  98.  
  99. def username_filter(variable):
  100. return re.sub('[^A-Za-z0-9_]','' ,str(variable))
  101. def img_filter(variable):
  102. return re.sub('[^A-Za-z0-9_#.]','' ,str(variable))
  103. def name_ar_filter(variable):
  104. return re.sub('[^A-Za-z0-9_\w ]','' ,str(variable))
  105. def password_filter(variable):
  106. return re.sub('[^A-Za-z0-9_@$?]','' ,str(variable))
  107. def email_filter(variable):
  108. email_regex = r"(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)"
  109. return bool(re.match(email_regex, variable))
  110. def number_filter(variable):
  111. return re.sub('[^0-9]','' ,str(variable))
  112. def date_filter(variable):
  113. return re.sub('[^0-9-]','' ,str(variable))
  114.  
  115. allowedExtensions = set(['jpg', 'jpeg', 'png', 'gif', 'tiff', 'bmp', 'svg'])
  116. def allowed(file):
  117. extension = file.rsplit('.', 1)[1].lower()
  118. return extension in allowedExtensions
  119.  
  120. @app.before_request
  121. def make_session_permanent():
  122. session.permanent = True
  123. app.permanent_session_lifetime = timedelta(minutes=30)#
  124.  
  125. def view(request):
  126. raise NotFound()
  127.  
  128. @responder
  129. def application(environ, start_response):
  130. request = BaseRequest(environ)
  131. try:
  132. return view(request)
  133. except HTTPException as e:
  134. return e
  135.  
  136. date_now = arrow.now('Asia/Riyadh').format('YYYY-MM-DD')
  137. time_now = arrow.now('Asia/Riyadh').format('HH:mm')
  138. year_now = arrow.now('Asia/Riyadh').format('YYYY')
  139. month_now = arrow.now('Asia/Riyadh').format('MM')
  140. day_now = arrow.now('Asia/Riyadh').format('DD')
  141. #strat
  142. @app.errorhandler(400)
  143. def custom_400(error):
  144. try:
  145. return render_template("error_pages.html", error=400, year_now=year_now)
  146. except Exception as e:
  147. print("custom_400:{}".format(e))
  148. return error
  149. @app.errorhandler(401)
  150. def custom_401(error):
  151. try:
  152. return render_template("error_pages.html", error=401, year_now=year_now)
  153. except Exception as e:
  154. print("custom_401:{}".format(e))
  155. return error
  156. @app.errorhandler(403)
  157. def custom_403(error):
  158. try:
  159. return render_template("error_pages.html", error=403, year_now=year_now)
  160. except Exception as e:
  161. print("custom_403:{}".format(e))
  162. return error
  163.  
  164. @app.errorhandler(404)
  165. def custom_404(error):
  166. try:
  167. return render_template("error_pages.html", error=404, year_now=year_now)
  168. except Exception as e:
  169. print("custom_404:{}".format(e))
  170. return error
  171. @app.errorhandler(405)
  172. def custom_405(error):
  173. try:
  174. return render_template("error_pages.html", error=405, year_now=year_now)
  175. except Exception as e:
  176. print("custom_405:{}".format(e))
  177. return error
  178.  
  179. @app.errorhandler(406)
  180. def custom_406(error):
  181. try:
  182. return render_template("error_pages.html", error=406, year_now=year_now)
  183. except Exception as e:
  184. print("custom_406:{}".format(e))
  185. return error
  186. @app.errorhandler(408)
  187. def custom_408(error):
  188. try:
  189. return render_template("error_pages.html", error=408, year_now=year_now)
  190. except Exception as e:
  191. print("custom_408:{}".format(e))
  192. return error
  193. @app.errorhandler(409)
  194. def custom_409(error):
  195. try:
  196. return render_template("error_pages.html", error=409, year_now=year_now)
  197. except Exception as e:
  198. print("custom_409:{}".format(e))
  199. return error
  200. @app.errorhandler(410)
  201. def custom_410(error):
  202. try:
  203. return render_template("error_pages.html", error=410, year_now=year_now)
  204. except Exception as e:
  205. print("custom_410:{}".format(e))
  206. return error
  207. @app.errorhandler(411)
  208. def custom_411(error):
  209. try:
  210. return render_template("error_pages.html", error=411, year_now=year_now)
  211. except Exception as e:
  212. print("custom_411:{}".format(e))
  213. return error
  214. @app.errorhandler(412)
  215. def custom_412(error):
  216. try:
  217. return render_template("error_pages.html", error=412, year_now=year_now)
  218. except Exception as e:
  219. print("custom_412:{}".format(e))
  220. return error
  221. @app.errorhandler(413)
  222. def custom_413(error):
  223. try:
  224. return render_template("error_pages.html", error=413, year_now=year_now)
  225. except Exception as e:
  226. print("custom_413:{}".format(e))
  227. return error
  228. @app.errorhandler(414)
  229. def custom_414(error):
  230. try:
  231. return render_template("error_pages.html", error=414, year_now=year_now)
  232. except Exception as e:
  233. print("custom_414:{}".format(e))
  234. return error
  235. @app.errorhandler(415)
  236. def custom_415(error):
  237. try:
  238. return render_template("error_pages.html", error=415, year_now=year_now)
  239. except Exception as e:
  240. print("custom_415:{}".format(e))
  241. return error
  242. @app.errorhandler(416)
  243. def custom_416(error):
  244. try:
  245. return render_template("error_pages.html", error=416, year_now=year_now)
  246. except Exception as e:
  247. print("custom_416:{}".format(e))
  248. return error
  249. @app.errorhandler(417)
  250. def custom_417(error):
  251. try:
  252. return render_template("error_pages.html", error=417, year_now=year_now)
  253. except Exception as e:
  254. print("custom_417:{}".format(e))
  255. return error
  256. @app.errorhandler(418)
  257. def custom_418(error):
  258. try:
  259. return render_template("error_pages.html", error=418, year_now=year_now)
  260. except Exception as e:
  261. print("custom_418:{}".format(e))
  262. return error
  263. @app.errorhandler(428)
  264. def custom_428(error):
  265. try:
  266. return render_template("error_pages.html", error=428, year_now=year_now)
  267. except Exception as e:
  268. print("custom_428:{}".format(e))
  269. return error
  270. @app.errorhandler(429)
  271. def custom_429(error):
  272. try:
  273. return render_template("error_pages.html", error=429, year_now=year_now)
  274. except Exception as e:
  275. print("custom_429:{}".format(e))
  276. return error
  277. @app.errorhandler(431)
  278. def custom_431(error):
  279. try:
  280. return render_template("error_pages.html", error=431, year_now=year_now)
  281. except Exception as e:
  282. print("custom_431:{}".format(e))
  283. return error
  284. @app.errorhandler(500)
  285. def custom_500(error):
  286. try:
  287. return render_template("error_pages.html", error=500, year_now=year_now)
  288. except Exception as e:
  289. print("custom_500:{}".format(e))
  290. return error
  291. @app.errorhandler(501)
  292. def custom_501(error):
  293. try:
  294. return render_template("error_pages.html", error=501, year_now=year_now)
  295. except Exception as e:
  296. print("custom_501:{}".format(e))
  297. return error
  298. @app.errorhandler(502)
  299. def custom_502(error):
  300. try:
  301. return render_template("error_pages.html", error=502, year_now=year_now)
  302. except Exception as e:
  303. print("custom_502:{}".format(e))
  304. return error
  305. @app.errorhandler(503)
  306. def custom_503(error):
  307. try:
  308. return render_template("error_pages.html", error=503, year_now=year_now)
  309. except Exception as e:
  310. print("custom_503:{}".format(e))
  311. return error
  312. @app.route("/", methods=['GET', 'POST'])
  313. def index():
  314. return render_template("index.html", error=503, year_now=year_now)
  315.  
  316.  
  317. @app.route("/login/", methods=['GET', 'POST'])
  318. def login():
  319. if "id" in session:
  320. return redirect(url_for("dashboard"))
  321. else:
  322. try:
  323. form = LoginForm(request.form)
  324. token = random_string(250)
  325. if request.method == "POST":
  326. if len(request.form['username']) == 0:
  327. return render_template("login.html", error="Enter username", form=form, year_now=year_now)
  328. elif len(request.form['password']) == 0:
  329. return render_template("login.html", error="Enter password", form=form, year_now=year_now)
  330. else:
  331. user = Users.query.filter_by(username=username_filter(request.form['username'])).first()
  332. if user and bcrypt.check_password_hash(user.password, password_filter(request.form['password'])):
  333. if user.type == 0:
  334. if user.stop_user == 0:
  335. session['admin'] = username_filter(request.form['username'])
  336. session['id'] = user.id
  337. session['type'] = user.type
  338. session['name'] = user.name
  339. user.token_id = token
  340. db.session.commit()
  341. login_user(user)
  342. session['token_id'] = user.token_id
  343. next_page = request.args.get('next')
  344. if not next_page or url_parse(next_page).netloc != '':
  345. return redirect(url_for("dashboard"))
  346. return redirect(next_page)
  347. else:
  348. return render_template("login.html", error="Your account is blocked", form=form, year_now=year_now)
  349. elif user.type == 2:
  350. print(user.id)
  351. if user.stop_user == 0:
  352. session['student'] = username_filter(request.form['username'])
  353. session['id'] = user.id
  354. session['type'] = user.type
  355. session['name'] = user.name
  356. user.token_id = token
  357. db.session.commit()
  358. login_user(user)
  359. session['token_id'] = user.token_id
  360. next_page = request.args.get('next')
  361. if not next_page or url_parse(next_page).netloc != '':
  362. return redirect(url_for("dashboard"))
  363. return redirect(next_page)
  364. else:
  365. return render_template("login.html", error="Your account is blocked", form=form, year_now=year_now)
  366. elif user.type ==1:
  367. if user.stop_user == 0:
  368. session['faculty'] = username_filter(request.form['username'])
  369. session['id'] = user.id
  370. session['type'] = user.type
  371. session['name'] = user.name
  372. user.token_id = token
  373. db.session.commit()
  374. login_user(user)
  375. session['token_id'] = user.token_id
  376. next_page = request.args.get('next')
  377. if not next_page or url_parse(next_page).netloc != '':
  378. return redirect(url_for("dashboard"))
  379. return redirect(next_page)
  380. else:
  381. return render_template("login.html", error="Your account is blocked", form=form, year_now=year_now)
  382. else:
  383. return render_template("login.html", error="Account not available", form=form,
  384. year_now=year_now)
  385. else:
  386. return render_template("login.html", error="Error username or password", form=form,
  387. year_now=year_now)
  388. else:
  389. return render_template("login.html", form=form, year_now=year_now)
  390. except Exception as e:
  391. print(e)
  392. return e
  393.  
  394. @app.route("/register/", methods=['GET', 'POST'])
  395. def register():
  396. if "id" in session:
  397. return redirect(url_for("login"))
  398. else:
  399. try:
  400. token = random_string(250)
  401. form = LoginForm(request.form)
  402. if request.method == "POST":
  403. if len(request.form['username']) == 0:
  404. return render_template("register.html", error="Enter username", form=form, year_now=year_now)
  405. elif len(request.form['password']) == 0:
  406. return render_template("register.html", error="Enter password", form=form, year_now=year_now)
  407. elif len(request.form['name']) == 0:
  408. return render_template("register.html", error="Enter name", form=form, year_now=year_now)
  409. elif len(request.form['email']) == 0:
  410. return render_template("register.html", error="Enter email", form=form, year_now=year_now)
  411. else:
  412. use = Users.query.filter((Users.username == username_filter(request.form['username'])) |
  413. (Users.email == email_filter(request.form['email']))).count()
  414. if use == 0:
  415. new_user = Users(username=username_filter(request.form['username']),
  416. password=bcrypt.generate_password_hash(
  417. password_filter(request.form['password'])),
  418. email=request.form['email'],
  419. created_at="{} {}".format(date_now,time_now),
  420. stop_user=0,photo="index.png",
  421. type=number_filter(request.form['type']), token_id=token,
  422. name=name_ar_filter(request.form['name']))
  423.  
  424. db.session.add(new_user)
  425. db.session.commit()
  426. user=Users.query.filter_by(username=username_filter(request.form['username'])).first()
  427. if user.type == 1:
  428. session['faculty'] =user.username
  429. session['id'] = user.id
  430. session['type'] = user.type
  431. session['token_id'] = user.token_id
  432. session['name'] = user.name
  433. login_user(user)
  434. return redirect(url_for("dashboard"))
  435. elif user.type == 2:
  436. session['student'] = username_filter(request.form['username'])
  437. session['id'] = user.id
  438. session['type'] = user.type
  439. session['token_id'] = user.token_id
  440. session['name'] = user.name
  441. login_user(user)
  442. return redirect(url_for("dashboard"))
  443. else:
  444. return redirect(url_for("login"))
  445.  
  446. else:
  447. return render_template("register.html", form=form, year_now=year_now, error="Account already registered")
  448. else:
  449. return render_template("register.html", form=form, year_now=year_now)
  450. except Exception as e:
  451. print(e)
  452. return e
  453. @app.route("/dashboard/", methods=['GET', 'POST'])
  454. @login_required
  455. def dashboard():
  456. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  457. admin = Users.query.filter(
  458. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  459. (Users.id == session['id']) & (Users.type == session['type'])).first()
  460. if admin:
  461. users=Users.query.count()
  462. ideas=Idea.query.count()
  463. group=Group.query.count()
  464. group_Member=Group_Member.query.count()
  465. comment=Comment.query.count()
  466. return render_template("admin/dashboard.html",admin=admin,users=users,ideas=ideas,group=group,group_Member=group_Member,comment=comment)
  467. else:
  468. logout_user()
  469. session.clear()
  470. return redirect(url_for("login"))
  471. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  472. faculty = Users.query.filter(
  473. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  474. (Users.id == session['id']) & (Users.type == session['type'])).first()
  475. if faculty:
  476. return redirect(url_for("joins"))
  477. else:
  478. logout_user()
  479. session.clear()
  480. return redirect(url_for("login"))
  481. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  482. student = Users.query.filter(
  483. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  484. (Users.id == session['id']) & (Users.type == session['type'])).first()
  485. if student:
  486. return redirect(url_for("joins"))
  487. else:
  488. logout_user()
  489. session.clear()
  490. return redirect(url_for("login"))
  491. else:
  492. logout_user()
  493. session.clear()
  494. return redirect(url_for("login"))
  495. @app.route("/edit_my_profile/", methods=['GET', 'POST'])
  496. @login_required
  497. def edit_my_profile():
  498. form = LoginForm(request.form)
  499. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  500. admin = Users.query.filter(
  501. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  502. (Users.id == session['id']) & (Users.type == session['type'])).first()
  503. if admin:
  504. if request.method == 'POST':
  505. if 'profile_photo' not in request.files:
  506. if not request.form['password']:
  507. admin.username = username_filter(request.form['username'])
  508. admin.email = request.form['email']
  509. admin.name = name_ar_filter(request.form['name'])
  510. db.session.commit()
  511. session['name'] = name_ar_filter(request.form['name'])
  512. session['admin'] = username_filter(request.form['username'])
  513. return render_template("admin/edit_my_profile.html", admin=admin,
  514. mass="Your profile has been updated successfully", form=form,
  515. year_now=year_now)
  516. else:
  517. admin.username = username_filter(request.form['username'])
  518. admin.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  519. admin.email = request.form['email']
  520. admin.name = name_ar_filter(request.form['name'])
  521. db.session.commit()
  522. session['name'] = name_ar_filter(request.form['name'])
  523. session['admin'] = username_filter(request.form['username'])
  524. return render_template("admin/edit_my_profile.html",
  525. mass="Your profile has been updated successfully", form=form,
  526. admin=admin,
  527. year_now=year_now)
  528. if request.files['profile_photo'].filename == '':
  529. return redirect(request.url)
  530. if request.files['profile_photo']:
  531. filename = secure_filename(request.files['profile_photo'].filename)
  532. rand = random_string(8)
  533. photo = "{}_{}".format(rand, img_filter(filename))
  534. request.files['profile_photo'].save(os.path.join(app.config['UPLOAD_FOLDER_IMAGE'], photo))
  535. if not request.form['password']:
  536. admin.photo=photo
  537. admin.username=username_filter(request.form['username'])
  538. admin.email = request.form['email']
  539. admin.name = name_ar_filter(request.form['name'])
  540. db.session.commit()
  541. session['name'] = name_ar_filter(request.form['name'])
  542. session['admin'] = username_filter(request.form['username'])
  543. return render_template("admin/edit_my_profile.html",admin=admin,mass="Your profile has been updated successfully",form=form,year_now=year_now)
  544. else:
  545. admin.photo = photo
  546. admin.username = username_filter(request.form['username'])
  547. admin.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  548. admin.email = request.form['email']
  549. admin.name = name_ar_filter(request.form['name'])
  550. db.session.commit()
  551. session['name'] = name_ar_filter(request.form['name'])
  552. session['admin'] = username_filter(request.form['username'])
  553. return render_template("admin/edit_my_profile.html",admin=admin,
  554. mass="Your profile has been updated successfully", form=form,
  555. year_now=year_now)
  556. else:
  557. return render_template("admin/edit_my_profile.html",
  558. mass="Your profile has been updated successfully", form=form,admin=admin,
  559. year_now=year_now)
  560. else:
  561. return render_template("admin/edit_my_profile.html", form=form, year_now=year_now,admin=admin)
  562. else:
  563. logout_user()
  564. session.clear()
  565. return redirect(url_for("login"))
  566. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  567. faculty = Users.query.filter(
  568. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  569. (Users.id == session['id']) & (Users.type == session['type'])).first()
  570. if faculty:
  571. if request.method == 'POST':
  572. if 'profile_photo' not in request.files:
  573. if not request.form['password']:
  574. faculty.username = username_filter(request.form['username'])
  575. faculty.email = request.form['email']
  576. faculty.name = name_ar_filter(request.form['name'])
  577. db.session.commit()
  578. session['name'] = name_ar_filter(request.form['name'])
  579. session['faculty'] = username_filter(request.form['username'])
  580. return render_template("faculty/edit_my_profile.html", faculty=faculty,
  581. mass="Your profile has been updated successfully", form=form,
  582. year_now=year_now)
  583. else:
  584. faculty.username = username_filter(request.form['username'])
  585. faculty.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  586. faculty.email = request.form['email']
  587. faculty.name = name_ar_filter(request.form['name'])
  588. db.session.commit()
  589. session['name'] = name_ar_filter(request.form['name'])
  590. session['admin'] = username_filter(request.form['username'])
  591. return render_template("faculty/edit_my_profile.html",
  592. mass="Your profile has been updated successfully", form=form,
  593. faculty=faculty,
  594. year_now=year_now)
  595. if request.files['profile_photo'].filename == '':
  596. return redirect(request.url)
  597. if request.files['profile_photo']:
  598. filename = secure_filename(request.files['profile_photo'].filename)
  599. rand = random_string(8)
  600. photo = "{}_{}".format(rand, img_filter(filename))
  601. request.files['profile_photo'].save(os.path.join(app.config['UPLOAD_FOLDER_IMAGE'], photo))
  602. if not request.form['password']:
  603. faculty.photo = photo
  604. faculty.username = username_filter(request.form['username'])
  605. faculty.email = request.form['email']
  606. faculty.name = name_ar_filter(request.form['name'])
  607. db.session.commit()
  608. session['name'] = name_ar_filter(request.form['name'])
  609. session['faculty'] = username_filter(request.form['username'])
  610. return render_template("faculty/edit_my_profile.html", faculty=faculty,
  611. mass="Your profile has been updated successfully", form=form,
  612. year_now=year_now)
  613. else:
  614. use = Users.query.filter((Users.username == username_filter(request.form['username'])) |
  615. (Users.email == number_filter(request.form['email']))).first()
  616. if use.username == session['admin'] or use.name == session['name']:
  617. faculty.photo = photo
  618. faculty.username = username_filter(request.form['username'])
  619. faculty.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  620. faculty.email = request.form['email']
  621. faculty.name = name_ar_filter(request.form['name'])
  622. db.session.commit()
  623. session['name'] = name_ar_filter(request.form['name'])
  624. session['faculty'] = username_filter(request.form['username'])
  625. return render_template("faculty/edit_my_profile.html", faculty=faculty,
  626. mass="Your profile has been updated successfully", form=form,
  627. year_now=year_now)
  628. else:
  629. return render_template("faculty/edit_my_profile.html", faculty=faculty,
  630. mass="Sorry some data is registered to another account", form=form,
  631. year_now=year_now)
  632.  
  633. else:
  634. return render_template("faculty/edit_my_profile.html",
  635. mass="Your profile has been updated successfully", form=form, faculty=faculty,
  636. year_now=year_now)
  637. else:
  638. return render_template("faculty/edit_my_profile.html", form=form, year_now=year_now, faculty=faculty)
  639. else:
  640. logout_user()
  641. session.clear()
  642. return redirect(url_for("login"))
  643. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  644. student = Users.query.filter(
  645. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  646. (Users.id == session['id']) & (Users.type == session['type'])).first()
  647. if student:
  648. if request.method == 'POST':
  649. if 'profile_photo' not in request.files:
  650. if not request.form['password']:
  651. student.username = username_filter(request.form['username'])
  652. student.email = request.form['email']
  653. student.name = name_ar_filter(request.form['name'])
  654. db.session.commit()
  655. session['name'] = name_ar_filter(request.form['name'])
  656. session['student'] = username_filter(request.form['username'])
  657. return render_template("student/edit_my_profile.html", student=student,
  658. mass="Your profile has been updated successfully", form=form,
  659. year_now=year_now)
  660. else:
  661. student.username = username_filter(request.form['username'])
  662. student.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  663. student.email = request.form['email']
  664. student.name = name_ar_filter(request.form['name'])
  665. db.session.commit()
  666. session['name'] = name_ar_filter(request.form['name'])
  667. session['student'] = username_filter(request.form['username'])
  668. return render_template("student/edit_my_profile.html",
  669. mass="Your profile has been updated successfully", form=form,
  670. student=student,
  671. year_now=year_now)
  672. if request.files['profile_photo'].filename == '':
  673. return redirect(request.url)
  674. if request.files['profile_photo']:
  675. filename = secure_filename(request.files['profile_photo'].filename)
  676. rand = random_string(8)
  677. photo = "{}_{}".format(rand, img_filter(filename))
  678. request.files['profile_photo'].save(os.path.join(app.config['UPLOAD_FOLDER_IMAGE'], photo))
  679. if not request.form['password']:
  680. student.photo = photo
  681. student.username = username_filter(request.form['username'])
  682. student.email = request.form['email']
  683. student.name = name_ar_filter(request.form['name'])
  684. db.session.commit()
  685. session['name'] = name_ar_filter(request.form['name'])
  686. session['student'] = username_filter(request.form['username'])
  687. return render_template("student/edit_my_profile.html", student=student,
  688. mass="Your profile has been updated successfully", form=form,
  689. year_now=year_now)
  690. else:
  691. student.photo = photo
  692. student.username = username_filter(request.form['username'])
  693. student.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  694. student.email = request.form['email']
  695. student.name = name_ar_filter(request.form['name'])
  696. db.session.commit()
  697. session['name'] = name_ar_filter(request.form['name'])
  698. session['student'] = username_filter(request.form['username'])
  699. return render_template("student/edit_my_profile.html", student=student,
  700. mass="Your profile has been updated successfully", form=form,
  701. year_now=year_now)
  702.  
  703. else:
  704. return render_template("student/edit_my_profile.html",
  705. mass="Your profile has been updated successfully", form=form, student=student,
  706. year_now=year_now)
  707. else:
  708. return render_template("student/edit_my_profile.html", form=form, year_now=year_now, student=student)
  709. else:
  710. logout_user()
  711. session.clear()
  712. return redirect(url_for("login"))
  713. else:
  714. logout_user()
  715. session.clear()
  716. return redirect(url_for("login"))
  717. @app.route("/edit_user_profile/<id>", methods=['GET', 'POST'])
  718. @login_required
  719. def edit_user_profile(id):
  720. form = LoginForm(request.form)
  721. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  722. admin = Users.query.filter(
  723. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  724. (Users.id == session['id']) & (Users.type == session['type'])).first()
  725. if admin:
  726. user=Users.query.filter_by(id=id).first()
  727. if request.method == 'POST':
  728. if 'profile_photo' not in request.files:
  729. if not request.form['password']:
  730. user.username = username_filter(request.form['username'])
  731. user.email = request.form['email']
  732. user.name = name_ar_filter(request.form['name'])
  733. db.session.commit()
  734. return render_template("admin/users/edit_user_profile.html", admin=admin,user=user,
  735. mass="User profile has been updated successfully", form=form,
  736. year_now=year_now)
  737. else:
  738. user.username = username_filter(request.form['username'])
  739. user.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  740. user.email = request.form['email']
  741. user.name = name_ar_filter(request.form['name'])
  742. db.session.commit()
  743. return render_template("admin/users/edit_user_profile.html",user=user,
  744. mass="Your profile has been updated successfully", form=form,
  745. admin=admin,
  746. year_now=year_now)
  747. if request.files['profile_photo'].filename == '':
  748. return redirect(request.url)
  749. if request.files['profile_photo']:
  750. filename = secure_filename(request.files['profile_photo'].filename)
  751. rand = random_string(8)
  752. photo = "{}_{}".format(rand, img_filter(filename))
  753. request.files['profile_photo'].save(os.path.join(app.config['UPLOAD_FOLDER_IMAGE'], photo))
  754. if not request.form['password']:
  755. user.photo=photo
  756. user.username=username_filter(request.form['username'])
  757. user.email = request.form['email']
  758. user.name = name_ar_filter(request.form['name'])
  759. db.session.commit()
  760. return render_template("admin/edit_my_profile.html",user=user,admin=admin,mass="User profile has been updated successfully",form=form,year_now=year_now)
  761. else:
  762. user.photo = photo
  763. user.username = username_filter(request.form['username'])
  764. user.password = bcrypt.generate_password_hash(password_filter(request.form['password']))
  765. user.email = request.form['email']
  766. user.name = name_ar_filter(request.form['name'])
  767. db.session.commit()
  768. return render_template("admin/users/edit_user_profile.html",admin=admin,user=user,
  769. mass="User profile has been updated successfully", form=form,
  770. year_now=year_now)
  771. else:
  772. return render_template("admin/users/edit_user_profile.html",user=user,
  773. mass="User profile has been updated successfully", form=form,admin=admin,
  774. year_now=year_now)
  775. else:
  776. return render_template("admin/users/edit_user_profile.html", user=user,form=form, year_now=year_now,admin=admin)
  777. else:
  778. logout_user()
  779. session.clear()
  780. return redirect(url_for("login"))
  781. else:
  782. logout_user()
  783. session.clear()
  784. return redirect(url_for("login"))
  785. @app.route("/status/<id>/<status>", methods=['GET', 'POST'])
  786. @login_required
  787. def status(status,id):
  788. form = LoginForm(request.form)
  789. user = Users.query.filter_by(id=id).first()
  790. data = Users.query.all()
  791. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  792. admin = Users.query.filter(
  793. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  794. (Users.id == session['id']) & (Users.type == session['type'])).first()
  795. if admin:
  796. if status=="active":
  797. user.stop_user = 0
  798. db.session.commit()
  799. elif status == "inactive":
  800. user.stop_user = 1
  801. db.session.commit()
  802. return render_template("admin/users/users.html", admin=admin, user=user,
  803. mass="User profile has been updated successfully", form=form,
  804. year_now=year_now,data=data)
  805. else:
  806. logout_user()
  807. session.clear()
  808. return redirect(url_for("login"))
  809. else:
  810. logout_user()
  811. session.clear()
  812. return redirect(url_for("login"))
  813. @app.route("/users/", methods=['GET', 'POST'])
  814. @login_required
  815. def users():
  816. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  817. admin = Users.query.filter(
  818. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  819. (Users.id == session['id']) & (Users.type == session['type'])).first()
  820. if admin:
  821. data = Users.query.all()
  822. return render_template("admin/users/users.html",admin=admin,data=data)
  823. else:
  824. logout_user()
  825. session.clear()
  826. return redirect(url_for("login"))
  827. else:
  828. logout_user()
  829. session.clear()
  830. return redirect(url_for("login"))
  831. @app.route("/add_new_user/", methods=['GET', 'POST'])
  832. @login_required
  833. def add_new_user():
  834. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  835. admin = Users.query.filter(
  836. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  837. (Users.id == session['id']) & (Users.type == session['type'])).first()
  838. if admin:
  839. token = random_string(250)
  840. form = LoginForm(request.form)
  841. if request.method == "POST":
  842. if len(request.form['username']) == 0:
  843. return render_template("admin/users/add_new_user.html", error="Enter username", form=form, year_now=year_now,
  844. admin=admin)
  845. elif len(request.form['password']) == 0:
  846. return render_template("admin/users/add_new_user.html", error="Enter password", form=form, year_now=year_now,
  847. admin=admin)
  848. elif len(request.form['name']) == 0:
  849. return render_template("admin/users/add_new_user.html", error="Enter name", form=form, year_now=year_now,
  850. admin=admin)
  851. elif len(request.form['email']) == 0:
  852. return render_template("admin/users/add_new_user.html", error="Enter email", form=form, year_now=year_now,
  853. admin=admin)
  854. else:
  855. use = Users.query.filter((Users.username == username_filter(request.form['username'])) |
  856. (Users.email == number_filter(request.form['email']))).count()
  857. if use == 0:
  858. new_user = Users(username=username_filter(request.form['username']),
  859. password=bcrypt.generate_password_hash(
  860. password_filter(request.form['password'])),
  861. email=request.form['email'],
  862. created_at="{} {}".format(date_now, time_now),
  863. stop_user=0, photo="index.png",
  864. type=number_filter(request.form['type']), token_id=token,
  865. name=name_ar_filter(request.form['name']))
  866.  
  867. db.session.add(new_user)
  868. db.session.commit()
  869. return render_template("admin/users/add_new_user.html", form=form, year_now=year_now,
  870.  
  871. error="ADD", admin=admin)
  872. else:
  873. return render_template("admin/users/add_new_user.html", form=form, year_now=year_now,
  874. error="Account already registered", admin=admin)
  875. else:
  876. return render_template("admin/users/add_new_user.html", form=form, year_now=year_now, admin=admin)
  877. else:
  878. logout_user()
  879. session.clear()
  880. return redirect(url_for("login"))
  881. else:
  882. logout_user()
  883. session.clear()
  884. return redirect(url_for("login"))
  885. @app.route("/add_new_idea/", methods=['GET', 'POST'])
  886. @login_required
  887. def add_new_idea():
  888. form = LoginForm(request.form)
  889. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  890. admin = Users.query.filter(
  891. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  892. (Users.id == session['id']) & (Users.type == session['type'])).first()
  893. if admin:
  894. if request.method == "POST":
  895. if len(request.form['title']) == 0:
  896. return render_template("admin/ideas/add_new_idea.html", error="Enter title", form=form, year_now=year_now,
  897. admin=admin)
  898. elif len(request.form['description']) == 0:
  899. return render_template("admin/ideas/add_new_idea.html", error="Enter description", form=form, year_now=year_now,
  900. admin=admin)
  901. else:
  902. new_idea = Idea(title=name_ar_filter(request.form['title']),
  903. description=name_ar_filter(request.form['description']),
  904. created_at="{} {}".format(date_now, time_now), who_user_add=admin.id)
  905.  
  906. db.session.add(new_idea)
  907. db.session.commit()
  908. return render_template("admin/ideas/add_new_idea.html", form=form, year_now=year_now,
  909.  
  910. error="Your idea has been successfully added", admin=admin)
  911. else:
  912. return render_template("admin/ideas/add_new_idea.html", form=form, year_now=year_now, admin=admin)
  913. else:
  914. logout_user()
  915. session.clear()
  916. return redirect(url_for("login"))
  917. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  918. faculty = Users.query.filter(
  919. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  920. (Users.id == session['id']) & (Users.type == session['type'])).first()
  921. if faculty:
  922. if request.method == "POST":
  923. check_add_idea = Idea.query.filter_by(who_user_add=session['id']).count()
  924. if check_add_idea != 0:
  925. return render_template("faculty/ideas/add_new_idea.html", form=form, year_now=year_now,
  926. faculty=faculty, e="You have a pre-recorded idea")
  927. else:
  928. if len(request.form['title']) == 0:
  929. return render_template("faculty/ideas/add_new_idea.html", error="Enter title", form=form,
  930. year_now=year_now,
  931. faculty=faculty)
  932. elif len(request.form['description']) == 0:
  933. return render_template("faculty/ideas/add_new_idea.html", error="Enter description", form=form,
  934. year_now=year_now,
  935. faculty=faculty)
  936. else:
  937. new_idea = Idea(title=name_ar_filter(request.form['title']),
  938. description=name_ar_filter(request.form['description']),
  939. created_at="{} {}".format(date_now, time_now), who_user_add=faculty.id)
  940.  
  941. db.session.add(new_idea)
  942. db.session.commit()
  943. return render_template("faculty/ideas/add_new_idea.html", form=form, year_now=year_now,
  944.  
  945. error="Your idea has been successfully added", faculty=faculty)
  946. else:
  947. check_add_idea=Idea.query.filter_by(who_user_add = session['id']).count()
  948. if check_add_idea !=0:
  949. return render_template("faculty/ideas/add_new_idea.html", form=form, year_now=year_now, faculty=faculty,e="You have a pre-recorded idea")
  950. else:
  951. return render_template("faculty/ideas/add_new_idea.html", form=form, year_now=year_now,
  952. faculty=faculty)
  953. else:
  954. logout_user()
  955. session.clear()
  956. return redirect(url_for("login"))
  957. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  958. student = Users.query.filter(
  959. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  960. (Users.id == session['id']) & (Users.type == session['type'])).first()
  961. if student:
  962. if request.method == "POST":
  963. check_add_idea = Idea.query.filter_by(who_user_add=session['id']).count()
  964. if check_add_idea != 0:
  965. return render_template("faculty/ideas/add_new_idea.html", form=form, year_now=year_now,
  966. faculty=faculty, e="You have a pre-recorded idea")
  967. else:
  968. if len(request.form['title']) == 0:
  969. return render_template("student/ideas/add_new_idea.html", error="Enter title", form=form,
  970. year_now=year_now,
  971. student=student)
  972. elif len(request.form['description']) == 0:
  973. return render_template("student/ideas/add_new_idea.html", error="Enter description", form=form,
  974. year_now=year_now,
  975. student=student)
  976. else:
  977. new_idea = Idea(title=name_ar_filter(request.form['title']),
  978. description=name_ar_filter(request.form['description']),
  979. created_at="{} {}".format(date_now, time_now), who_user_add=student.id)
  980.  
  981. db.session.add(new_idea)
  982. db.session.commit()
  983. return render_template("student/ideas/add_new_idea.html", form=form, year_now=year_now,
  984.  
  985. error="Your idea has been successfully added", student=student)
  986. else:
  987. check_add_idea=Idea.query.filter_by(who_user_add = session['id']).count()
  988. if check_add_idea !=0:
  989. return render_template("student/ideas/add_new_idea.html", form=form, year_now=year_now, student=student,e="You have a pre-recorded idea")
  990. else:
  991. return render_template("student/ideas/add_new_idea.html", form=form, year_now=year_now,
  992. student=student)
  993. else:
  994. logout_user()
  995. session.clear()
  996. return redirect(url_for("login"))
  997. else:
  998. logout_user()
  999. session.clear()
  1000. return redirect(url_for("login"))
  1001.  
  1002. @app.route('/ideas/',methods=['POST',"GET"])
  1003. @login_required
  1004. def ideas():
  1005. ideas = Idea.query.all()
  1006. users = Users.query.all()
  1007. comments = Comment.query.all()
  1008. gm = Group_Member.query.all()
  1009. gmm = Group_Member.query.filter(Group_Member.student_id!=session['id']).all()
  1010. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1011. admin = Users.query.filter(
  1012. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1013. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1014. if admin:
  1015. return render_template("admin/ideas/ideas.html",admin=admin,ideas=ideas,users=users,comments=comments,gm=gm)
  1016. else:
  1017. logout_user()
  1018. session.clear()
  1019. return redirect(url_for("login"))
  1020. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1021. faculty = Users.query.filter(
  1022. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1023. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1024. if faculty:
  1025. return render_template("faculty/ideas/ideas.html",faculty=faculty,ideas=ideas,users=users,comments=comments,gm=gm)
  1026. else:
  1027. logout_user()
  1028. session.clear()
  1029. return redirect(url_for("login"))
  1030. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1031. student = Users.query.filter(
  1032. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1033. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1034. if student:
  1035. return render_template("student/ideas/ideas.html",student=student,ideas=ideas,users=users,comments=comments,gm=gm,gmm=gmm)
  1036. else:
  1037. logout_user()
  1038. session.clear()
  1039. return redirect(url_for("login"))
  1040. else:
  1041. logout_user()
  1042. session.clear()
  1043. return redirect(url_for("login"))
  1044.  
  1045. @app.route('/joins/',methods=['POST',"GET"])
  1046. @login_required
  1047. def joins():
  1048. ideas = Idea.query.filter_by(who_user_add=session['id']).all()
  1049. idea = Idea.query.all()
  1050. users = Users.query.all()
  1051. group = Group.query.all()
  1052. me_group = Group.query.filter_by(faculty_id=session['id']).all()
  1053. me_group_member = Group_Member.query.filter_by(student_id=session['id']).all()
  1054. group_member = Group_Member.query.all()
  1055. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1056. admin = Users.query.filter(
  1057. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1058. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1059. if admin:
  1060. return render_template("admin/ideas/joins.html", admin=admin, ideas=ideas, users=users, group=group
  1061. , group_member=group_member,idea=idea)
  1062. else:
  1063. logout_user()
  1064. session.clear()
  1065. return redirect(url_for("login"))
  1066. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1067. faculty = Users.query.filter(
  1068. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1069. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1070. if faculty:
  1071. return render_template("faculty/ideas/joins.html", faculty=faculty, ideas=ideas, users=users, group=group
  1072. , group_member=group_member,me_group=me_group,idea=idea)
  1073. else:
  1074. logout_user()
  1075. session.clear()
  1076. return redirect(url_for("login"))
  1077. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1078. student = Users.query.filter(
  1079. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1080. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1081. if student:
  1082. return render_template("student/ideas/joins.html", student=student, ideas=ideas, users=users, group=group
  1083. , group_member=group_member,me_group_member=me_group_member,idea=idea)
  1084. else:
  1085. logout_user()
  1086. session.clear()
  1087. return redirect(url_for("login"))
  1088. else:
  1089. logout_user()
  1090. session.clear()
  1091. return redirect(url_for("login"))
  1092.  
  1093. @app.route('/my_ideas/',methods=['POST',"GET"])
  1094. @login_required
  1095. def my_ideas():
  1096. ideas = Idea.query.filter_by(who_user_add=session['id']).all()
  1097. users = Users.query.all()
  1098. group = Group.query.all()
  1099. comment = Comment.query.all()
  1100. group_member = Group_Member.query.all()
  1101. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1102. admin = Users.query.filter(
  1103. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1104. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1105. if admin:
  1106. return render_template("admin/ideas/my_ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1107. , group_member=group_member,comment=comment)
  1108. else:
  1109. logout_user()
  1110. session.clear()
  1111. return redirect(url_for("login"))
  1112. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1113. faculty = Users.query.filter(
  1114. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1115. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1116. if faculty:
  1117. return render_template("faculty/ideas/my_ideas.html", faculty=faculty, ideas=ideas, users=users, group=group
  1118. , group_member=group_member,comment=comment)
  1119. else:
  1120. logout_user()
  1121. session.clear()
  1122. return redirect(url_for("login"))
  1123. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1124. student = Users.query.filter(
  1125. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1126. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1127. if student:
  1128. return render_template("student/ideas/my_ideas.html", student=student, ideas=ideas, users=users, group=group
  1129. , group_member=group_member,comment=comment)
  1130. else:
  1131. logout_user()
  1132. session.clear()
  1133. return redirect(url_for("login"))
  1134. else:
  1135. logout_user()
  1136. session.clear()
  1137. return redirect(url_for("login"))
  1138.  
  1139.  
  1140. @app.route('/delete_my_idea/<idea_id>',methods=['POST',"GET"])
  1141. @login_required
  1142. def delete_my_idea(idea_id):
  1143. delete_idea = Idea.query.filter((Idea.who_user_add==session['id'])&(Idea.id==idea_id)).first()
  1144. ideas = Idea.query.filter_by(who_user_add=session['id']).all()
  1145. users = Users.query.all()
  1146. group = Group.query.all()
  1147. group_member = Group_Member.query.all()
  1148. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1149. admin = Users.query.filter(
  1150. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1151. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1152. if admin:
  1153. db.session.delete(delete_idea)
  1154. db.session.commit()
  1155. return render_template("admin/ideas/my_ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1156. , group_member=group_member,error="Your idea has been successfully deleted")
  1157. else:
  1158. logout_user()
  1159. session.clear()
  1160. return redirect(url_for("login"))
  1161. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1162. faculty = Users.query.filter(
  1163. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1164. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1165. if faculty:
  1166. db.session.delete(delete_idea)
  1167. db.session.commit()
  1168. return render_template("faculty/ideas/my_ideas.html", faculty=faculty, ideas=ideas, users=users, group=group
  1169. , group_member=group_member,error="Your idea has been successfully deleted")
  1170. else:
  1171. logout_user()
  1172. session.clear()
  1173. return redirect(url_for("login"))
  1174. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1175. student = Users.query.filter(
  1176. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1177. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1178. if student:
  1179. db.session.delete(delete_idea)
  1180. db.session.commit()
  1181. return render_template("student/ideas/my_ideas.html", student=student, ideas=ideas, users=users, group=group
  1182. , group_member=group_member,error="Your idea has been successfully deleted")
  1183. else:
  1184. logout_user()
  1185. session.clear()
  1186. return redirect(url_for("login"))
  1187. else:
  1188. logout_user()
  1189. session.clear()
  1190. return redirect(url_for("login"))
  1191.  
  1192.  
  1193. @app.route('/edit_my_idea/<idea_id>',methods=['POST',"GET"])
  1194. @login_required
  1195. def edit_my_idea(idea_id):
  1196. edit_idea = Idea.query.filter((Idea.who_user_add==session['id'])&(Idea.id==idea_id)).first()
  1197. ideas = Idea.query.filter_by(who_user_add=session['id']).all()
  1198. users = Users.query.all()
  1199. group = Group.query.all()
  1200. group_member = Group_Member.query.all()
  1201. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1202. admin = Users.query.filter(
  1203. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1204. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1205. if admin:
  1206. if request.method == "POST":
  1207. edit_idea.title=name_ar_filter(request.form['title'])
  1208. edit_idea.description=name_ar_filter(request.form['description'])
  1209. db.session.commit()
  1210. return render_template("admin/ideas/ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1211. , group_member=group_member,error="Your idea has been successfully edited",edit_idea=edit_idea)
  1212. else:
  1213. return render_template("admin/ideas/edit_my_idea.html", admin=admin, ideas=ideas, users=users, group=group
  1214. , group_member=group_member, edit_idea=edit_idea)
  1215. else:
  1216. logout_user()
  1217. session.clear()
  1218. return redirect(url_for("login"))
  1219. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1220. faculty = Users.query.filter(
  1221. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1222. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1223. if faculty:
  1224. if request.method == "POST":
  1225. edit_idea.title = name_ar_filter(request.form['title'])
  1226. edit_idea.description = name_ar_filter(request.form['description'])
  1227. db.session.commit()
  1228. return render_template("faculty/ideas/my_ideas.html", faculty=faculty, ideas=ideas, users=users, group=group,edit_idea=edit_idea
  1229. , group_member=group_member, error="Your idea has been successfully edited")
  1230. else:
  1231. return render_template("faculty/ideas/edite_my_idea.html", faculty=faculty, ideas=ideas, users=users,
  1232. group=group
  1233. , group_member=group_member,edit_idea=edit_idea)
  1234. else:
  1235. logout_user()
  1236. session.clear()
  1237. return redirect(url_for("login"))
  1238. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1239. student = Users.query.filter(
  1240. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1241. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1242. if student:
  1243. if request.method == "POST":
  1244. edit_idea.title = name_ar_filter(request.form['title'])
  1245. edit_idea.description = name_ar_filter(request.form['description'])
  1246. db.session.commit()
  1247. return render_template("student/ideas/my_ideas.html", student=student, ideas=ideas, users=users, group=group,edit_idea=edit_idea
  1248. , group_member=group_member, error="Your idea has been successfully edited")
  1249. else:
  1250. return render_template("student/ideas/edite_my_idea.html", student=student, ideas=ideas, users=users,
  1251. group=group
  1252. , group_member=group_member,edit_idea=edit_idea)
  1253. else:
  1254. logout_user()
  1255. session.clear()
  1256. return redirect(url_for("login"))
  1257. else:
  1258. logout_user()
  1259. session.clear()
  1260. return redirect(url_for("login"))
  1261.  
  1262.  
  1263.  
  1264. @app.route('/edit_idea/<idea_id>',methods=['POST',"GET"])
  1265. @login_required
  1266. def edit_idea(idea_id):
  1267. edit_idea = Idea.query.filter((Idea.id==idea_id)).first()
  1268. ideas = Idea.query.all()
  1269. users = Users.query.all()
  1270. group = Group.query.all()
  1271. group_member = Group_Member.query.all()
  1272. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1273. admin = Users.query.filter(
  1274. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1275. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1276. if admin:
  1277. if request.method == "POST":
  1278. edit_idea.title=name_ar_filter(request.form['title'])
  1279. edit_idea.description=name_ar_filter(request.form['description'])
  1280. db.session.commit()
  1281. return render_template("admin/ideas/ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1282. , group_member=group_member,error="Your idea has been successfully edited",edit_idea=edit_idea)
  1283. else:
  1284. return render_template("admin/ideas/edit_idea.html", admin=admin, ideas=ideas, users=users, group=group
  1285. , group_member=group_member, edit_idea=edit_idea)
  1286. else:
  1287. logout_user()
  1288. session.clear()
  1289. return redirect(url_for("login"))
  1290. else:
  1291. logout_user()
  1292. session.clear()
  1293. return redirect(url_for("login"))
  1294.  
  1295.  
  1296. @app.route('/delete_idea/<idea_id>',methods=['POST',"GET"])
  1297. @login_required
  1298. def delete_idea(idea_id):
  1299. delete_idea = Idea.query.filter((Idea.id==idea_id)).first()
  1300. ideas = Idea.query.all()
  1301. users = Users.query.all()
  1302. group = Group.query.all()
  1303. group_member = Group_Member.query.all()
  1304. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1305. admin = Users.query.filter(
  1306. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1307. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1308. if admin:
  1309. db.session.delete(delete_idea)
  1310. db.session.commit()
  1311. return render_template("admin/ideas/ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1312. , group_member=group_member,error="Your idea has been successfully deleted")
  1313. else:
  1314. logout_user()
  1315. session.clear()
  1316. return redirect(url_for("login"))
  1317. else:
  1318. logout_user()
  1319. session.clear()
  1320. return redirect(url_for("login"))
  1321.  
  1322.  
  1323. @app.route('/delete_my_comment/<comment_id>',methods=['POST',"GET"])
  1324. @login_required
  1325. def delete_my_comment(comment_id):
  1326. ideas = Idea.query.filter_by(who_user_add=session['id']).all()
  1327. users = Users.query.all()
  1328. group = Group.query.all()
  1329. delete_comment=Comment.query.filter((Comment.id==comment_id)&(Comment.who_user_add == session['id'])).first()
  1330. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1331. admin = Users.query.filter(
  1332. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1333. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1334. if admin:
  1335. delete_comments = Comment.query.filter((Comment.id == comment_id)).first()
  1336. db.session.delete(delete_comments)
  1337. db.session.commit()
  1338. return render_template("admin/ideas/ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1339. , error="comment has been successfully deleted")
  1340. else:
  1341. logout_user()
  1342. session.clear()
  1343. return redirect(url_for("login"))
  1344. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1345. faculty = Users.query.filter(
  1346. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1347. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1348. if faculty:
  1349. db.session.delete(delete_comment)
  1350. db.session.commit()
  1351. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users, group=group
  1352. , error="Your comment has been successfully deleted")
  1353. else:
  1354. logout_user()
  1355. session.clear()
  1356. return redirect(url_for("login"))
  1357. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1358. student = Users.query.filter(
  1359. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1360. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1361. if student:
  1362. db.session.delete(delete_comment)
  1363. db.session.commit()
  1364. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users, group=group
  1365. , error="Your comment has been successfully deleted")
  1366. else:
  1367. logout_user()
  1368. session.clear()
  1369. return redirect(url_for("login"))
  1370. else:
  1371. logout_user()
  1372. session.clear()
  1373. return redirect(url_for("login"))
  1374.  
  1375.  
  1376.  
  1377. @app.route('/delete_comment/<comment_id>',methods=['POST',"GET"])
  1378. @login_required
  1379. def delete_comment(comment_id):
  1380. ideas = Idea.query.filter_by(who_user_add=session['id']).all()
  1381. users = Users.query.all()
  1382. group = Group.query.all()
  1383. delete_comment=Comment.query.filter((Comment.id==comment_id)&(Comment.who_user_add == session['id'])).first()
  1384. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1385. admin = Users.query.filter(
  1386. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1387. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1388. if admin:
  1389. delete_comments = Comment.query.filter((Comment.id == comment_id)).first()
  1390. db.session.delete(delete_comments)
  1391. db.session.commit()
  1392. return render_template("admin/ideas/my_ideas.html", admin=admin, ideas=ideas, users=users, group=group
  1393. , error="comment has been successfully deleted")
  1394. else:
  1395. logout_user()
  1396. session.clear()
  1397. return redirect(url_for("login"))
  1398. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1399. faculty = Users.query.filter(
  1400. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1401. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1402. if faculty:
  1403. db.session.delete(delete_comment)
  1404. db.session.commit()
  1405. return render_template("faculty/ideas/my_ideas.html", faculty=faculty, ideas=ideas, users=users, group=group
  1406. , error="Your comment has been successfully deleted")
  1407. else:
  1408. logout_user()
  1409. session.clear()
  1410. return redirect(url_for("login"))
  1411. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1412. student = Users.query.filter(
  1413. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1414. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1415. if student:
  1416. db.session.delete(delete_comment)
  1417. db.session.commit()
  1418. return render_template("student/ideas/my_ideas.html", student=student, ideas=ideas, users=users, group=group
  1419. , error="Your comment has been successfully deleted")
  1420. else:
  1421. logout_user()
  1422. session.clear()
  1423. return redirect(url_for("login"))
  1424. else:
  1425. logout_user()
  1426. session.clear()
  1427. return redirect(url_for("login"))
  1428.  
  1429.  
  1430.  
  1431. @app.route('/case_faculty/<faculty_id>/<idea_id>/<case>',methods=['POST',"GET"])
  1432. @login_required
  1433. def case_faculty(faculty_id,idea_id,case):
  1434. group_accept = Group.query.filter((Group.faculty_id == faculty_id) & (Group.idea_id == idea_id)).first()
  1435. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1436. admin = Users.query.filter(
  1437. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1438. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1439. if admin:
  1440. if case =="accept":
  1441. group_accept.faculty_id_done = 2
  1442. db.session.commit()
  1443. refusal= Group.query.filter((Group.idea_id == idea_id)&(Group.faculty_id_done == 1)).all()
  1444. for i in refusal:
  1445. print(i.faculty_id)
  1446. i.faculty_id_done = 3
  1447. db.session.commit()
  1448. elif case == "refusal":
  1449. group_accept.faculty_id_done = 3
  1450. db.session.commit()
  1451. return redirect(url_for("joins"))
  1452. else:
  1453. logout_user()
  1454. session.clear()
  1455. return redirect(url_for("login"))
  1456. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1457. faculty = Users.query.filter(
  1458. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1459. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1460. if faculty:
  1461. if case =="accept":
  1462. group_accept.faculty_id_done = 2
  1463. db.session.commit()
  1464. refusal = Group.query.filter((Group.idea_id == idea_id) & (Group.faculty_id_done == 1)).all()
  1465. for i in refusal:
  1466. print(i.faculty_id)
  1467. i.faculty_id_done = 3
  1468. db.session.commit()
  1469. elif case == "refusal":
  1470. group_accept.faculty_id_done = 3
  1471. db.session.commit()
  1472. return redirect(url_for("joins"))
  1473. else:
  1474. logout_user()
  1475. session.clear()
  1476. return redirect(url_for("login"))
  1477. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1478. student = Users.query.filter(
  1479. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1480. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1481. if student:
  1482. if case =="accept":
  1483. group_accept.faculty_id_done = 2
  1484. db.session.commit()
  1485. refusal = Group.query.filter((Group.idea_id == idea_id) & (Group.faculty_id_done == 1)).all()
  1486. for i in refusal:
  1487. print(i.faculty_id)
  1488. i.faculty_id_done = 3
  1489. db.session.commit()
  1490. elif case == "refusal":
  1491. group_accept.faculty_id_done = 3
  1492. db.session.commit()
  1493. return redirect(url_for("joins"))
  1494. else:
  1495. logout_user()
  1496. session.clear()
  1497. return redirect(url_for("login"))
  1498. else:
  1499. logout_user()
  1500. session.clear()
  1501. return redirect(url_for("login"))
  1502.  
  1503.  
  1504.  
  1505. @app.route('/case_student/<student_id>/<idea_id>/<case>',methods=['POST',"GET"])
  1506. @login_required
  1507. def case_student(student_id,idea_id,case):
  1508. group_member = Group_Member.query.filter(
  1509. (Group_Member.student_id == student_id) & (Group_Member.idea_id == idea_id)).first()
  1510. group = Group.query.filter_by(idea_id=idea_id).first()
  1511. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1512. admin = Users.query.filter(
  1513. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1514. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1515. if admin:
  1516. if case =="accept":
  1517. group_member.student_id_done = 2
  1518. db.session.commit()
  1519. elif case == "refusal":
  1520. group_member.student_id_done = 3
  1521. db.session.commit()
  1522. return redirect(url_for("joins"))
  1523. else:
  1524. logout_user()
  1525. session.clear()
  1526. return redirect(url_for("login"))
  1527. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1528. faculty = Users.query.filter(
  1529. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1530. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1531. if faculty:
  1532. if case == "accept":
  1533. group_member.student_id_done = 2
  1534. db.session.commit()
  1535. elif case == "refusal":
  1536. group_member.student_id_done = 3
  1537. db.session.commit()
  1538. return redirect(url_for("joins"))
  1539. else:
  1540. logout_user()
  1541. session.clear()
  1542. return redirect(url_for("login"))
  1543. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1544. student = Users.query.filter(
  1545. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1546. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1547. if student:
  1548. if case == "accept":
  1549. group_member.student_id_done = 2
  1550. db.session.commit()
  1551. elif case == "refusal":
  1552. group_member.student_id_done = 3
  1553. db.session.commit()
  1554. return redirect(url_for("joins"))
  1555. else:
  1556. logout_user()
  1557. session.clear()
  1558. return redirect(url_for("login"))
  1559. else:
  1560. logout_user()
  1561. session.clear()
  1562. return redirect(url_for("login"))
  1563.  
  1564.  
  1565.  
  1566. @app.route('/join/<idea_id>',methods=['POST',"GET"])
  1567. @login_required
  1568. def join(idea_id):
  1569. ideas = Idea.query.all()
  1570. users = Users.query.all()
  1571. comments = Comment.query.all()
  1572. gm = Group_Member.query.all()
  1573. if "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1574. faculty = Users.query.filter(
  1575. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1576. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1577. if faculty:
  1578. gm = Group.query.filter((Group.faculty_id==session['id'])&(Group.idea_id==idea_id)).count()
  1579. gd= Group.query.filter((Group.faculty_id_done==2)&(Group.idea_id==idea_id)).count()
  1580. gr = Group.query.filter((Group.faculty_id == session['id'])).count()
  1581. gra = Group.query.filter((Group.idea_id==idea_id)&(Group.faculty_id == session['id'])&(Group.faculty_id_done==2)).count()
  1582. grr = Group.query.filter((Group.idea_id==idea_id)&(Group.faculty_id == session['id'])&(Group.faculty_id_done==3)).count()
  1583. if gd == 1:
  1584. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users, gm=gm,
  1585. comments=comments, error="This group has ben admin")
  1586. else:
  1587. if gr==1:
  1588. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users, gm=gm,
  1589. comments=comments, error="You have a pre-order request")
  1590. elif gra==1:
  1591. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users, gm=gm,
  1592. comments=comments, error="Your request has been refusal")
  1593. elif grr ==1:
  1594. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users, gm=gm,
  1595. comments=comments, error="Your request has been approved")
  1596. elif gm == 0:
  1597. id_idea = Idea.query.filter_by(id=idea_id).first()
  1598. new_faculty = Group(idea_id=idea_id, faculty_id=session['id'], faculty_id_done=1,
  1599. who_user_add=id_idea.who_user_add,
  1600. created_at="{} {}".format(date_now, time_now))
  1601. db.session.add(new_faculty)
  1602. db.session.commit()
  1603. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users, gm=gm,
  1604. comments=comments, error="The request to join was sent successfully")
  1605. else:
  1606. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users,gm=gm,
  1607. comments=comments, error="You have a pre-order request")
  1608. else:
  1609. logout_user()
  1610. session.clear()
  1611. return redirect(url_for("login"))
  1612. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1613. student = Users.query.filter(
  1614. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1615. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1616. if student:
  1617. gmc = Group_Member.query.filter_by(idea_id=idea_id).count()
  1618. if gmc !=4:
  1619. gm = Group_Member.query.filter((Group_Member.student_id==session['id'])).count()
  1620. gma = Group_Member.query.filter((Group_Member.student_id==session['id'])
  1621. &(Group_Member.idea_id==idea_id)&(Group_Member.student_id_done == 2)).count()
  1622. gmr = Group_Member.query.filter((Group_Member.student_id == session['id'])
  1623. & (Group_Member.idea_id == idea_id) & (
  1624. Group_Member.student_id_done == 3)).count()
  1625. if gm == 0:
  1626. id_idea = Idea.query.filter_by(id=idea_id).first()
  1627. new_student = Group_Member(idea_id=idea_id, student_id=session['id'], student_id_done=1,who_user_add=id_idea.who_user_add,
  1628. created_at="{} {}".format(date_now, time_now))
  1629. db.session.add(new_student)
  1630. db.session.commit()
  1631.  
  1632. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users,gm=gm,
  1633. comments=comments, error="The request to join was sent successfully")
  1634. elif gma ==1:
  1635. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users, gm=gm,
  1636. comments=comments, error="Your request has been approved")
  1637. elif gmr == 1:
  1638. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users, gm=gm,
  1639. comments=comments, error="Your request has been refusal")
  1640. else:
  1641. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users,gm=gm,
  1642. comments=comments, error="You have a pre-order request")
  1643. else:
  1644. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users,gm=gm,
  1645. comments=comments, error="this group full")
  1646. else:
  1647. logout_user()
  1648. session.clear()
  1649. return redirect(url_for("login"))
  1650. else:
  1651. logout_user()
  1652. session.clear()
  1653. return redirect(url_for("login"))
  1654.  
  1655.  
  1656. @app.route("/add_new_comment/<idea_id>/", methods=['POST'])
  1657. @login_required
  1658. def add_new_comment(idea_id):
  1659. ideas = Idea.query.all()
  1660. users = Users.query.all()
  1661. comments = Comment.query.all()
  1662. gm = Group_Member.query.all()
  1663. gmm = Group_Member.query.filter(Group_Member.student_id != session['id']).all()
  1664. form = LoginForm(request.form)
  1665. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1666. admin = Users.query.filter(
  1667. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1668. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1669. if admin:
  1670. if len(request.form['comment']) == 0:
  1671. return render_template("admin/ideas/ideas.html", error="Enter comment", form=form, year_now=year_now, admin=admin,gm=gm,gmm=gmm)
  1672. else:
  1673. new_idea = Comment(idea_id=idea_id,comment=name_ar_filter(request.form['comment']),
  1674. created_at="{} {}".format(date_now, time_now), who_user_add=admin.id)
  1675.  
  1676. db.session.add(new_idea)
  1677. db.session.commit()
  1678. return render_template("admin/ideas/ideas.html", admin=admin, ideas=ideas, users=users,gm=gm,gmm=gmm,
  1679. comments=comments,error="Your comment has been successfully added")
  1680. else:
  1681. logout_user()
  1682. session.clear()
  1683. return redirect(url_for("login"))
  1684. elif "faculty" in session and "token_id" in session and "type" in session and "id" in session:
  1685. faculty = Users.query.filter(
  1686. (Users.token_id == session['token_id']) & (Users.username == session['faculty']) &
  1687. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1688. if faculty:
  1689. if len(request.form['comment']) == 0:
  1690. return render_template("faculty/ideas/ideas.html", error="Enter comment", form=form, year_now=year_now,gm=gm,gmm=gmmm, faculty=faculty)
  1691. else:
  1692. new_idea = Comment(idea_id=idea_id, comment=name_ar_filter(request.form['comment']),
  1693. created_at="{} {}".format(date_now, time_now), who_user_add=faculty.id)
  1694.  
  1695. db.session.add(new_idea)
  1696. db.session.commit()
  1697. return render_template("faculty/ideas/ideas.html", faculty=faculty, ideas=ideas, users=users,
  1698. comments=comments, error="Your comment has been successfully added")
  1699. else:
  1700. logout_user()
  1701. session.clear()
  1702. return redirect(url_for("login"))
  1703. elif "student" in session and "token_id" in session and "type" in session and "id" in session:
  1704. student = Users.query.filter(
  1705. (Users.token_id == session['token_id']) & (Users.username == session['student']) &
  1706. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1707. if student:
  1708. if len(request.form['comment']) == 0:
  1709. return render_template("student/ideas/ideas.html", error="Enter comment", form=form, year_now=year_now,gm=gm,gmm=gmm, student=student)
  1710. else:
  1711. new_idea = Comment(idea_id=idea_id, comment=name_ar_filter(request.form['comment']),
  1712. created_at="{} {}".format(date_now, time_now), who_user_add=student.id)
  1713.  
  1714. db.session.add(new_idea)
  1715. db.session.commit()
  1716. return render_template("student/ideas/ideas.html", student=student, ideas=ideas, users=users,gm=gm,gmm=gmm,
  1717. comments=comments, error="Your comment has been successfully added")
  1718. else:
  1719. logout_user()
  1720. session.clear()
  1721. return redirect(url_for("login"))
  1722. else:
  1723. logout_user()
  1724. session.clear()
  1725. return redirect(url_for("login"))
  1726.  
  1727. @app.route("/users_export", methods=['GET'])
  1728. @login_required
  1729. def users_export():
  1730. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1731. admin = Users.query.filter(
  1732. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1733. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1734. if admin:
  1735. query_sets = Users.query.all()
  1736. column_names = ['id', 'name','username','email','created_at']
  1737. return excel.make_response_from_query_sets(query_sets, column_names, "xls")
  1738. else:
  1739. logout_user()
  1740. session.clear()
  1741. return redirect(url_for("login"))
  1742. else:
  1743. logout_user()
  1744. session.clear()
  1745. return redirect(url_for("login"))
  1746.  
  1747. @app.route("/idea_export", methods=['GET'])
  1748. @login_required
  1749. def idea_export():
  1750. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1751. admin = Users.query.filter(
  1752. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1753. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1754. if admin:
  1755. query_sets = Idea.query.all()
  1756. column_names = ['id', 'title','description','created_at','who_user_add']
  1757. return excel.make_response_from_query_sets(query_sets, column_names, "xls")
  1758. else:
  1759. logout_user()
  1760. session.clear()
  1761. return redirect(url_for("login"))
  1762. else:
  1763. logout_user()
  1764. session.clear()
  1765. return redirect(url_for("login"))
  1766.  
  1767. @app.route("/comment_export", methods=['GET'])
  1768. @login_required
  1769. def comment_export():
  1770. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1771. admin = Users.query.filter(
  1772. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1773. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1774. if admin:
  1775. query_sets = Comment.query.all()
  1776. column_names = ['id', 'idea_id','comment','created_at','who_user_add']
  1777. return excel.make_response_from_query_sets(query_sets, column_names, "xls")
  1778. else:
  1779. logout_user()
  1780. session.clear()
  1781. return redirect(url_for("login"))
  1782. else:
  1783. logout_user()
  1784. session.clear()
  1785. return redirect(url_for("login"))
  1786.  
  1787.  
  1788. @app.route("/group_member_export", methods=['GET'])
  1789. @login_required
  1790. def group_member_export():
  1791. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1792. admin = Users.query.filter(
  1793. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1794. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1795. if admin:
  1796. query_sets = Group_Member.query.all()
  1797. column_names = ['id', 'idea_id','student_id','created_at','who_user_add']
  1798. return excel.make_response_from_query_sets(query_sets, column_names, "xls")
  1799. else:
  1800. logout_user()
  1801. session.clear()
  1802. return redirect(url_for("login"))
  1803. else:
  1804. logout_user()
  1805. session.clear()
  1806. return redirect(url_for("login"))
  1807.  
  1808. @app.route("/group_export", methods=['GET'])
  1809. @login_required
  1810. def group_export():
  1811. if "admin" in session and "token_id" in session and "type" in session and "id" in session:
  1812. admin = Users.query.filter(
  1813. (Users.token_id == session['token_id']) & (Users.username == session['admin']) &
  1814. (Users.id == session['id']) & (Users.type == session['type'])).first()
  1815. if admin:
  1816. query_sets = Group.query.all()
  1817. column_names = ['id', 'idea_id','faculty_id','created_at','who_user_add']
  1818. return excel.make_response_from_query_sets(query_sets, column_names, "xls")
  1819. else:
  1820. logout_user()
  1821. session.clear()
  1822. return redirect(url_for("login"))
  1823. else:
  1824. logout_user()
  1825. session.clear()
  1826. return redirect(url_for("login"))
  1827.  
  1828. @app.route('/logout/',methods=['POST',"GET"])
  1829. @login_required
  1830. def logout():
  1831. logout_user()
  1832. session.clear()
  1833. return redirect(url_for("login"))
  1834.  
  1835. if __name__ == '__main__':
  1836. app.run(debug=True)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement