Example #1
0
def file_create_new_file(file):
    ret = {'code': config.CODE_OK}
    sid = utils.fetch_sid(file.filename)
    conditions = {'sid': sid}
    data = utils.jsonify_item_by(Student, conditions)
    # If student with sid doesn't exist, return 1
    if data['code'] != config.CODE_OK:
        ret['code'] = config.CODE_ERROR
        return ret

    data = utils.jsonify_item_by(File, conditions)
    # This student never upload a file before
    if data['code'] != config.CODE_OK:
        current_category = Category.query.filter_by(is_current=True).first()
        doc = File(
            sid=sid,
            filename=file.filename,
            upload_time=datetime.datetime.now(),
            size=0,  # Will modify later
            category_id=current_category.id)  # Will modify later
        db.session.add(doc)
        db.session.commit()
        directory = os.path.join(settings.UPLOAD_DIR, current_category.name)
        if not os.path.exists(directory):
            os.mkdir(directory)
        path = os.path.join(directory, doc.filename)
        file.save(path)
        ret['code'] = config.CODE_OK
        ret['item'] = utils.serialize(doc)

        tools.send_msg_when_upload_new_file(sender, sid, file)
        return ret

    # This student replace old file with a new file
    # Remove old file
    item = data['item']
    category = Category.query.filter_by(id=item['category_id']).first()
    old_path = os.path.join(settings.UPLOAD_DIR, category.name,
                            item['filename'])
    os.remove(old_path)

    # Create new file
    new_path = os.path.join(settings.UPLOAD_DIR, category.name, file.filename)
    file.save(new_path)

    # Update file in table
    old_file = File.query.filter_by(sid=sid).first()
    old_file.filename = file.filename
    old_file.upload_time = datetime.datetime.now()

    db.session.commit()

    data = utils.jsonify_item_by(File, conditions)
    ret['code'] = data['code']
    ret['item'] = data['item']

    tools.send_msg_when_replace_file(sender, sid, file)
    return ret
Example #2
0
    def post(self, **kwargs):

        if self.form.validate():
            title = self.form.title.data
            file_data = self.form.file_data.data

            uploaded_files = self.get_uploads('file_data')
            blob_info = uploaded_files[0]

            new_file = File(title=title, file_data=blob_info.key())
            # checking the file
            response = redirect_to('admin/files/index')
            if new_file.put():
                response.data = ''
                return response

        return self.get(**kwargs)