Example #1
0
class MachineController(FlaskView):
    decorators = [requires_auth]
    route_prefix = '/machine/'
    route_base = '/'

    def __init__(self):
        self.machines_model = MachineModel()

    @route('/<machine_name>', methods=['GET', 'POST'])
    def machine(self, machine_name):
        show_stl = False
        fn, doc, inputs = self.machines_model.machine(machine_name)
        form = metaform('Form_%s' % str(machine_name), inputs)(request.form)
        file_name = ""
        if request.method == 'POST' and form.validate():
            try:
                values = {}
                for name, _type, _, _, _ in inputs:
                    value = getattr(form, name)
                    if types.get(_type, None):
                        values[name] = types[_type](value.data)
                    else:
                        values[name] = value.data
                flash('CREATING!', 'success')
                current_folder = os.getcwd()
                os.chdir(UPLOAD_FOLDER)
                file_name = fn(**values)
                os.chdir(current_folder)
                show_stl = True
            except Exception as e:
                flash('WARNING! %s' % e.message, 'warning')
        return render_template('machine/machine.html',
                               title=doc.title,
                               description=doc.description,
                               images=doc.images,
                               form=form,
                               show_stl=show_stl,
                               file_name=file_name,
                               machine_name=machine_name)

    @route('/download/<filename>')
    def download(self, filename):
        return send_from_directory(UPLOAD_FOLDER, filename)

    @route('/upload', methods=['GET', 'POST'])
    def upload(self):
        if request.method == 'POST':
            _file = request.files['file']
            file_path = resources.save(_file, MACHINEHUB_FOLDER,
                                       ALLOWED_EXTENSIONS)
            if file_path:
                try:
                    name = self.machines_model.update(file_path)
                    return redirect(
                        url_for('MachineController:machine',
                                machine_name=name))
                except NotMachineHub as e:
                    flash('WARNING! %s' % e.message, 'warning')
        return render_template('machine/upload.html')
Example #2
0
class MachineController(FlaskView):
    decorators = [requires_auth]
    route_prefix = '/machine/'
    route_base = '/'

    def __init__(self):
        self.machines_model = MachineModel()

    @route('/<machine_name>', methods=['GET', 'POST'])
    def machine(self, machine_name):
        show_stl = False
        fn, doc, inputs = self.machines_model.machine(machine_name)
        form = metaform('Form_%s' % str(machine_name), inputs)(request.form)
        file_name = ""
        if request.method == 'POST' and form.validate():
            try:
                values = {}
                for name, _type, _, _, _ in inputs:
                    value = getattr(form, name)
                    if types.get(_type, None):
                        values[name] = types[_type](value.data)
                    else:
                        values[name] = value.data
                flash('CREATING!', 'success')
                current_folder = os.getcwd()
                os.chdir(UPLOAD_FOLDER)
                file_name = fn(**values)
                os.chdir(current_folder)
                show_stl = True
            except Exception as e:
                flash('WARNING! %s' % e.message, 'warning')
        return render_template('machine/machine.html',
                               title=doc.title,
                               description=doc.description,
                               images=doc.images,
                               form=form,
                               show_stl=show_stl,
                               file_name=file_name,
                               machine_name=machine_name)

    @route('/download/<filename>')
    def download(self, filename):
        return send_from_directory(UPLOAD_FOLDER, filename)

    @route('/upload', methods=['GET', 'POST'])
    def upload(self):
        if request.method == 'POST':
            _file = request.files['file']
            file_path = resources.save(_file, MACHINEHUB_FOLDER, ALLOWED_EXTENSIONS)
            if file_path:
                try:
                    name = self.machines_model.update(file_path)
                    return redirect(url_for('MachineController:machine', machine_name=name))
                except NotMachineHub as e:
                    flash('WARNING! %s' % e.message, 'warning')
        return render_template('machine/upload.html')
class MachinehubController(FlaskView):
    decorators = [requires_auth]
    route_prefix = '/'
    route_base = '/'

    def __init__(self):
        self.machines_model = MachineModel()

    @route('/machines/<int:page>')
    def machines(self, page):
        links = []
        count = self.machines_model.count
        machines = self.machines_model.get_machines_for_page(page, PER_PAGE, count)
        for name, doc in machines:
            url = url_for('MachineController:machine', machine_name=name)
            links.append((url, name, doc.title or "", doc.description or ""))
        if not machines and page != 1:
            abort(404)
        pagination = Pagination(page, PER_PAGE, count)
        return render_template('explorer.html',
                               pagination=pagination,
                               links=links
                               )

    @route('/')
    def index(self):
        return render_template('home.html')
class MachinehubController(FlaskView):
    decorators = [requires_auth]
    route_prefix = '/'
    route_base = '/'

    def __init__(self):
        self.machines_model = MachineModel()

    @route('/machines/<int:page>')
    def machines(self, page):
        links = []
        count = self.machines_model.count
        machines = self.machines_model.get_machines_for_page(
            page, PER_PAGE, count)
        for name, doc in machines:
            url = url_for('MachineController:machine', machine_name=name)
            links.append((url, name, doc.title or "", doc.description or ""))
        if not machines and page != 1:
            abort(404)
        pagination = Pagination(page, PER_PAGE, count)
        return render_template('explorer.html',
                               pagination=pagination,
                               links=links)

    @route('/')
    def index(self):
        return render_template('home.html')
Example #5
0
 def __init__(self):
     self.machines_model = MachineModel()
Example #6
0
 def __init__(self):
     self.machines_model = MachineModel()
Example #7
0
from flask.helpers import url_for
from flask.templating import render_template
from machinehub.config import machinehub_conf, UPLOAD_FOLDER
from functools import wraps
from flask import request, Response
import os
from machinehub.server.app.controllers.machine_controller import MachineController
from machinehub.server.app.controllers.auth_controller import requires_auth
from machinehub.server.app.controllers.machinehub_controller import MachinehubController
from machinehub.server.app.models.machine_model import MachineModel


def url_for_other_page(page):
    args = request.view_args.copy()
    args['page'] = page
    return url_for(request.endpoint, **args)


machine_model = MachineModel()
app = Flask(__name__)
app.secret_key = 'development key'
app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0

app.jinja_env.globals['url_for_other_page'] = url_for_other_page

MachinehubController().register(app)
MachineController().register(app)

if UPLOAD_FOLDER:
    app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER