示例#1
0
def test_blog_invite_cant_accept_other_user(
    client, blog, user_token, user_not_in_blog_with_token, other_user_and_token
):

    body = {"user": user_not_in_blog_with_token[0].id, "role": "writer"}

    rv = client.post(
        "/blogs/" + str(blog.url) + "/invite/",
        headers={"Authorization": user_token[1].token},
        json=body,
    )
    assert rv.json["success"] == 1
    assert "invite" in rv.json
    assert BlogInvite.select().count() == 1, "There should be one invite"

    invite = BlogInvite.get()
    assert invite.blog.id == blog.id
    assert invite.user_from.id == user_token[0].id
    assert invite.user_to.id == user_not_in_blog_with_token[0].id
    assert invite.role == 2
    assert not invite.is_accepted

    query = BlogParticipiation.select().where(
        (BlogParticipiation.user == user_not_in_blog_with_token[0])
        & (BlogParticipiation.blog == blog)
    )

    assert query.count() == 0, "User should not be added to blog"

    from src.model import db

    db.db_wrapper.database.close()

    rv = client.post(
        "/blogs/" + str(blog.url) + "/invite/",
        headers={"Authorization": other_user_and_token[1].token},
        json={"invite": rv.json["invite"]},
    )
    assert rv.json["success"] == 0
    assert rv.json["error"]["code"] == 3
    assert BlogInvite.select().count() == 1, "There should be one invite"

    invite = BlogInvite.get()
    assert invite.blog.id == blog.id
    assert invite.user_from.id == user_token[0].id
    assert invite.user_to.id == user_not_in_blog_with_token[0].id
    assert invite.role == 2
    assert not invite.is_accepted

    query = BlogParticipiation.select().where(
        (BlogParticipiation.user == user_not_in_blog_with_token[0])
        & (BlogParticipiation.blog == blog)
    )
    assert query.count() == 0, "User should not be added to blog"

    query = BlogParticipiation.select().where(
        (BlogParticipiation.user == other_user_and_token[0])
        & (BlogParticipiation.blog == blog)
    )
    assert query.count() == 0, "Other user should not be added to blog"
示例#2
0
def invites(url):
    """Пригласить пользователя или принять инвайт"""
    blog = Blog.get_or_none(Blog.url == url)
    if blog is None:
        return errors.not_found()

    user = get_user_from_request()

    json = request.get_json()

    if "invite" in json:
        invite = BlogInvite.get_or_none(BlogInvite.id == json["invite"])
        if invite is None:
            return errors.invite_not_found()

        if invite.user_to.id != user.id:
            return errors.no_access()

        invite.is_accepted = True
        invite.save()

        BlogParticipiation.create(blog=invite.blog, user=user, role=invite.role)

        return jsonify({"success": 1})
    elif "user" in json and "role" in json:
        user_to = User.get_or_none(User.id == json["user"])
        if user_to is None:
            return errors.not_found()

        role = Blog.get_user_role(blog, user)

        if role is None:
            return errors.no_access()

        role_to = json["role"]
        roles = {"owner": 1, "writer": 2, "reader": 3}

        if role_to not in roles:
            return errors.invite_wrong_role()

        role_to = roles[role_to]
        if role > role_to:
            return errors.no_access()

        invite = BlogInvite.create(
            blog=blog, user_from=user, user_to=user_to, role=role_to
        )

        Notification.create(
            user=user,
            created_date=datetime.datetime.now(),
            text='Вас пригласили в блог "{0}"'.format(blog.title),
            object_type="invite",
            object_id=invite.id,
        )

        return jsonify({"success": 1, "invite": invite.id})
示例#3
0
def join(url):
    """Присоеденится к блогу. Работает только с открытми блогами"""
    blog = Blog.get_or_none(Blog.url == url)
    if blog is None:
        return errors.not_found()
    if blog.blog_type != 1:
        return errors.no_access()

    user = get_user_from_request()
    if user is None:
        return errors.not_authorized()
    if BlogParticipiation.get_or_none(blog=blog, user=user) is None:
        BlogParticipiation.create(blog=blog, user=user, role=3)

    return jsonify({"success": 1})
示例#4
0
def blog(user):
    blog = Blog.create(
        title="test_blog",
        url="test_blog",
        creator=user,
        created_date=datetime.datetime.now(),
        updated_date=datetime.datetime.now(),
    )
    BlogParticipiation.create(blog=blog, user=user, role=1)

    from src.model import db

    db.db_wrapper.database.close()

    return blog
示例#5
0
def test_create_jam(client, user_token):
    rv = client.post(
        "/jams/",
        headers={"Authorization": user_token[1].token},
        json={
            "title": "test title for jam",
            "url": "test-jam",
            "description": "description",
            "short_description": "short",
            "start_date": datetime.datetime.now().timestamp() + 5,
            "end_date": datetime.datetime.now().timestamp() + 10,
        },
    )
    assert rv.json["success"] == 1
    assert "jam" in rv.json

    blog = Blog.get()
    assert blog.creator == user_token[0], "Wrong creator"
    assert blog.description == 'Это блог для джема "test title for jam"'

    participiation = BlogParticipiation.get()
    assert participiation.user == user_token[0]
    assert participiation.role == 1, "Not owner on creation"

    jam = Jam.get()
    assert jam.creator == user_token[0], "Wrong creator"
    assert jam.title == "test title for jam"
    assert jam.url == "test-jam"
    assert jam.description == "description"
    assert jam.short_description == "short"
    assert int(jam.start_date) > int(datetime.datetime.now().timestamp())
    assert int(jam.start_date) == int(jam.end_date - 5)
示例#6
0
def create_blog_for_jam(user, title, url, image=None):
    blog = Blog.create(
        created_date=datetime.datetime.now(),
        updated_date=datetime.datetime.now(),
        creator=user,
    )
    BlogParticipiation.create(blog=blog, user=user, role=1)

    blog.title = title
    blog.description = f'Это блог для джема "{title}"'
    blog.url = url
    blog.blog_type = 1
    if image:
        blog.image = Content.get_or_none(Content.id == image)

    blog.updated_date = datetime.datetime.now()
    blog.save()

    return blog
示例#7
0
def create_blog():
    """Создать блог"""
    user = get_user_from_request()

    url = request.get_json()["url"]
    if Blog.get_or_none(Blog.url == url) is not None:
        return errors.blog_url_already_taken()

    blog = Blog.create(
        created_date=datetime.datetime.now(),
        updated_date=datetime.datetime.now(),
        creator=user,
    )

    BlogParticipiation.create(blog=blog, user=user, role=1)

    fill_blog_from_json(blog, request.get_json())
    blog.save()

    return jsonify({"success": 1, "blog": blog.to_json()})
示例#8
0
def blog(user, reader_token):
    blog = Blog.create(
        title="test_blog",
        url="test_blog",
        creator=user,
        created_date=datetime.datetime.now(),
        updated_date=datetime.datetime.now(),
    )
    BlogParticipiation.create(blog=blog, user=user, role=1)

    writer = User.create(
        username="******",
        password="******",
        email="asd",
        registration_date=datetime.datetime.now(),
        last_active_date=datetime.datetime.now(),
    )
    BlogParticipiation.create(blog=blog, user=writer, role=2)

    BlogParticipiation.create(blog=blog, user=reader_token[0], role=3)

    from src.model import db

    db.db_wrapper.database.close()

    return blog
示例#9
0
def jam(user, reader_token):
    jam_title = "test jam"
    jam_url = "test-jam"

    blog = Blog.create(
        title="test_blog",
        url="test_blog",
        creator=user,
        created_date=datetime.datetime.now(),
        updated_date=datetime.datetime.now(),
    )
    BlogParticipiation.create(blog=blog, user=user, role=1)

    blog.title = jam_title
    blog.description = f'Это блог для джема "{jam_title}"'
    blog.url = jam_url
    blog.blog_type = 1
    blog.save()

    jam = Jam.create(
        created_date=datetime.datetime.now(),
        updated_date=datetime.datetime.now(),
        creator=user,
        blog=blog,
        title=jam_title,
        url=jam_url,
        description="some description without tags",
        short_description="short description",
        start_date=datetime.datetime.now() + timedelta(seconds=1),
        end_date=datetime.datetime.now() + timedelta(seconds=5),
    )

    from src.model import db

    db.db_wrapper.database.close()

    return jam
示例#10
0
def test_create_blog(client, user_token):
    rv = client.post(
        "/blogs/",
        headers={"Authorization": user_token[1].token},
        json={"url": "blog-url"},
    )
    assert rv.json["success"] == 1
    assert "blog" in rv.json, "No blog in response"

    blog = Blog.get()
    assert blog.creator == user_token[0], "Wrong creator"
    assert blog.id == rv.json["blog"]["id"]

    participiation = BlogParticipiation.get()
    assert participiation.blog.id == rv.json["blog"]["id"]
    assert participiation.user == user_token[0]
    assert participiation.role == 1, "Not owner on creation"
示例#11
0
def test_edit_jam(client, user_token, jam):
    rv = client.post(
        f"/jams/{jam.url}/",
        headers={"Authorization": user_token[1].token},
        json={"title": "new title"},
    )
    assert rv.json["success"] == 1
    assert "jam" in rv.json

    blog = Blog.get()
    assert blog.creator == user_token[0], "Wrong creator"
    assert blog.description == 'Это блог для джема "new title"'

    participiation = BlogParticipiation.get()
    assert participiation.user == user_token[0]
    assert participiation.role == 1, "Not owner on creation"

    jam = Jam.get()
    assert jam.creator == user_token[0], "Wrong creator"
    assert jam.title == "new title"
    assert jam.url == jam.url
    assert jam.description == jam.description
    assert jam.short_description == jam.short_description
示例#12
0
def convert():
    create_app()

    def get_blog_type(blog):
        if blog.blog_type == "open":
            return 1
        elif blog.blog_type == "hidden":
            return 3
        else:
            return 2

    for b in TuBlog.select():
        blog_type = get_blog_type(b)

        year = b.blog_date_add.year
        month = b.blog_date_add.month
        avatar = content.create_content(b.blog_avatar, "blog_avatar", b.blog,
                                        b.user_owner, year, month)

        updated = b.blog_date_edit
        if not updated:
            updated = b.blog_date_add

        owner = User.get_or_none(User.id == b.user_owner)
        if not owner:
            print("Skipped blog. Owner:" +
                  TuUser.get(TuUser.user == b.user_owner).user_login)
            continue

        about = content.replace_uploads_in_text(owner, b.blog_description)

        url = b.blog_url or "blog" + str(b.blog)
        blog = Blog.create(
            id=b.blog,
            created_date=b.blog_date_add,
            updated_date=updated,
            description=about,
            title=b.blog_title,
            url=url,
            blog_type=blog_type,
            creator=owner,
            image=avatar,
        )

        BlogParticipiation.create(
            blog=blog,
            user=owner,
            role=1,
        )

    for bu in TuBlogUser.select():
        role = 1
        if bu.user_role == 1:
            role = 3
        if bu.user_role > 1:
            role = 1

        BlogParticipiation.create(
            blog=Blog.get(Blog.id == bu.blog),
            user=User.get(User.id == bu.user),
            role=role,
        )