Esempio n. 1
0
def editItem(category_name, item_name):
    editedItem = session.query(Items).filter_by(name=item_name).one()
    categories = session.query(Category).all()
    # See if the logged in user is the owner of item
    creator = getUserInfo(editedItem.user_id)
    user = getUserInfo(login_session['user_id'])
    # If logged in user != item owner redirect them
    if creator.id != login_session['user_id']:
        flash ("You cannot edit this item. This item belongs to %s" % creator.name)
        return redirect(url_for('showCatalog'))
    # POST methods
    if request.method == 'POST':
        if request.form['name']:
            editedItem.name = request.form['name']
        if request.form['description']:
            editedItem.description = request.form['description']
        if request.form['picture']:
            editedItem.picture = request.form['picture']
        if request.form['category']:
            category = session.query(Category).filter_by(name=request.form['category']).one()
            editedItem.category = category
        time = datetime.datetime.now()
        editedItem.date = time
        session.add(editedItem)
        session.commit()
        flash('Category Item Successfully Edited!')
        return  redirect(url_for('showCategory',
                                category_name=editedItem.category.name))
    else:
        return render_template('edititem.html',
                                item=editedItem,
                                categories=categories)
Esempio n. 2
0
def gdisconnect():
        # Only disconnect a connected user.
    access_token = login_session.get('access_token')
    if access_token is None:
        response = make_response(
            json.dumps('Current user not connected.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response
    url = 'https://accounts.google.com/o/oauth2/revoke?token=%s' % access_token
    h = httplib2.Http()
    result = h.request(url, 'GET')[0]
    if result['status'] == '200':
        # Reset the user's sesson.
        del login_session['access_token']
        del login_session['gplus_id']
        del login_session['username']
        del login_session['email']
        del login_session['picture']

        # response = make_response(json.dumps('Successfully disconnected.'), 200)
        # response.headers['Content-Type'] = 'application/json'
        response = redirect(url_for('showCatalog'))
        flash("You are now logged out.")
        return response
    else:
        # For whatever reason, the given token was invalid.
        response = make_response(
            json.dumps('Failed to revoke token for given user.', 400))
        response.headers['Content-Type'] = 'application/json'
        return response
Esempio n. 3
0
def addCategory():
    if request.method == 'POST':
        newCategory = Category(
            name=request.form['name'],
            user_id=login_session['user_id'])
        print (newCategory)
        session.add(newCategory)
        session.commit()
        flash('Category Successfully Added!')
        return redirect(url_for('showCatalog'))
    else:
        return render_template('addcategory.html')
Esempio n. 4
0
def resubmit(request, submission_id):
    submission = models.Submission.get_by_id(submission_id)
    if submission is None or submission.account.key().id() != local.account.key().id():
        logging.warning('Attempt to resubmit submission "%s" by account "%s" with email "%s".' % (submission_id, local.account.key().id(), local.account.email))
        return redirect(url_for('main/index'))
    if request.method == "POST":
        form = forms.ResubmissionForm(request.form)
        if form.validate():
            submission.text_list.append(db.Text(utils.text_tidy(form.text.data)))
            submission.put()
            flash("Your submission has been updated.")
            return redirect(url_for('home/preview', submission_id=submission.key().id()))
    else:
        form = forms.ResubmissionForm(obj=submission)
    return render_response('resubmit.html', form=form, submission=submission)
Esempio n. 5
0
def submit(request):
    if request.method == "POST":
        form = forms.SubmissionForm(request.form)
        if form.validate():
            submission = models.Submission(account=local.account,
                                           simultaneous=form.simultaneous.data,
                                           cover_letter=db.Text(utils.text_tidy(form.cover_letter.data)),
                                           title=utils.text_tidy(form.title.data),
                                           text_list=[db.Text(utils.text_tidy(form.text.data))],
                                           categories=form.categories.data)
            submission.put()
            flash("Your submission has been saved.")
            return redirect(url_for('home/preview', submission_id=submission.key().id()))
    else:
        form = forms.SubmissionForm()
    return render_response('submit.html', form=form)
Esempio n. 6
0
    def __init__(self, ui, dbgio):
        self.ui = ui
        self.dbgio = dbgio
        self.device = vendor.get_device(self.ui, soc_name)
        self.dbgio.connect(self.device.cpu_info.name, "swd")
        self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device)
        self.device.bind_cpu(self.cpu)
        self.mem = mem.mem(self.cpu)
        self.flash = flash.flash(flash_driver.stm32f0xx(self.device), self.device, self.mem)
        gpio_drv = gpio_driver.drv(self.device, gpio_cfg)
        self.gpio = gpio.gpio(gpio_drv)
        self.i2c = i2c.i2c(i2c_driver.gpio(gpio_drv, "PB6", "PB7"))

        self.menu_root = (
            ("cpu", self.cpu.menu, "cpu functions"),
            ("da", self.cpu.cmd_disassemble, cortexm.help_disassemble),
            ("debugger", self.dbgio.menu, "debugger functions"),
            ("exit", self.cmd_exit),
            ("flash", self.flash.menu, "flash functions"),
            ("go", self.cpu.cmd_go),
            ("gpio", self.gpio.menu, "gpio functions"),
            ("halt", self.cpu.cmd_halt),
            ("help", self.ui.cmd_help),
            ("history", self.ui.cmd_history, cli.history_help),
            ("i2c", self.i2c.menu, "i2c functions"),
            ("map", self.device.cmd_map),
            ("mem", self.mem.menu, "memory functions"),
            ("program", self.flash.cmd_program, flash.help_program),
            ("regs", self.cmd_regs, soc.help_regs),
            ("vtable", self.cpu.cmd_vtable),
        )

        self.ui.cli.set_root(self.menu_root)
        self.set_prompt()
        self.dbgio.cmd_info(self.ui, None)
Esempio n. 7
0
  def __init__(self, ui, dbgio):
    self.ui = ui
    self.dbgio = dbgio
    self.device = vendor.get_device(self.ui, soc_name)
    self.dbgio.connect(self.device.cpu_info.name, 'swd')
    self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device)
    self.device.bind_cpu(self.cpu)
    self.mem = mem.mem(self.cpu)
    self.flash = flash.flash(flash_driver.flash(self.device), self.device, self.mem)

    self.menu_root = (
      ('cpu', self.cpu.menu, 'cpu functions'),
      ('da', self.cpu.cmd_disassemble, cortexm.help_disassemble),
      ('debugger', self.dbgio.menu, 'debugger functions'),
      ('exit', self.cmd_exit),
      ('flash', self.flash.menu, 'flash functions'),
      ('go', self.cpu.cmd_go),
      ('halt', self.cpu.cmd_halt),
      ('help', self.ui.cmd_help),
      ('history', self.ui.cmd_history, cli.history_help),
      ('map', self.device.cmd_map),
      ('mem', self.mem.menu, 'memory functions'),
      ('program', self.flash.cmd_program, flash.help_program),
      ('regs', self.cmd_regs, soc.help_regs),
      ('vtable', self.cpu.cmd_vtable),
    )

    self.ui.cli.set_root(self.menu_root)
    self.set_prompt()
    self.dbgio.cmd_info(self.ui, None)
Esempio n. 8
0
    def __init__(self, ui, dbgio):
        self.ui = ui
        self.dbgio = dbgio
        self.device = vendor.get_device(self.ui, soc_name)
        self.dbgio.connect(self.device.cpu_info.name, 'swd')
        self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device)
        self.device.bind_cpu(self.cpu)
        self.mem = mem.mem(self.cpu)
        self.flash = flash.flash(flash_driver.stm32l4x2(self.device),
                                 self.device, self.mem)
        gpio_drv = (gpio_driver.drv(self.device, gpio_cfg))
        self.gpio = gpio.gpio(gpio_drv)

        self.menu_root = (
            ('cpu', self.cpu.menu, 'cpu functions'),
            ('da', self.cpu.cmd_disassemble, cortexm.help_disassemble),
            ('debugger', self.dbgio.menu, 'debugger functions'),
            ('exit', self.cmd_exit),
            ('flash', self.flash.menu, 'flash functions'),
            ('go', self.cpu.cmd_go),
            ('gpio', self.gpio.menu, 'gpio functions'),
            ('halt', self.cpu.cmd_halt),
            ('help', self.ui.cmd_help),
            ('history', self.ui.cmd_history, cli.history_help),
            ('map', self.device.cmd_map),
            ('mem', self.mem.menu, 'memory functions'),
            ('program', self.flash.cmd_program, flash.help_program),
            ('regs', self.cmd_regs, soc.help_regs),
            ('vtable', self.cpu.cmd_vtable),
        )

        self.ui.cli.set_root(self.menu_root)
        self.set_prompt()
        self.dbgio.cmd_info(self.ui, None)
Esempio n. 9
0
def deleteCategory(category_name):
    categoryToDelete = session.query(Category).filter_by(name=category_name).one()
    # See if the logged in user is the owner of item
    creator = getUserInfo(categoryToDelete.user_id)
    user = getUserInfo(login_session['user_id'])
    # If logged in user != item owner redirect them
    if creator.id != login_session['user_id']:
        flash ("You cannot delete this Category. This Category belongs to %s" % creator.name)
        return redirect(url_for('showCatalog'))
    if request.method =='POST':
        session.delete(categoryToDelete)
        session.commit()
        flash('Category Successfully Deleted! '+categoryToDelete.name)
        return redirect(url_for('showCatalog'))
    else:
        return render_template('deletecategory.html',
                                category=categoryToDelete)
Esempio n. 10
0
def addItem():
    categories = session.query(Category).all()
    if request.method == 'POST':
        newItem = Items(
            name=request.form['name'],
            description=request.form['description'],
            picture=request.form['picture'],
            category=session.query(Category).filter_by(name=request.form['category']).one(),
            date=datetime.datetime.now(),
            user_id=login_session['user_id'])
        session.add(newItem)
        session.commit()
        flash('Item Successfully Added!')
        return redirect(url_for('showCatalog'))
    else:
        return render_template('additem.html',
                                categories=categories)
Esempio n. 11
0
def render_profile(request, template_name, redirect_url):
    if request.method == "POST":
        form = forms.ProfileForm(request.form)
        if form.validate():
            provided = False
            if form.full_name.data:
                local.account.full_name = form.full_name.data
                provided = True
            if form.alternate_email.data:
                local.account.alternate_email = form.alternate_email.data
                provided = True
            if provided:
                local.account.put()
                flash("Your profile information has been saved.")
            return redirect(redirect_url)
    else:
        form = forms.ProfileForm(obj=local.account)
    return render_response(template_name, form=form)
Esempio n. 12
0
def editCategory(category_name):
    editedCategory = session.query(Category).filter_by(name=category_name).one()
    category = session.query(Category).filter_by(name=category_name).one()
    # See if the logged in user is the owner of item
    creator = getUserInfo(editedCategory.user_id)
    user = getUserInfo(login_session['user_id'])
    # If logged in user != item owner redirect them
    if creator.id != login_session['user_id']:
        flash ("You cannot edit this Category. This Category belongs to %s" % creator.name)
        return redirect(url_for('showCatalog'))
    # POST methods
    if request.method == 'POST':
        if request.form['name']:
            editedCategory.name = request.form['name']
        session.add(editedCategory)
        session.commit()
        flash('Category Item Successfully Edited!')
        return  redirect(url_for('showCatalog'))
    else:
        return render_template('editcategory.html',
                                categories=editedCategory,
                                category = category)
def main(argv):
    try:
        opts, args = getopt.getopt(argv,"hi:","ifile=")
    except getopt.GetoptError:
        print 'commotion-router-testbench.py -i <inputfile>'
        sys.exit(2)

    if(len(opts) == 0):
         print 'commotion-router-testbench.py -i <inputfile>'
         sys.exit()

    for opt, arg in opts:
        if opt in ("-h", "--help"):
            print 'commotion-router-testbench.py -i <inputfile>'
            sys.exit()
        elif opt in ("-i", "--ifile"):
            inputFile = arg

    ## We will not move the files (try to do it through jenkins or something?)

    # Copy new build to the tftp server (overwrite older builds)
    # openwrt-ar71xx-generic-hornet-ub-x2-kernel.bin
    #os.system("cp " + kernelPath + " " + tftpPath + "kernel.bin")
    # openwrt-ar71xx-generic-hornet-ub-x2-rootfs-squashfs.bin
    #os.system("cp " + rootfsPath + " " + tftpPath + "rootfs.bin")

    # Read from input file the serial ports (routers) to communicate with
    file = open(inputFile, 'r')

    counter = 1
    routerNumber = 1
    routersToTest = []

    for line in file:

        line = line.rstrip('\n')

        if line.startswith("/dev/tty"):
            # Flash new build on routers
            ipaddr = "192.168.2.1%d" % counter

            counter += 1

            if flash.flash(line, ipaddr):
                routerNumber += 1
                routersToTest.append(line)
            else:
                # For now, if a flash fails, you will need to reboot that router into uboot manually and run the script
                # on that router again (or flash manually if you prefer).
                print("Flashing failed on router with port " + line)
Esempio n. 14
0
    def __init__(self, ui, dbgio):
        self.ui = ui
        self.dbgio = dbgio
        self.device = vendor.get_device(self.ui, soc_name)
        # add the 8MiB SDRAM
        self.device.insert(
            soc.make_peripheral('sdram', 0xc0000000, 8 << 20, None,
                                'external sdram'))
        self.dbgio.connect(self.device.cpu_info.name, 'swd')
        self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device)
        self.device.bind_cpu(self.cpu)
        self.mem = mem.mem(self.cpu)
        self.flash = flash.flash(flash_driver.sdrv(self.device), self.device,
                                 self.mem)
        gpio_drv = (gpio_driver.drv(self.device, gpio_cfg))
        self.gpio = gpio.gpio(gpio_drv)
        self.i2c1 = i2c.i2c(i2c_driver.bitbang(gpio_drv, 'PB8', 'PB9'))
        self.i2c3 = i2c.i2c(i2c_driver.bitbang(gpio_drv, 'PH7', 'PH8'))
        # setup the rtt client
        ram = self.device.sram
        self.rtt = rtt.rtt(self.cpu, mem.region('ram', ram.address, ram.size))

        self.menu_root = (
            ('cpu', self.cpu.menu, 'cpu functions'),
            ('da', self.cpu.cmd_disassemble, cortexm.help_disassemble),
            ('debugger', self.dbgio.menu, 'debugger functions'),
            ('exit', self.cmd_exit),
            ('flash', self.flash.menu, 'flash functions'),
            ('go', self.cpu.cmd_go),
            ('gpio', self.gpio.menu, 'gpio functions'),
            ('halt', self.cpu.cmd_halt),
            ('help', self.ui.cmd_help),
            ('history', self.ui.cmd_history, cli.history_help),
            ('i2c1', self.i2c1.menu, 'i2c1 functions'),
            ('i2c3', self.i2c3.menu, 'i2c3 functions'),
            ('map', self.device.cmd_map),
            ('mem', self.mem.menu, 'memory functions'),
            ('program', self.flash.cmd_program, flash.help_program),
            ('regs', self.cmd_regs, soc.help_regs),
            ('rtt', self.rtt.menu, 'rtt client functions'),
            ('vtable', self.cpu.cmd_vtable),
        )

        self.ui.cli.set_root(self.menu_root)
        self.set_prompt()
        self.dbgio.cmd_info(self.ui, None)
Esempio n. 15
0
    def __init__(self, ui, dbgio):
        self.ui = ui
        self.dbgio = dbgio
        self.device = vendor.get_device(self.ui, soc_name)
        self.dbgio.connect(self.device.cpu_info.name, 'swd')
        self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device)
        self.device.bind_cpu(self.cpu)
        self.mem = mem.mem(self.cpu)
        self.flash = flash.flash(flash_driver.sdrv(self.device), self.device,
                                 self.mem)
        gpio_drv = (gpio_driver.drv(self.device, gpio_cfg))
        self.gpio = gpio.gpio(gpio_drv)
        self.i2c = i2c.i2c(i2c_driver.gpio(gpio_drv, 'PB6', 'PB9'))
        self.dac = dac.cs43l22(self.i2c, 0x94, self.dac_reset)
        # setup the rtt client
        ram = self.device.sram
        self.rtt = rtt.rtt(self.cpu, mem.region('ram', ram.address, ram.size))
        # setup the gdb server
        self.gdb = gdb.gdb(self.cpu)

        self.menu_root = (
            ('cpu', self.cpu.menu, 'cpu functions'),
            ('da', self.cpu.cmd_disassemble, cortexm.help_disassemble),
            ('dac', self.dac.menu, 'dac functions'),
            ('debugger', self.dbgio.menu, 'debugger functions'),
            ('exit', self.cmd_exit),
            ('flash', self.flash.menu, 'flash functions'),
            ('gdb', self.gdb.run),
            ('go', self.cpu.cmd_go),
            ('gpio', self.gpio.menu, 'gpio functions'),
            ('halt', self.cpu.cmd_halt),
            ('help', self.ui.cmd_help),
            ('history', self.ui.cmd_history, cli.history_help),
            ('i2c', self.i2c.menu, 'i2c functions'),
            ('map', self.device.cmd_map),
            ('mem', self.mem.menu, 'memory functions'),
            ('program', self.flash.cmd_program, flash.help_program),
            ('regs', self.cmd_regs, soc.help_regs),
            ('rtt', self.rtt.menu, 'rtt client functions'),
            ('vtable', self.cpu.cmd_vtable),
        )

        self.ui.cli.set_root(self.menu_root)
        self.set_prompt()
        self.dbgio.cmd_info(self.ui, None)
Esempio n. 16
0
  def __init__(self, ui, dbgio):
    self.ui = ui
    self.dbgio = dbgio
    self.device = vendor.get_device(self.ui, soc_name)
    self.dbgio.connect(self.device.cpu_info.name, 'swd')
    self.cpu = cortexm.cortexm(self, ui, self.dbgio, self.device)
    self.device.bind_cpu(self.cpu)
    self.mem = mem.mem(self.cpu)
    self.flash = flash.flash(flash_driver.sdrv(self.device), self.device, self.mem)
    gpio_drv = (gpio_driver.drv(self.device, gpio_cfg))
    self.gpio = gpio.gpio(gpio_drv)
    self.i2c = i2c.i2c(i2c_driver.gpio(gpio_drv, 'PB6', 'PB9'))
    self.dac = dac.cs43l22(self.i2c, 0x94, self.dac_reset)
    # setup the rtt client
    ram = self.device.sram
    self.rtt = rtt.rtt(self.cpu, mem.region('ram', ram.address, ram.size))
    # setup the gdb server
    self.gdb = gdb.gdb(self.cpu)

    self.menu_root = (
      ('cpu', self.cpu.menu, 'cpu functions'),
      ('da', self.cpu.cmd_disassemble, cortexm.help_disassemble),
      ('dac', self.dac.menu, 'dac functions'),
      ('debugger', self.dbgio.menu, 'debugger functions'),
      ('exit', self.cmd_exit),
      ('flash', self.flash.menu, 'flash functions'),
      ('gdb', self.gdb.run),
      ('go', self.cpu.cmd_go),
      ('gpio', self.gpio.menu, 'gpio functions'),
      ('halt', self.cpu.cmd_halt),
      ('help', self.ui.cmd_help),
      ('history', self.ui.cmd_history, cli.history_help),
      ('i2c', self.i2c.menu, 'i2c functions'),
      ('map', self.device.cmd_map),
      ('mem', self.mem.menu, 'memory functions'),
      ('program', self.flash.cmd_program, flash.help_program),
      ('regs', self.cmd_regs, soc.help_regs),
      ('rtt', self.rtt.menu, 'rtt client functions'),
      ('vtable', self.cpu.cmd_vtable),
    )

    self.ui.cli.set_root(self.menu_root)
    self.set_prompt()
    self.dbgio.cmd_info(self.ui, None)
Esempio n. 17
0
def gconnect():
    # Validate state token
    if request.args.get('state') != login_session['state']:
        response = make_response(json.dumps('Invalid state parameter.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response
    # Obtain authorization code, now compatible with Python3
    request.get_data()
    code = request.data.decode('utf-8')

    try:
        # Upgrade the authorization code into a credentials object
        oauth_flow = flow_from_clientsecrets('client_secrets.json', scope='')
        oauth_flow.redirect_uri = 'postmessage'
        credentials = oauth_flow.step2_exchange(code)
    except FlowExchangeError:
        response = make_response(
            json.dumps('Failed to upgrade the authorization code.'), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Check that the access token is valid.
    access_token = credentials.access_token
    url = ('https://www.googleapis.com/oauth2/v1/tokeninfo?access_token=%s'
           % access_token)
    # Submit request, parse response - Python3 compatible
    h = httplib2.Http()
    response = h.request(url, 'GET')[1]
    str_response = response.decode('utf-8')
    result = json.loads(str_response)

    # If there was an error in the access token info, abort.
    if result.get('error') is not None:
        response = make_response(json.dumps(result.get('error')), 500)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Verify that the access token is used for the intended user.
    gplus_id = credentials.id_token['sub']
    if result['user_id'] != gplus_id:
        response = make_response(
            json.dumps("Token's user ID doesn't match given user ID."), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Verify that the access token is valid for this app.
    if result['issued_to'] != CLIENT_ID:
        response = make_response(
            json.dumps("Token's client ID does not match app's."), 401)
        response.headers['Content-Type'] = 'application/json'
        return response

    stored_access_token = login_session.get('access_token')
    stored_gplus_id = login_session.get('gplus_id')
    if stored_access_token is not None and gplus_id == stored_gplus_id:
        response = make_response(json.dumps('Current user is already connected.'),
                                 200)
        response.headers['Content-Type'] = 'application/json'
        return response

    # Store the access token in the session for later use.
    login_session['access_token'] = access_token
    login_session['gplus_id'] = gplus_id

    # Get user info
    userinfo_url = "https://www.googleapis.com/oauth2/v1/userinfo"
    params = {'access_token': access_token, 'alt': 'json'}
    answer = requests.get(userinfo_url, params=params)

    data = answer.json()

    login_session['username'] = data['name']
    login_session['picture'] = data['picture']
    login_session['email'] = data['email']

    # see if user exists, if it doesn't make a new one
    user_id = getUserID(login_session['email'])
    if not user_id:
        user_id = createUser(login_session)
    login_session['user_id'] = user_id

    output = ''
    output += '<h1>Welcome, '
    output += login_session['username']
    output += '!</h1>'
    output += '<img src="'
    output += login_session['picture']
    output += ' " style = "width: 300px; height: 300px;border-radius: 150px;-webkit-border-radius: 150px;-moz-border-radius: 150px;"> '
    flash("you are now logged in as %s" % login_session['username'])
    return output