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)
def show_delete_link(linkid): link = Link.get_by_id(linkid) if not link.is_owner(current_user): flash('You do not have permission to delete this link.', 'error') elif request.form.get('confirm'): link.delete() flash('Deleted link', 'success') return redirect(url_for('show_index')) elif request.form.get('cancel'): return redirect(request.form.get('referer')) return render_template("link_delete.html", pageoptions=get_default_data(), link=link)
def api_delete_link(): if not request.form.get('linkid'): return json_error('No linkid specified') link = Link.get_by_id(request.form.get('linkid')) error = validate_link(link) if error: return error try: link.delete() return json_success() except Exception as ex: return json_error('Error deleting link - ' + str(ex))
def show_link(linkid): link = Link.get_by_id(linkid) if link is None: abort(404) if link.is_owner(current_user): related = Link.get_recent_by_tag(link.get_taglist(), current_user.userid) else: related = Link.get_recent_public_by_tag(link.get_taglist(), link.userid) return render_template('link.html', pageoptions=get_default_data(), link=link, user=current_user, related=related)
def api_add_tag(): if not request.form.get('linkid') or not request.form.get('tags'): return json_error('Missing linkid or tags parameters') link = Link.get_by_id(request.form.get('linkid')) tags = request.form.get('tags').split(',') error = validate_link(link) if error: return error try: for tag in tags: link.add_tag(tag.strip()) link.save() return json_success() except Exception as ex: return json_error('Error adding tags - ' + str(ex))
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)
def test_get_by_id_array_none_exist(self): result = Link.get_by_id([234, 123]) self.assertEqual(len(result), 0)
def test_get_by_id_array_one_exists(self): result = Link.get_by_id([1, 123]) self.assertEqual(len(result), 1)
def test_get_by_id_array_all_exist(self): result = Link.get_by_id([1, 2]) self.assertEqual(len(result), 2)
def test_get_by_id_nonexistent(self): result = Link.get_by_id(123) self.assertEqual(result, None)
def test_get_by_id_exists(self): result = Link.get_by_id(1) self.assertTrue(result.__class__ is Link)
def show_linkurl(linkid): link = Link.get_by_id(linkid) if link is None: abort(404) link.get_hit(current_user).add_hit() return redirect(link.url)
def get_link_metadata(linkid): link = Link.get_by_id(linkid) error = validate_link(link) if error: return error return json_success(link.serializable())