def test_isolation2(app):
    tag = Tag(id=str(uuid.uuid4()), name="Test tag 3")
    db.session.add(tag)
    db.session.commit()

    assert len(Tag.query.all()) == 1
    # test with query
    tag_db = tag.query.first()
    assert tag_db.name == "Test tag 3"
Exemple #2
0
def update_or_insert(info):
    session = DBSession()
    target_movie = session.query(Movie).filter_by(**{'title': info['basic']['title'], 'year': info['basic']['year']}) \
        .first()
    if target_movie:
        target_movie.uri = info['basic']['uri']
        target_movie.update_date = info['basic']['update_date']
        target_movie.viedo_files = info['basic']['viedo_files']

    else:
        new_movie = Movie(**info['basic'])
        session.add(new_movie)
        # 推送新电影信息
        session.flush()
        push_run(info, new_movie.id)

        # 更新Tag
        for tag in info['tags']:
            if session.query(Tag).filter(Tag.text == tag).count() > 0:
                tar_tag = session.query(Tag).filter(Tag.text == tag).first()
            else:
                tar_tag = Tag(tag)
                session.add(tar_tag)
                session.flush()
            new_movie_tag = MovieTag(new_movie.id, tar_tag.id)
            session.add(new_movie_tag)

        # 更新导演信息
        for director in info['directors']:
            if session.query(Role).filter(
                    Role.name == director['name']).count() > 0:
                tar_role = session.query(Role).filter(
                    Role.name == director['name']).first()
            else:
                tar_role = Role(director['name'], director['info'])
                session.add(tar_role)
                session.flush()
            new_movie_director = MovieDirector(new_movie.id, tar_role.id)
            session.add(new_movie_director)

        # 更新演员信息
        for actor in info['actors']:
            if session.query(Role).filter(
                    Role.name == actor['name']).count() > 0:
                tar_role = session.query(Role).filter(
                    Role.name == actor['name']).first()
            else:
                tar_role = Role(actor['name'], actor['info'])
                session.add(tar_role)
                session.flush()
            new_movie_director = MovieActor(new_movie.id, tar_role.id)
            session.add(new_movie_director)

    session.commit()
    session.close()
Exemple #3
0
 def post(self):
     key = self.request.get("Key")
     tag = self.request.get("Tag")
     aKey = ndb.Key(urlsafe=key)
     anArticle = aKey.get()
     user = getUser()
     if user:
         q1 = Tag.query()
         q1 = q1.filter(Tag.user == user.user_id())
         q1 = q1.filter(Tag.scan == tag)
         aTag = q1.get()
         if not aTag:
             aTag = Tag(scan=str(tag),
                        scanKey=str(tag),
                        user=user.user_id())
             aTag.put()
     self.response.out.write('Create Tag')
Exemple #4
0
 def post(self):
     key = self.request.get("Key")
     tag = self.request.get("Tag")
     aKey = ndb.Key(urlsafe=key)
     anArticle = aKey.get()
     user = getUser()
     if user:
         q1 = Tag.query()
         q1 = q1.filter(Tag.scan == tag)
         q1 = q1.filter(Tag.user == user.user_id())
         aTag = q1.get()
         if not aTag:
             aTag = Tag(scan=str(tag),
                        scanKey=str(tag),
                        user=user.user_id())
             aTag.put()
         q1 = ProxyTag.query()
         q1 = q1.filter(ProxyTag.tag == aTag.key)
         q1 = q1.filter(ProxyTag.article == anArticle.key)
         q1 = q1.filter(ProxyTag.user == user.user_id())
         aProxy = q1.get()
         if aProxy:
             if aProxy.score == -1:
                 self.response.out.write('Already Updated')
                 return
             aProxy.key.delete()
             aProxy = ProxyTag(tag=aTag.key,
                               article=anArticle.key,
                               user=user.user_id(),
                               score=-1).put()
             queue = taskqueue.Queue(name='default')
             task = taskqueue.Task(url='/RemoveFromFilter',
                                   target='worker',
                                   params={
                                       'article': anArticle.key.urlsafe(),
                                       'tag': aTag.scan,
                                       'user': user.user_id()
                                   })
             rpc = queue.add_async(task)
             # Wait for the rpc to complete and return the queued task.
             task = rpc.get_result()
             self.response.out.write('Updated')
         else:
             self.response.out.write('Not Present')
Exemple #5
0
def compose():
    if request.method == "POST":
        if len(request.form.get("name")) < 4:
            flash("Snippet name must be at least 4 characters long")
            return redirect(request.referrer)
        request_tags = request.form.get("tags").replace(' ', '').split(',')
        if '' in request_tags:
            flash("Please provide at least one tag")
            return redirect(request.referrer)
        db_session()
        tags = {tag.name.lower(): tag for tag in db_session.query(Tag).all()}
        snippet = Snippet(name=request.form.get("name"),
                          snippet=request.form.get("codeSnippet"),
                          description=request.form.get("description"),
                          mode=request.form.get("mode"),
                          user=db_session.query(User).filter(
                              User.id == session["user_id"]).first())
        sn_tags = []
        new_tags = []
        for form_tag in request_tags:
            if form_tag.lower() in tags.keys():
                sn_tags.append(tags[form_tag.lower()])
            else:
                new_tags.append(Tag(form_tag))

        if new_tags:
            db_session.add_all(new_tags)
            for tag in new_tags:
                sn_tags.append(tag)
        snippet.add_tags(sn_tags)
        db_session.add(snippet)
        db_session.commit()
        db_session.remove()
        flash("Snippet saved")

        return redirect(url_for('index'))

    else:
        db_session()
        tags = [tag.name for tag in db_session.query(Tag).all()]
        db_session.remove()
        return render_template("compose.html", tags=tags)
Exemple #6
0
def addTags():
    post_data = request.get_json()
    url = post_data.get('article_url')
    exists = db.session.query(
        Article.query.filter(Article.article_url == url).exists()).scalar()
    if exists:
        tags = post_data.get("tags")
        for tag in tags:
            db.session.add(Tag(article_url=url, tag=tag))
            db.session.commit()

        response_object = {
            'status': 'success',
            'message': f'{tags} was added!'
        }
        return jsonify(response_object), 201

    else:
        response_object = {
            'status': 'Failure',
            'message': 'Schema constraint error'
        }
        return jsonify(response_object), 409
Exemple #7
0
def test_add_tag_to_kind(client):
    # somehow check_quick_token() looses the request in test setup
    with mock.patch("flask_security.decorators._check_token",
                    return_value=True):
        with mock.patch("flask_principal.Permission.can", return_value=True):
            kind_id = str(uuid.uuid4())
            kind = Kind(
                id=kind_id,
                name="Indica",
                c=False,
                h=False,
                i=True,
                s=False,
                short_description_nl="Short NL",
                description_nl="Description NL",
                short_description_en="Short NL",
                description_en="Description EN",
            )
            tag = Tag(id=str(uuid.uuid4()), name="Gigly")
            db.session.add(kind)
            db.session.add(tag)
            db.session.commit()

            data = {
                "kind_id": str(kind.id),
                "tag_id": str(tag.id),
                "amount": 60
            }
            response = client.post(f"/v1/kinds-to-tags",
                                   json=data,
                                   follow_redirects=True)
            assert response.status_code == 201

            response = client.get(f"/v1/kinds-to-tags", follow_redirects=True)
            assert response.status_code == 200
            json = response.json
            assert len(json) == 1
Exemple #8
0
def update_or_insert(info):
    session = DBSession()
    target_movie = session.query(Movie).filter_by(**{'title': info['basic']['title'], 'year': info['basic']['year']}) \
        .first()
    if target_movie:
        target_movie.uri = info['basic']['uri']
        target_movie.update_date = info['basic']['update_date']

    else:
        new_movie = Movie(**info['basic'])
        session.add(new_movie)

        for tag in info['tags']:
            if session.query(Tag).filter(Tag.text == tag).count() > 0:
                tar_tag = session.query(Tag).filter(Tag.text == tag).first()
            else:
                tar_tag = Tag(tag)
                session.add(tar_tag)
                session.flush()
            new_movie_tag = MovieTag(new_movie.id, tar_tag.id)
            session.add(new_movie_tag)

    session.commit()
    session.close()
Exemple #9
0
 def post(self):
     """New Tag"""
     tag = Tag(id=str(uuid.uuid4()), **api.payload)
     save(tag)
     return tag, 201
Exemple #10
0
def edit(snippet_id):
    if request.method == "GET":
        if not snippet_id:
            flash("No snippet id provided")
            return redirect(url_for('index'))
        db_session()
        tags = [tag.name for tag in db_session.query(Tag).all()]
        snippet = db_session.query(Snippet).filter(Snippet.id == snippet_id). \
            filter(Snippet.user_id == session["user_id"]).first()
        if not snippet:
            db_session.remove()
            flash(
                "Something went wrong, probably provided the wrong snippet id or the snippet is not yours"
            )
            return redirect(url_for('index'))
        return render_template("edit.html", snippet=snippet, tags=tags)
    else:
        # Update snippet
        if not snippet_id:
            flash("No snippet id provided")
            return redirect(url_for('index'))
        if len(request.form.get("name")) < 4:
            flash("Snippet name must be at least 4 characters long")
            return redirect(request.referrer)
        db_session()
        snippet = db_session.query(Snippet).filter(Snippet.id == snippet_id). \
            filter(Snippet.user_id == session["user_id"]).first()
        if not snippet:
            db_session.remove()
            flash(
                "Something went wrong, probably provided the wrong snippet id or the snippet is not yours"
            )
            return redirect(url_for('index'))
        snippet.name = request.form.get("name")
        snippet.snippet = request.form.get("codeSnippet")
        snippet.description = request.form.get("description")
        snippet.mode = request.form.get("mode")
        snippet.tags = []
        tags = {tag.name.lower(): tag for tag in db_session.query(Tag).all()}
        sn_tags = []
        new_tags = []
        request_tags = request.form.get("tags").replace(' ', '').split(',')
        if '' in request_tags:
            db_session.remove()
            flash("Please provide at least one tag")
            return redirect(request.referrer)
        for form_tag in request_tags:
            if form_tag.lower() in tags.keys():
                sn_tags.append(tags[form_tag.lower()])
            else:
                new_tags.append(Tag(form_tag))

        if new_tags:
            db_session.add_all(new_tags)
            for tag in new_tags:
                sn_tags.append(tag)
        snippet.add_tags(sn_tags)
        db_session.commit()
        db_session.remove()
        flash("Snippet updated")
        return redirect(url_for('index'))
def find_or_create_tag(tagName):
    tag = Tag.query.filter_by(name=tagName).first()
    return tag if tag else Tag(name=tagName)