forked from crunk/distribusi-verse
crunk
3 years ago
5 changed files with 182 additions and 87 deletions
@ -0,0 +1,88 @@ |
|||||
|
import os |
||||
|
import shutil |
||||
|
from flask import flash |
||||
|
from sqlalchemy.exc import ( |
||||
|
IntegrityError, |
||||
|
InvalidRequestError, |
||||
|
) |
||||
|
from usermodel import User |
||||
|
from distribusimodel import Distribusis |
||||
|
from flask_login import current_user |
||||
|
from statuspengguna.helper import CurrentDistribusi |
||||
|
from forms.uploadform import UploadForm |
||||
|
from app import db |
||||
|
|
||||
|
|
||||
|
def UploadNewDistribusi(uploadfolder): |
||||
|
uploadform = UploadForm() |
||||
|
if uploadform.validate_on_submit(): |
||||
|
user = User.query.filter_by(email=current_user.email).first() |
||||
|
try: |
||||
|
newdistribusi = Distribusis( |
||||
|
distribusiname=uploadform.sitename.data, |
||||
|
userid=user.id, |
||||
|
term=uploadform.term.data, |
||||
|
course=uploadform.course.data, |
||||
|
year=uploadform.academicyear.data, |
||||
|
tags=uploadform.tags.data, |
||||
|
) |
||||
|
user.currentdistribusi = uploadform.sitename.data |
||||
|
db.session.add(newdistribusi) |
||||
|
db.session.commit() |
||||
|
except InvalidRequestError: |
||||
|
db.session.rollback() |
||||
|
uploadform.sitename.errors.append("Something went wrong!") |
||||
|
flash("Something went wrong!", "danger") |
||||
|
except IntegrityError: |
||||
|
db.session.rollback() |
||||
|
uploadform.sitename.errors.append( |
||||
|
"distribusi name already exists!" |
||||
|
) |
||||
|
flash("distribusi name already exists!", "warning") |
||||
|
|
||||
|
zipfilename = "{}.zip".format(newdistribusi.distribusiname) |
||||
|
zipfile = uploadform.zipfile.data |
||||
|
zipfile.save(os.path.join(uploadfolder, zipfilename)) |
||||
|
|
||||
|
newuserfolder = os.path.join("stash", newdistribusi.distribusiname) |
||||
|
if not os.path.exists(newuserfolder): |
||||
|
os.mkdir(newuserfolder) |
||||
|
|
||||
|
copyzipfile = os.path.join(uploadfolder, zipfilename) |
||||
|
shutil.copy(copyzipfile, newuserfolder) |
||||
|
os.remove(os.path.join(uploadfolder, zipfilename)) |
||||
|
|
||||
|
return uploadform |
||||
|
|
||||
|
|
||||
|
def UploadUpdatedFiles(uploadfolder): |
||||
|
uploadform = UploadForm() |
||||
|
if uploadform.validate_on_submit(): |
||||
|
try: |
||||
|
current_distribusi = CurrentDistribusi() |
||||
|
distribusi = Distribusis.query.filter_by( |
||||
|
distribusiname=current_distribusi |
||||
|
).first() |
||||
|
distribusi.term = uploadform.term.data |
||||
|
distribusi.course = uploadform.course.data |
||||
|
distribusi.year = uploadform.academicyear.data |
||||
|
distribusi.tags = uploadform.tags.data |
||||
|
db.session.commit() |
||||
|
except: |
||||
|
db.session.rollback() |
||||
|
uploadform.sitename.errors.append("Something went wrong!") |
||||
|
flash("Something went wrong!", "danger") |
||||
|
|
||||
|
zipfilename = "{}.zip".format(distribusi.distribusiname) |
||||
|
zipfile = uploadform.zipfile.data |
||||
|
zipfile.save(os.path.join(uploadfolder, zipfilename)) |
||||
|
|
||||
|
newuserfolder = os.path.join("stash", distribusi.distribusiname) |
||||
|
shutil.rmtree(newuserfolder) |
||||
|
os.mkdir(newuserfolder) |
||||
|
|
||||
|
copyzipfile = os.path.join(uploadfolder, zipfilename) |
||||
|
shutil.copy(copyzipfile, newuserfolder) |
||||
|
os.remove(os.path.join(uploadfolder, zipfilename)) |
||||
|
|
||||
|
return uploadform |
Loading…
Reference in new issue