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)
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