def rmdir(self, path): try: file = File().delete().where(File.path == path) file.execute() except Exception as e: print(e) return FuseOSError(errno.ENOENT)
def unlink(self, path): try: file = File().delete().where(File.path == path) file.execute() except Exception as e: print(e) raise FuseOSError(errno.EEXIST)
def rename(self, old, new): try: file = File().update(path=new).where(File.path == old) file.execute() except Exception as e: print(e) raise FuseOSError(errno.EEXIST)
def submit_person(): session = Session() person = None if 'id' in request.form: person = session.query(Person).filter(Person.id == request.form['id']).first() else: person = Person() person.name = request.form['name'] if 'location' in request.form: person.location = request.form['location'] if 'image_id' in request.form and request.form['image_id']: person.image_id = request.form['image_id'] elif('cover' in request.files) and request.files['cover'] and request.files['cover'].filename: upload = request.files['cover'] file = File() file.name = secure_filename(upload.filename) file.type = 'image' file.mime = guess_type(file.name)[0] file.data = upload.read() person.image = file session.add(person) session.commit() return redirect(url_for('index'))
def mkdir(self, path, mode): try: now = self._get_now() File().create(path=path, dir=True, st_mode=(S_IFDIR | 0o0755), st_ctime=now, st_mtime=now, st_atime=now, st_nlink=2) # gets the parent path and sets the st_nlink number path_parts = path.split("/") file = File().update(st_nlink=File.st_nlink + 1).where(File.path == "/".join(path_parts[:-1])) file.execute() except Exception as e: print(e) raise FuseOSError(errno.EEXIST)
def write(self, path, buf, offset, fh): file = File().select().where(File.path == path).first() if file.contents is None: contents = buf buf_length = len(buf) else: text = file.contents contents = text[:offset] + buf.decode('utf-8') buf_length = len(contents) file.contents = contents file.st_size = buf_length file.save() return len(buf)
def handle_file_upload(user, file): file_mapper = FileMapper(user) if not file: abort(400) # Detect content type if not sent. content_type = file.content_type if not content_type: content_type, _ = mimetypes.guess_type(file.filename) # Get ID for file. file_entry = File.create( user=user, original_filename=file.filename, content_type=content_type) # Generate file key based on username and ID and update record. file_key = file_mapper.get_file_key(file_entry.id) file_entry.file_key = file_key file_entry.save() # Ensure path to save exists and save file. storage_path = file_mapper.get_storage_path(file_entry.id) ensure_path_exists(storage_path) file.save(storage_path) return file_entry
def put(t_id): """ add new template """ if t_id is None: name = request.form.get("name") if name is not None: temp = File(name=name) db.session.add(temp) db.session.commit() return str(temp.id) return "failed"
def handle_file_delete(file_id=None, file_entry=None): try: if not file_entry: file_entry = File.get(File.id == file_id) os.unlink(FileMapper.get_storage_path(file_entry.id)) file_entry.delete_instance() return True except DoesNotExist: return False
def truncate(self, path, length, fh=None): file = File().select().where(File.path == path).first() if fh: file.contents = fh file.save() return 0 if file.contents: file.contents = (file.contents[:length]) if len(file.contents) > length else file.contents file.save() return 0
def savebox(): jsondata = request.get_json() filename = jsondata['filename'] filepath = jsondata['filepath'] saveboxvalue = str(jsondata['saveboxvalue']) new_file = File(id=filename, Value=saveboxvalue, root=filepath, CreateTime=datetime.datetime.now()) session.add(new_file) session.commit() return jsonify(True)
def logresult(data=None, url=None): if data and type(data) == dict: # print it out and post to server if url: if url == "db": try: File.create(**data) print data['file'] except: pass else: try: headers = {'Content-Type': 'application/json'} r = requests.post(url, data=json.dumps(data), headers=headers) print("%s" % r.status_code), except: pass else: print data
def delete(): try: file_id = int(request.form['i']) delete_file = File.get(File.user == g.user and File.id == file_id) except ValueError: return '-1' except DoesNotExist: return '-2' if handle_file_delete(file_entry=delete_file): return _generate_hist(g.user) else: return '-2'
def _generate_hist(user): files = (File.select().where(File.user == user).order_by( File.id.desc()).limit(10)) # I have no idea what this zero means tbh. return '0\n' + '\n'.join(( # I also have no idea what this last zero is. # The one before that is the file's view count. "{file.id},{file.upload_time:%Y-%m-%d %H:%M:%S}," "{share_host}{share_url},{file.original_filename},0,0".format( file=file, share_host=LEGACY_URL_HOST, share_url=url_for('files.get_file', name=FileMapper.b62_encode(file.id), key=file.file_key)) for file in files))
def submit_series(type): session = Session() series = None if 'id' in request.form: series = session.query(Series).filter(Series.id == request.form['id']).first() else: series = Series() series.name = request.form['name'] series.type = type if 'first_year' in request.form: series.first_year = request.form['first_year'] if 'last_year' in request.form: series.last_year = request.form['last_year'] if 'image_id' in request.form and request.form['image_id']: series.image_id = request.form['image_id'] elif('cover' in request.files) and request.files['cover'] and request.files['cover'].filename: upload = request.files['cover'] file = File() file.name = secure_filename(upload.filename) file.type = 'image' file.mime = guess_type(file.name)[0] file.data = upload.read() series.image = file session.add(series) session.commit() return redirect(url_for('index'))
def list_files(): putative_key = request.args.get('k') or request.form.get('k') try: user = User.get(User.api_key == putative_key) except DoesNotExist: user = None if user is None: return jsonify(status='not authorized'), 403 else: return jsonify( status='pshuu~', files={ f.id: {'original_filename': f.original_filename, 'upload_time': f.upload_time, 'url': url_for_file(f) } for f in File.select().where(File.user == user)})
def list_files(): putative_key = request.args.get('k') or request.form.get('k') try: user = User.get(User.api_key == putative_key) except DoesNotExist: user = None if user is None: return jsonify(status='not authorized'), 403 else: return jsonify(status='pshuu~', files={ f.id: { 'original_filename': f.original_filename, 'upload_time': f.upload_time, 'url': url_for_file(f) } for f in File.select().where(File.user == user) })
def get_file(name, key): try: file_id = FileMapper.b62_decode(name) file = File.get(File.id == file_id) key, _ = os.path.splitext(key) if file.file_key == key: if 'thumb' in request.args: return handle_thumbnail_generation(file.id) else: response = send_file(FileMapper.get_storage_path(file_id), mimetype=file.content_type) response.headers['Content-Disposition'] = ( "inline;filename*=UTF-8''{}".format( quote(file.original_filename))) return response except (ValueError, DoesNotExist, RuntimeError): abort(404) abort(404)
def post(t_id): """ update a template""" temp = File.query.filter_by(id=t_id).first() editable = request.form.get("editable") if editable == "readonly": if temp is None: temp = File() temp.name = request.form.get("name") temp.path = request.form.get("path") temp.owner = request.form.get("owner") temp.group = request.form.get("group") temp.mode = request.form.get("mode") temp.precmd = request.form.get("precmd") temp.postcmd = request.form.get("postcmd") temp.text = request.form.get("text") temp.type = request.form.get("type") db.session.add(temp) db.session.commit() else: if temp is None: temp = File() return render_template("template.html", fileobj=temp, editable=True) return render_template("template.html", fileobj=temp, key=t_id, editable=editable)
def submit_entity(type): session = Session() entity = None if 'id' in request.form: entity = session.query(Entity).filter(Entity.id == request.form['id']).first() else: entity = Entity() entity.type = type entity.name = request.form['name'] if 'description' in request.form: entity.description = request.form['description'] if 'year' in request.form: entity.year = request.form['year'] if 'length' in request.form: entity.length = request.form['length'] if 'isbn' in request.form: entity.isbn = request.form['isbn'] if 'series_id' in request.form and request.form['series_id']: entity.series_id = request.form['series_id'] if 'soundtrack_id' in request.form and request.form['soundtrack_id']: entity.soundtrack_id = request.form['soundtrack_id'] if 'image_id' in request.form and request.form['image_id']: entity.image_id = request.form['image_id'] elif('cover' in request.files) and request.files['cover'] and request.files['cover'].filename: upload = request.files['cover'] file = File() file.name = secure_filename(upload.filename) file.type = 'image' file.mime = guess_type(file.name)[0] file.data = upload.read() entity.image = file if 'data_id' in request.form and request.form['data_id']: entity.data_id = request.form['data_id'] elif('data' in request.files) and request.files['data'] and request.files['data'].filename: upload = request.files['data'] file = File() file.name = secure_filename(upload.filename) file.type = type file.mime = guess_type(file.name)[0] file.data = upload.read() entity.data = file tags = request.form.getlist('keywords') + request.form.getlist('genres') entity.tags = [ session.query(Tag).filter(Tag.id==tag_id).first() for tag_id in tags ] session.add(entity) session.commit() return redirect(url_for('index'))
from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker import datetime from db import Base, File # 連結到之前建立的資料庫 engine = create_engine('sqlite:///example.db') Base.metadata.bind = engine # 建立Session DBSession = sessionmaker(bind=engine) # 或是分成二段的寫法。這是用在暫時尚無設定engine,待有engine時在第二段連結到engine # DBSession = sessionmaker() # DBSession.bind = engine # 或是 DBSession.configure(bind=engine) session = DBSession() # 建立一對映類別的實例 new_user = File(id='test' , Value ='11', root = '//ss') # 新增new_user # session.add(new_user) # session.commit() # 寫入。在commit()之前,也可rollback() # 查詢 users = session.query(File).filter(File.CreateTime >= datetime.date.today()).all() print(datetime.date.today()) for File in users: print (File.CreateTime) # 還有其他種查詢的方法: # session.query(User).all() # session.query(User).filter(User.id == 1).one()
def chown(self, path, uid, gid): file = File().update(st_uid=uid, st_gid=gid).where(File.path == path) file.execute()
def chmod(self, path, mode): file = File().select().where(File.path == path).first() file.st_mode &= 0o0770000 file.st_mode |= mode file.save() return 0
def utimens(self, path, times=None): now = self._get_now() atime, mtime = times if times else (now, now) file = File().update(st_atime=atime, st_mtime=mtime).where(File.path == path) file.execute()