Пример #1
0
class AllCommunities(Resource):
    @jwt_required
    @marshal_with(
        CommunityModel.add_is_fav_to_marshaller(
            CommunityModel.get_detailed_marshaller()))
    def post(self):
        data = post_parser.parse_args()

        founder = UserModel.find_by_username(get_jwt_identity())
        car = CarModel.find_by_id(data['car'])

        if not car:
            abort(404, message=CAR_DOESNT_EXIST)

        if not car.owner.id == founder.id:
            abort(400, message=CANNOT_CREATE_COMMUNITY_WITH_FOREIGN_CAR)

        if CommunityModel.find_by_car_id(car.id):
            abort(400, message=COMMUNIY_WITH_THIS_CAR_ALREADY_EXISTS)

        new_community = CommunityModel(name=data['name'],
                                       car=car,
                                       users=[founder])

        try:
            new_community.persist()
            faved_community: CommunityUserLinkModel = assure_favourite_community(
                founder.id)
            if faved_community and faved_community.community_id == new_community.id:
                new_community.is_favourite = faved_community.is_favourite
            return new_community, 201
        except:
            abort(500, message=INTERNAL_SERVER_ERROR)
Пример #2
0
class UserCommunities(Resource):
    @jwt_required
    @marshal_with(
        CommunityModel.add_is_fav_to_marshaller(
            CommunityModel.get_detailed_marshaller()))
    def get(self):
        user = UserModel.find_by_username(get_jwt_identity())

        community_user_links = CommunityUserLinkModel.find_by_user(user.id)
        for cul in community_user_links:
            cul.community.is_favourite = cul.is_favourite

        user_communities = [
            c.community for c in community_user_links if c.invitation_accepted
        ]

        for c in user_communities:
            is_owner = CommunityUserLinkModel.find_by_user_and_community(
                user.id, c.id).is_owner
            c.is_deletable = is_owner
            c.is_editable = is_owner

        return user_communities, 200