Compare commits

...

2 Commits

Author SHA1 Message Date
Hojat Shafiee
17204180c8 added get subscriptions 2025-06-07 17:20:41 +03:30
Hojat Shafiee
ca7d841cc0 added get subscriptions 2025-06-07 15:40:53 +03:30
4 changed files with 66 additions and 19 deletions

View File

@ -6,7 +6,7 @@ from core.models.Subscription import Subscription
class SubscriptionSerializer(serializers.ModelSerializer): class SubscriptionSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = Subscription model = Subscription
fields = ['user', 'license_number', 'user_count', 'startTime', 'endTime', 'price'] fields = ['user', 'license_number', 'user_count', 'startTime', 'endTime', 'price' , 'id']
read_only_fields = ['user'] # user will be set automatically by the view read_only_fields = ['user'] # user will be set automatically by the view
def create(self, validated_data): def create(self, validated_data):

View File

@ -13,6 +13,7 @@ from .views import spaceView
from .views import AssetBundle from .views import AssetBundle
from .views import teamView from .views import teamView
from .views import meetingView from .views import meetingView
from .views import subscriptionView
from django.urls import include, path from django.urls import include, path
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
@ -81,6 +82,8 @@ urlpatterns = [
re_path('uploadPdf/', userView.upload_pdf , name='upload_pdf'), re_path('uploadPdf/', userView.upload_pdf , name='upload_pdf'),
re_path('add_subscription', userView.addSubscription), re_path('add_subscription', userView.addSubscription),
re_path('get_user_subscriptions', subscriptionView.get_user_subscriptions),
re_path('add_teamMember', userView.addTeamMember), re_path('add_teamMember', userView.addTeamMember),
re_path('get_team_member_info', userView.get_team_member_info), re_path('get_team_member_info', userView.get_team_member_info),
re_path('add_space', spaceView.addSpace), re_path('add_space', spaceView.addSpace),

View File

@ -0,0 +1,28 @@
from rest_framework.decorators import api_view, authentication_classes, permission_classes
from rest_framework.authentication import SessionAuthentication, TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework import status
from core.models.Subscription import Subscription
from core.models.TeamMember import TeamMember
from core.serializers.SubscriptionSerializer import SubscriptionSerializer
from drf_yasg import openapi
from drf_yasg.utils import swagger_auto_schema
@api_view(['GET'])
@authentication_classes([SessionAuthentication, TokenAuthentication])
@permission_classes([IsAuthenticated])
def get_user_subscriptions(request):
user = request.user
subscriptions = Subscription.objects.filter(user=user).order_by('-startTime')
serializer = SubscriptionSerializer(subscriptions, many=True)
return Response({
'status': 200,
'subscriptions': serializer.data,
'message': 'موفق'
}, status=status.HTTP_200_OK)

View File

@ -75,39 +75,55 @@ def getTeams(request):
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db.models import Q from django.db.models import Q
from core.models.customer import Customer
from rest_framework.serializers import ModelSerializer from rest_framework.serializers import ModelSerializer
from rest_framework import serializers
class SimpleUserSerializer(ModelSerializer): class UserInlineSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = User model = User
fields = ['id', 'username', 'first_name', 'last_name' ] fields = ['id', 'username', 'first_name', 'last_name']
class CustomerSerializer(serializers.ModelSerializer):
user = UserInlineSerializer()
class Meta:
model = Customer
fields = [
'user',
'semat',
'mobile_number',
'profile_img',
'profile_glb',
'is_sms_verified',
'is_email_verified',
]
@api_view(['GET']) @api_view(['GET'])
@authentication_classes([SessionAuthentication, TokenAuthentication]) @authentication_classes([SessionAuthentication, TokenAuthentication])
@permission_classes([IsAuthenticated]) @permission_classes([IsAuthenticated])
def get_all_team_members(request): def get_all_team_members(request):
try: try:
# Get all team IDs for current user # Find teams where user is admin or member
# team_ids = TeamMember.objects.filter(user=request.user).values_list('team_id', flat=True) team_ids = Team.objects.filter(
# team_ids = Team.objects.filter(Q(members__user=request.user) | Q(admin=request.user)).values_list('id', flat=True).distinct() Q(admin_id=request.user.id) | Q(members__user=request.user)
).values_list('id', flat=True).distinct()
# team_ids = Team.objects.filter(admin_id=7)
team_ids = Team.objects.filter(Q(admin_id=request.user.id) | Q(members__user=request.user)).values_list('id', flat=True).distinct()
# Get all members of those teams # Get all members of those teams
team_members = TeamMember.objects.filter(team_id__in=team_ids) team_members = TeamMember.objects.filter(team_id__in=team_ids)
for tm in team_members:
print(f" - {tm.user.username} (Team: {tm.team.name})")
# Extract user objects # Get users and their related customers
users = [tm.user for tm in team_members] users = [tm.user for tm in team_members]
customers = Customer.objects.filter(user__in=users).select_related('user')
serializer = SimpleUserSerializer(users, many=True) # Serialize customer details
return Response({'members': serializer.data}, status=status.HTTP_200_OK) serializer = CustomerSerializer(customers, many=True)
return Response({'members': serializer.data}, status=status.HTTP_200_OK)
except Exception as e: except Exception as e:
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR) return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)