예제 #1
0
def show_user_tag_list(username):
    if username is None:
        username = current_user.username
        user = current_user
    elif current_user and username == current_user.username:
        user = current_user
    else:
        user = User.get_by_username(username)

    user_owned = current_user and current_user.username == username

    if user_owned:
        tags = Tag.get_cloud_by_user(user.userid)
        title = "My Tags"
    else:
        tags = Tag.get_public_by_user(user.userid)
        title = 'Tags for %s' % username

    return render_template('tag_index.html',
                           pageoptions=get_default_data(),
                           tags=tags,
                           curr_user=current_user,
                           page_title=title,
                           section_title=title,
                           user_owned=user_owned,
                           user=user)
예제 #2
0
 def setUp(self):
     tests.db.init_test_db()
     self.link = Link()
     self.link.userid = 1
     self.link.name = 'Test link'
     self.link.url = 'http://www.example.com/'
     self.link.tags = [Tag('test1'), Tag('test2')]
예제 #3
0
def do_bulk_edit(tags):
    # Redirect filters immediately
    if request.args.get('tag_select'):
        return redirect(
            url_for('do_bulk_edit', tags=request.args.get('tag_select')))

    available_tags = Tag.get_by_user(current_user.userid)

    if request.method == 'POST':

        linkids = request.form.getlist('linkids')
        edit_links = Link.get_by_id(linkids)

        valid = _links_are_valid(edit_links)
        tag_text = request.form.get('tag_text')

        if valid and tag_text and request.form.get('tag_submit'):
            for link in edit_links:
                link.add_tag(tag_text)
                link.save()
            flash('Tagged %d links as "%s"' % (len(edit_links), tag_text),
                  'success')
        elif valid and tag_text and request.form.get('tag_remove'):
            for link in edit_links:
                link.remove_tag(tag_text)
                link.save()
            flash(
                'Removed tag "%s" from %d links' % (tag_text, len(edit_links)),
                'success')

        if valid and request.form.get('set_privacy') and request.form.get(
                'privacy_submit'):
            _set_link_privacy(edit_links, request.form.get('set_privacy'))

        if valid and request.form.get('delete_selected_submit'):
            for link in edit_links:
                link.delete()
            flash('Deleted %s links' % len(edit_links), 'success')

    if tags == 'untagged':
        title = 'Manage Untagged Links'
        links = Link.get_untagged(current_user.userid)
    elif tags:
        taglist = tags.split(',')
        title = 'Manage Links in ' + tags
        links = Link.get_by_tag(taglist[0], current_user.userid)
    else:
        title = "Manage Links"
        links = Link.get_by_user(current_user.userid)

    return render_template("link_edit_bulk.html",
                           pageoptions=get_default_data(),
                           url_tags=tags,
                           links=links,
                           section_title=title,
                           tags=available_tags)
예제 #4
0
def show_user(username):
    usr = User.get_by_username(username)
    links = Link.get_public_by_most_recent(usr.userid, 30)
    tags = Tag.get_public_by_user(usr.userid)
    return render_template('public_dashboard.html',
                           pageoptions=get_default_data(),
                           tags=tags,
                           links=links,
                           user=usr,
                           curr_user=current_user)
예제 #5
0
파일: test_tags.py 프로젝트: pageer/lnto
 def test_get_cloud_by_user(self):
     tags = Tag.get_cloud_by_user(1)
     self.assertEqual(len(tags), 3)
     for t in tags:
         if t.tag_name == 'test1':
             self.assertEqual(t.link_count, 3)
         elif t.tag_name == 'blah':
             self.assertEqual(t.link_count, 2)
         elif t.tag_name == 'test2':
             self.assertEqual(t.link_count, 1)
         else:
             self.assertTrue(False, 'Got unexpected tags')
예제 #6
0
def do_add_link():
    req = request.form if request.method == 'POST' else request.args
    form = forms.AddLink(req, referer=get_referer())

    data = form.data
    data['userid'] = current_user.userid

    options = {
        'button_label':
        'Add Link',
        'post_view':
        req.get('post_view')
        if req.get('post_view') else url_for('do_add_link'),
    }

    link = Link(data)

    if request.method == 'POST' or request.args.get('submit') == '1 ':

        if link.already_exists():
            flash('This link already exists.  Try editing it instead.',
                  'error')
            return redirect(url_for('do_edit_link', linkid=link.linkid))

        taglist = form.tags.data.split(',') if form.tags.data else []
        link.set_tags(taglist)

        if form.validate():
            link.save()
            redir_target = link.url if form.redirect_to_target else get_referer(
            )
            return redirect(redir_target)
        flash('Invalid link submission', 'error')
        return str(form.errors)

    tags = Tag.get_by_user(current_user.userid)

    return render_template("link_add.html",
                           pageoptions=get_default_data(),
                           form=form,
                           link=link,
                           tags=tags,
                           options=options)
예제 #7
0
def do_edit_link(linkid):
    errors = []

    link = Link.get_by_id(linkid)
    if not link:
        abort(404)

    options = {
        'button_label': 'Save',
        'post_view': url_for('do_edit_link', linkid=linkid)
    }

    if request.method == 'POST':
        link.name = request.form.get('name')
        link.description = request.form.get('description')
        link.shortname = request.form.get('shortname')
        link.url = request.form.get('url')
        link.is_public = request.form.get('is_public') == '1'

        if request.form.get('tags').strip() == '':
            taglist = []
        else:
            taglist = request.form.get('tags').split(',')

        link.set_tags(taglist)

        if not (request.form.get('name') and request.form.get('url')):
            errors.append("Name and URL are required")

        if errors:
            link.save()
            if request.form.get('referer'):
                return redirect(request.form.get('referer'))

    tags = Tag.get_by_user(current_user.userid)

    return render_template("link_add.html",
                           pageoptions=get_default_data(),
                           link=link,
                           options=options,
                           tags=tags,
                           errors=errors)
예제 #8
0
파일: test_tags.py 프로젝트: pageer/lnto
 def test_get_public_by_user(self):
     tags = Tag.get_public_by_user(2)
     self.assertEqual(len(tags), 1)
예제 #9
0
파일: test_tags.py 프로젝트: pageer/lnto
 def test_get_public(self):
     tags = Tag.get_public()
     self.assertEqual(len(tags), 4)
예제 #10
0
파일: test_tags.py 프로젝트: pageer/lnto
 def test_get_by_name_does_not_exist(self):
     tag = Tag.get_by_name('thisdoesnotexist')
     self.assertEqual(tag.tag_name, 'thisdoesnotexist')
예제 #11
0
파일: test_tags.py 프로젝트: pageer/lnto
 def test_get_by_name_exists(self):
     tag = Tag.get_by_name('test1')
     self.assertEqual(tag.tag_name, 'test1')
예제 #12
0
파일: dashboard.py 프로젝트: pageer/lnto
 def get_module_data(self):
     return Tag.get_cloud_by_user(self.userid)