def file_page(user, project, fname): content=''; error='' try: project_vfs=proj.project_by_name(user, project) content=''.join(project_vfs.load(fname)) except: error='No such file exists' #if ?mode=raw, show content as plain text: try: if request.args.get('mode')=='raw': return content, 200, {'Content-Type': 'text/plain; charset=utf-8'} except Exception: pass return render_template('file.html', f=content, fname=fname, user=user, project=project, error=error)
def file_post(user, project, fname): print(user, project, fname) content=request.form['content'] print(user, project, fname, 'content is OK') if session['current_user']!=user: return render_template('file.html', f=content, fname=fname, user=user, project=project, error='Ви не маєте прав редагувати файл. Створіть відгалуження проекту чи реалізацію підзадачі') #show error message (fork/implement?) #save changes: print(user, project, fname, 'user check is OK') project_vfs=proj.project_by_name(user, project) print(user, project, fname, 'project_by_name is OK') project_vfs.save(fname, content) print(user, project, fname, 'save is OK') return redirect('.')
def project_page(user, project): #project_vfs=proj.project_by_name(user, project) try: if request.args.get('mode')=='zip': # see https://docs.python.org/3/library/zipfile.html # generate zip archive (in /static/download directory)........ zfname=rootdir+'static/'+user+'/'+project+'.zip' pr=project_by_name(user, project) with ZipFile(zfname, 'w') as zf: for filename in pr.get_all_files(): zf.writestr(filename, ''.join(pr.load(filename)).encode()) # and download it: return redirect(zfname) pass except: pass #show files of the project #show subtasks list return render_template('project.html', is_current=session['current_user']==user if 'current_user' in session else False, **project_data(user, project))