Ejemplo n.º 1
0
    def setUp(self):
        super().setUp()
        self.login()

        category = Category(name='默认')
        post = Post(title='post title', category=category, body='post body')
        comment_admin = Comment(body='admin comment',
                                post=post,
                                from_admin=True,
                                reviewed=True)
        comment_guest = Comment(author='guest',
                                post=post,
                                body='guest comment',
                                from_admin=False,
                                reviewed=True)
        comment_unread = Comment(author='unread',
                                 post=post,
                                 from_admin=False,
                                 body='unread comment',
                                 reviewed=False)
        link = Link(name='link', tag='other', url='https://www.google.com')
        friend_link = Link(name='friend_link',
                           tag='friendLink',
                           url='https://github.com')
        db.session.add_all([
            category, post, comment_admin, comment_guest, comment_unread, link,
            friend_link
        ])
        db.session.commit()
Ejemplo n.º 2
0
def fake_links():
    twitter = Link(name='Twitter', url='#')
    facebook = Link(name='Facebook', url='#')
    linkedin = Link(name='LinkedIn', url='#')
    google = Link(name='Google+', url='#')
    db.session.add_all([twitter, facebook, linkedin, google])
    db.session.commit()
Ejemplo n.º 3
0
    def test_linking(self):
        message = Message(tlg_chat_id=1,
                          tlg_msg_id=1,
                          text='test',
                          media_group_id=None,
                          from_user=1,
                          to_user=2,
                          file_ids=[],
                          from_claimant=True)

        db.session.add(message)
        db.session.commit()

        b_m = namedtuple('b_m', ['message_id'])
        bot_message = b_m(message_id=2)

        link = Link(from_chat_id=message.tlg_chat_id,
                    source_message_id=message.tlg_msg_id,
                    current_message_id=bot_message.message_id,
                    claimant='test_claimant')

        db.session.add(link)
        db.session.commit()

        cl_chat_id_raw = Link.query\
            .filter_by(current_message_id=bot_message.message_id)\
            .first()

        old_message = Message.query\
            .filter_by(tlg_chat_id=cl_chat_id_raw.source_message_id).first()

        self.assertEqual(old_message, message)
Ejemplo n.º 4
0
def create_link():
    """ Create a new link for a given user 
    
    :return: JSON of new link if successful, error response if not
    """
    # TODO: validate user ID
    try:
        data = request.json
        # See if this specific user has a link entity with this specific url
        # This should prevent a link from being added twice but also run it through regardless
        link = Link.query.filter_by(user_id=data['user_id'], url=data['url']).first()
        if not link:
            link = Link(
                user_id=data['user_id'],
                url=data['url'],
            )
            db.session.add(link)
            db.session.commit()
        process_link(link)
        return APIResponseBuilder.success({
            "link": link
        })
    except SQLAlchemyError as e:
        return APIResponseBuilder.error(f"Issue running query: {e}")
    except Exception as e:
        return APIResponseBuilder.error(f"Error encountered: {e}")
Ejemplo n.º 5
0
def create_empty_link():
    link = Link()

    db.session.add(link)
    db.session.commit()

    return link
Ejemplo n.º 6
0
    def setUp(self) -> None:
        """启动测试前执行"""
        app = create_app(config='test')
        self.context = app.test_request_context()
        self.context.push()
        self.client = app.test_client()
        self.runner = app.test_cli_runner()

        self.runner.invoke(args=['initdb', '--_init'])
        self.fake_data = FakeData()
        self.fake_data.fake_admin()

        # 测试前生成一些少部分测试数据以供使用
        category = Category(
            name='testCategory',
            alias='test-alias',
        )
        link = Link(
            name='testLink',
            url='https://www.test.com',
        )
        post = Post(title='testTitle',
                    content='<p>testContent<p>',
                    content_markdown='testContent',
                    description='testDescription',
                    categories=[category])
        comment = Comment(author='testAuthor',
                          content='testCommentContent',
                          post=post,
                          reviewed=True)
        with db.auto_commit():
            db.session.add_all([category, link, post, comment])
Ejemplo n.º 7
0
def index():
    form = ShortenURL()
    if form.validate_on_submit():
        original_url = form.original_url.data

        link = form.custom_link.data
        if not link:
            link = generate_link()
        if current_user.is_authenticated:
            user = current_user
        else:
            user = None
        new_entry = Link(link=link, original_url=original_url, user=user)
        db.session.add(new_entry)
        db.session.commit()
        return redirect(url_for('main.index', shortened=link))

    shortened = Link.query.filter_by(link=request.args.get('shortened')).first()

    managed_links = []
    if current_user.is_authenticated:
        for entry in current_user.managed_links.order_by('id'):
            managed_links.append(entry)
    else:
        if shortened:
            managed_links.append(shortened)
    managed_links.reverse()

    return render_template('main/index.html', form=form, managed_links=managed_links)
Ejemplo n.º 8
0
def test_link_model_creates(client):
    with app.app_context():
        new_link = Link(LinkId=None, Text="new", URL="https://newurl.com")
        db.session.add(new_link)
        db.session.commit()
        link = Link.query.filter_by(Text="new").first()
        assert link.Text == "new"
Ejemplo n.º 9
0
def save_link(message, bot_message):
    link = Link(from_chat_id=message.chat.id,
                source_message_id=message.message_id,
                current_message_id=bot_message.message_id,
                claimant=str(message.from_user.username).lower())

    db.session.add(link)
    db.session.commit()
Ejemplo n.º 10
0
def query_add_links(process_id, products, link_type):
    links = [
        Link(process_id=process_id, product_id=product_id, link_type=link_type)
        for product_id in products
    ]
    db.session.add_all(links)
    db.session.commit()
    db.session.close()
    return
Ejemplo n.º 11
0
def add_url():
    original_url = request.form['original_url']
    link = Link(original_url=original_url)
    db.session.add(link)
    db.session.commit()

    return render_template('url_added.html',
                           new_link=link.short_url,
                           original_url=link.original_url)
Ejemplo n.º 12
0
def make_relation_back(user, link, relation_back):
    if link is not None and relation_back != '':
        new_link = Link(user=user)
        new_link.node1 = link.node2
        new_link.node2 = link.node1
        new_link.provider1 = link.provider2
        new_link.provider2 = link.provider1
        new_link.relation = relation_back
        new_link.save()
Ejemplo n.º 13
0
def fake_links():
    google = Link(name='Google', url='#')
    baidu = Link(name='百度', url='#')
    linkedin = Link(name='LinkedIn', url='#')
    douban = Link(name='豆瓣', url='#')
    shiguang = Link(name='时光网', url='#')
    zhihu = Link(name='知乎', url='#')
    hackernews = Link(name='Hacker News', url='#')
    reddit = Link(name='Reddit', url='#')
    db.session.add_all(
        [google, baidu, linkedin, douban, shiguang, zhihu, hackernews, reddit])
    db.session.commit()
Ejemplo n.º 14
0
def make_relation(user, parent_node_id, parent_node_provider, node_id,
                  node_provider, relation, relation_back):
    link = Link(user=user,
                node1=parent_node_id,
                provider1=parent_node_provider)
    link.node2 = node_id
    link.provider2 = node_provider
    link.relation = relation
    link.save()
    make_relation_back(user, link, relation_back)
Ejemplo n.º 15
0
def new_link():
    form = LinkForm()
    if form.validate_on_submit():
        with db.auto_commit():
            link = Link()
            link.set__attrs(form.data)
            db.session.add(link)
        flash('添加链接成功', 'success')
        return redirect(url_for('web.manage_links'))
    return render_template('admin/new_link.html', form=form)
Ejemplo n.º 16
0
 def add_link(self, title, manager_page_id):
     manager_page = self.page(page_id=manager_page_id)
     if manager_page is not None and self.user and self.user.has_perm(
             APP_NAME + '.add_link'):
         profile = ProfileRepo(user=self.user).me
         if profile is not None:
             link = Link(title=title, icon_material='link', profile=profile)
             link.save()
             manager_page.links.add(link)
         return True
     return False
Ejemplo n.º 17
0
    def setUp(self):
        super().setUp()
        self.login()

        category = Category(name='默认')
        post = Post(title='Post', category=category, body='post body')
        comment = Comment(body='comment body', post=post, from_admin=True,
                          reviewed=True)
        link = Link(name='link', tag='other', url='https://link.com')
        db.session.add_all([category, post, comment, link])
        db.session.commit()
Ejemplo n.º 18
0
def demo():
    link = Link(url='https://www.w3schools.com/js/js_json_intro.asp',
                user_id="aaabbbcccddd",
                link_title="test",
                link_description="test desc")
    db.session.add(link)
    db.session.commit()
    print("Starting process")
    tasks.process_link(link)
    print("Ending process")
    return "Initialized"
Ejemplo n.º 19
0
def new_link():
    form = LinkForm()
    if form.validate_on_submit():
        name = form.name.data
        url = form.url.data
        link = Link(name=name, url=url)
        db.session.add(link)
        db.session.commit()
        flash('Link created.', 'success')
        return redirect(url_for('.manage_link'))
    return render_template('/admin/new_link.html', form=form)
Ejemplo n.º 20
0
def process():
    form = LinkForm(request.form)
    if form.validate():
        page = make_page()
        short_link = request.host_url + page
        link = Link(page=page, short_link=short_link, **form.data)
        if current_user.is_authenticated:
            link.user = current_user
        db.session.add(link)
        db.session.commit()
        return jsonify({'short_link': short_link})
    return jsonify({'errors': form.full_link.errors[-1]})
Ejemplo n.º 21
0
def get_parent_links(user, context, identifier, provider='text'):
    context['parent_links'] = list(
        Link.objects.filter(user=user, node2=identifier, provider2=provider))
    if provider == 'file' and identifier != '/':
        new_item = Link(user=user,
                        node1=os.path.abspath(
                            os.path.join(identifier, os.pardir)),
                        provider1='file',
                        node2=identifier,
                        provider2='file',
                        relation='folder')
        context['parent_links'].append(new_item)
    return describe_raw_links(context, 'parent_links')
Ejemplo n.º 22
0
def link_add(request):
    context = {
        "profile": Profile.objects.get(user=request.user),
        "bot_api_key": BotKey.objects.get(user=request.user).key
    }
    if request.method == "POST":
        link_form = LinkAddForm(request.user, request.POST)
        if link_form.is_valid():
            try:
                try:
                    folder = Folder.objects.get(
                        user=request.user, name=link_form.data.get("folder"))
                except Folder.DoesNotExist:
                    messages.error(request, "Подборки не существует.")
                    context["form"] = LinkAddForm(request.user, request.POST)
                    return render(request, "link/add.html", context)
                link = Link.objects.get(link=link_form.data.get("link"),
                                        folder=folder)
                messages.error(request, "Вы уже сохранили данную ссылку.")
                return redirect('link_add')
            except Link.DoesNotExist:
                ok = check_blacklist(link_form.data['link'])
                if ok is not None:
                    messages.error(request,
                                   f"Ссылка не должна содержать \"{ok}\"")
                    return redirect(reverse("link_add"))
                folder = Folder.objects.get(user=request.user,
                                            name=link_form.data.get("folder"))
                link = Link(link=link_form.data.get("link"), folder=folder)
                link.save()
                messages.success(request, "Ссылка добавлена")
                return redirect(
                    reverse('folder_view', kwargs={"folder_id": folder.id}))
        else:
            messages.error(request, "Неправильные ссылка")
            context["form"] = LinkAddForm(request.user, request.POST)
    else:
        folder_id = request.GET.get('folder_id', None)
        context["form"] = LinkAddForm(request.user)
        if folder_id is not None:
            try:
                folder = Folder.objects.get(id=folder_id, user=request.user)
                context["form"] = LinkAddForm(
                    request.user, initial={"folder": [folder.name]})
            except Folder.DoesNotExist:
                pass
        folders = Folder.objects.filter(user=request.user)
        if len(folders) == 0:
            messages.warning(request, "Для начала, создайте подборку.")
            return redirect(reverse('folder_add'))
    return render(request, "link/add.html", context)
Ejemplo n.º 23
0
    def setUp(self):
        super().setUp()
        self.login()

        category = Category(name='Default')
        post = Post(title='Hello Post',
                    category=category,
                    body='blog post test')
        comment = Comment(body='a blog comment', post=post, from_admin=True)
        link = Link(name='MDN',
                    url='https://developer.mozilla.org/zh-CN/docs/Web/HTTP')

        db.session.add_all([category, post, comment, link])
        db.session.commit()
Ejemplo n.º 24
0
def index():
    form = LinkForm()
    if form.validate_on_submit():
        link = Link(id=form.id.data,
                    chrome_url=form.chrome_url.data,
                    firefox_url=form.firefox_url.data,
                    safari_url=form.safari_url.data,
                    opera_url=form.opera_url.data,
                    edge_url=form.edge_url.data,
                    fallback_url=form.fallback_url.data)
        db.session.add(link)
        db.session.commit()
        return render_template('success.html', id=link.id)
    return render_template('index.html', form=form, id=random_string())
Ejemplo n.º 25
0
    def test_save_link(self):
        link = Link(from_chat_id=3,
                    source_message_id=2,
                    current_message_id=3,
                    claimant='test_claimant2')

        db.session.add(link)
        db.session.commit()

        cl_chat_id_raw = Link.query\
            .filter_by(current_message_id=3)\
            .first()

        self.assertEqual(cl_chat_id_raw, link)
Ejemplo n.º 26
0
def api_create_link():
    original_link = request.args.get("original_link")
    if original_link is not None:
        link = Link(original_link=original_link)
        if current_user.is_authenticated:
            link.set_author(current_user)

        # additional commit to set link.id that is used to created shortened link
        db.session.add(link)
        db.session.commit()
        link.set_shortened_link()
        db.session.add(link)
        db.session.commit()
        return jsonify({"ok": True, "link": link.serialized()})
    return jsonify({"ok": False})
Ejemplo n.º 27
0
def manage_link():
    """后台链接管理管理视图"""
    form = NewLinkForm(request.form)

    if form.validate_on_submit():
        with db.auto_commit():
            link = Link()
            link.set_attr(form.data)
            db.session.add(link)
        return redirect_back()

    fields_names, fields_errors = get_form_error_items(form)
    return render_template('admin/manage_link.html', form=form,
                           fields_errors=fields_errors,
                           fields_names=fields_names)
Ejemplo n.º 28
0
def index():
    form = LinkForm()
    if form.validate_on_submit():
        link = Link(redirect_url=form.redirect_url.data,
                    title=form.title.data,
                    subtext=form.subtext.data,
                    image_url=form.image_url.data,
                    favicon_url=form.favicon_url.data)
        link.slug = '-'.join(link.title.lower().split()[:8])
        db.session.add(link)
        db.session.commit()
        return render_template('index.html',
                               url=url_for('do_redirect',
                                           _external=True,
                                           slug=link.slug))
    return render_template('index.html', form=form)
Ejemplo n.º 29
0
def new_link():
    form = NewLinkForm()
    if form.validate_on_submit():
        data = {"title": form.title.data,
                "category": form.category.data,
                "divider_below": form.divider_below.data,
                "index": form.index.data,
                "url": form.url.data}

        newlink = Link(**data)
        db.session.add(newlink)
        db.session.commit()
        time.sleep(0.5)
        return redirect("/pages")

    return utils.render_with_navbar("link/form.html", form=form)
Ejemplo n.º 30
0
    def setUp(self):
        super().setUp()
        self.login()

        category = Category(name='Default')
        post = Post(title='Hello Post',
                    category=category,
                    body='blog post test')
        comment = Comment(body='a blog comment',
                          post=post,
                          from_admin=True,
                          reviewed=True)
        link = Link(name='GitHub', url='https://github.com/wtraceback')

        db.session.add_all([category, post, comment, link])
        db.session.commit()