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)
Example #4
0
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)
Example #7
0
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
Example #8
0
 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"
Example #9
0
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
Example #11
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)
Example #12
0
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
Example #13
0
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'
Example #14
0
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))
Example #15
0
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'))
Example #16
0
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)})
Example #17
0
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)
                       })
Example #18
0
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)
Example #19
0
    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)
Example #20
0
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'))
Example #21
0
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()