diff --git a/.terraform-version b/.terraform-version new file mode 100644 index 0000000000000000000000000000000000000000..9c6d6293b1a8f448def89c2d5bfa63b89a24e0cc --- /dev/null +++ b/.terraform-version @@ -0,0 +1 @@ +1.6.1 diff --git a/feed_posts/services.py b/feed_posts/services.py index fb191b74ffc9a453069f9a94a96e28a82652d496..39e47e6a0834b11b1ea65edfa321a145bfa2853c 100644 --- a/feed_posts/services.py +++ b/feed_posts/services.py @@ -6,6 +6,7 @@ from feed_posts.repositories import FeedPostRepository, FeedPostReactionReposito from openbook_auth.models import User from openbook_common.helpers import extract_urls_from_string from openbook_common.models import LinkPreview +from openbook_common.tracking import track, TrackingEvent from openbook_common.utils.helpers import extract_usernames_from_string from openbook_terms.models import FeedPostCategory, Topic @@ -53,6 +54,8 @@ class FeedPostService: self.mention_service.add_mentions(post_id=post.id, description=description, creator=creator) + track(creator, TrackingEvent("feedPostCreated", {"postId": str(post.id)})) + return post def get_feed_posts_by_user_id(self, user_id): diff --git a/openbook_communities/admin.py b/openbook_communities/admin.py index fdb45fc2bfaea28176f542fd9d508df0a5987425..856dc04a31c69d36a1be651a554f79acbb7ef21e 100644 --- a/openbook_communities/admin.py +++ b/openbook_communities/admin.py @@ -10,6 +10,7 @@ from openbook_communities.models import ( OnboardingStep, ) from openbook_communities.models.network_relationship import SpacesRelationship +from django.db.models import Count import traceback import structlog @@ -26,22 +27,31 @@ class CommunityNetworkRelationshipInline(admin.TabularInline): max_num = 1 extra = 0 + def get_queryset(self, request): + qs = super().get_queryset(request) + return qs.select_related("from_space") + @admin.register(Community) class CommunityAdmin(admin.ModelAdmin): readonly_fields = ["name"] list_display = ("name", "title", "creator", "created", "get_num_posts", "get_num_members", "is_deleted") search_fields = ("title", "creator__email", "creator__profile__name", "creator__profile__last_name") + exclude = ["banned_users", "starrers"] + + def get_queryset(self, request): + qs = super().get_queryset(request) + return qs.annotate(num_posts=Count("posts"), num_members=Count("memberships")) inlines = [CommunityNetworkRelationshipInline] @admin.display(description="Num posts") def get_num_posts(self, obj): - return obj.posts.count() + return obj.num_posts @admin.display(description="Num members") def get_num_members(self, obj): - return obj.memberships.count() + return obj.num_members def has_add_permission(self, request, obj=None): return True # needs to be true for adding communities via /admin (needed for creating posts) diff --git a/openbook_posts/models.py b/openbook_posts/models.py index 81dfa1ce787262c033d329362a71a47cf323c4c1..42b9b660515f8f8b9ce7bc8a72edeb3c0dcc52ed 100644 --- a/openbook_posts/models.py +++ b/openbook_posts/models.py @@ -46,6 +46,7 @@ from openbook_common.utils.helpers import ( extract_usernames_from_string, get_magic, ) +from openbook_common.tracking import track, TrackingEvent from openbook_common.utils.model_loaders import ( get_community_model, get_community_new_post_notification_model, @@ -192,6 +193,14 @@ class Post(CommentNotificationMixin, ModelWithUUID): else: post.save() + track( + creator, + TrackingEvent( + "spacePostCreated", + {"spaceId": str(community_id), "postId": str(post.id)}, + ), + ) + return post def update_post(