Exemple #1
0
    def post(self, item_id):
        """Accepts a URL argument and saves it to the database
        """
        item_data = self._load_item(self.current_user.id, item_id)
        item = ListItem(**item_data)

        title = self.get_argument('title')
        url = self.get_argument('url')
        tags = self.get_argument('tags')

        # TODO The URLField should probably handle this somehow
        if not url.startswith('http'):
            url = 'http://%s' % (url)

        tag_list = tags.split(',')

        item.updated_at = self.current_time
        item.title = title
        item.url = url
        item.tags = tag_list

        try:
            item.validate()
        except Exception, e:
            logging.error('Item validatiom failed')
            logging.error(e)
            return self.render_error(500)
Exemple #2
0
    def post(self):
        """Accepts a URL argument and saves it to the database
        """
        title = self.get_argument('title')
        url = self.get_argument('url')
        tags = self.get_argument('tags')

        # TODO The URLField should probably handle this somehow
        if not url.startswith('http'):
            url = 'http://%s' % (url)

        tag_list = None
        if tags:
            tag_list = tags.split(',')

        link_item = {
            'owner_id': self.current_user.id,
            'owner_username': self.current_user.username,
            'created_at': self.current_time,
            'updated_at': self.current_time,
            'title': title,
            'url': url,
            'tags': tag_list,
        }

        item = ListItem(**link_item)

        try:
            item.validate()
        except Exception, e:
            logging.error('Item validatiom failed')
            logging.error(e)
            return self.render_error(500)
Exemple #3
0
def api_new():
    title = request.form.get('item', None)
    list_id = request.form.get('list-id', None)
    if title and list_id:
        list = db.session.query(List).filter_by(id=list_id).first()
        if list:
            newitem = ListItem(title=title, list_id=list.id)
            db.session.add(newitem)
            db.session.commit()
            return jsonify(list_id=list_id, title=title, id=newitem.id)
Exemple #4
0
    def get(self):
        """Renders a template with our links listed
        """
        items_qs = load_listitems(self.db_conn, self.current_user.username)
        items_qs.sort('updated_at', direction=pymongo.DESCENDING)

        items = [ListItem(i).to_primitive(role='owner') for i in items_qs]
        context = {
            'links': items,
        }
        return self.render_template('linklists/link_list.html', **context)
Exemple #5
0
def new():
    title = request.form.get('item', None)
    list_id = request.form.get('list-id', None)
    if title and list_id:
        list = db.session.query(List).filter_by(id=list_id).first()
        if list:
            newitem = ListItem(title=title, list_id=list.id)
            db.session.add(newitem)
            db.session.commit()
            flash('Success! Added \'%s\' to \'%s\'' % (title, list.title),
                  'success')
            return redirect(url_for('index'))
    flash('An error occurred', 'danger')
    return redirect(url_for('index'))
Exemple #6
0
 def get(self):
     """Renders a JSON response
     """
     paging_arguments = self.get_paging_arguments()
     total = load_listitems(self.db_conn,
                            self.current_user.username).count()
     items_qs = page_listitems(self.db_conn, self.current_user.username,
                               **paging_arguments)
     items_qs.sort('updated_at', direction=pymongo.DESCENDING)
     num_items = items_qs.count()
     response = {
         'paging': {
             'page': paging_arguments['page'],
             'count': paging_arguments['count'],
             'total': total
         },
         'items':
         [ListItem(i).to_primitive(role='owner') for i in items_qs]
     }
     self.set_body(json.dumps(response))
     return self.render(status_code=200)
Exemple #7
0
    def post(self):
        """Accepts a URL argument and saves it to the database
        """
        url = self.get_argument('url')

        if not url.startswith('http'):
            url = 'http://%s' % (url)

        logging.info(self.current_user.to_primitive())
        link_item = {
            'owner': self.current_user.id,
            'username': self.current_user.username,
            'created_at': datetime.utcnow(),
            'updated_at': datetime.utcnow(),
            'url': url,
        }

        item = ListItem(link_item)
        item.validate()
        save_listitem(self.db_conn, item)
        return self.redirect('/list')
Exemple #8
0
def newListItem(category_id):
    if 'username' not in login_session:
        return redirect('/login')
    categories = session.query(Category)
    if request.method == 'POST':
        category_name = request.form['category']
        category = session.query(Category).filter_by(name=category_name).one()
        newItem = ListItem(name=bleach.clean(request.form['name']),
                           description=bleach.clean(
                               request.form['description']),
                           category_id=category.id,
                           user_id=login_session['user_id'])
        session.add(newItem)
        session.commit()
        flash('New Item %s Successfully Created' % (newItem.name))
        return redirect(
            url_for('showList', categories=categories,
                    category_id=category.id))
    else:
        return render_template('newlistitem.html',
                               categories=categories,
                               category_id=category_id)
Exemple #9
0
 def setUp(self):
     self.list_item = ListItem()