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 Meta:
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
def create(self, validated_data):

View File

@ -13,6 +13,7 @@ from .views import spaceView
from .views import AssetBundle
from .views import teamView
from .views import meetingView
from .views import subscriptionView
from django.urls import include, path
from django.conf import settings
from django.conf.urls.static import static
@ -81,6 +82,8 @@ urlpatterns = [
re_path('uploadPdf/', userView.upload_pdf , name='upload_pdf'),
re_path('add_subscription', userView.addSubscription),
re_path('get_user_subscriptions', subscriptionView.get_user_subscriptions),
re_path('add_teamMember', userView.addTeamMember),
re_path('get_team_member_info', userView.get_team_member_info),
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.db.models import Q
from core.models.customer import Customer
from rest_framework.serializers import ModelSerializer
from rest_framework import serializers
class SimpleUserSerializer(ModelSerializer):
class UserInlineSerializer(serializers.ModelSerializer):
class Meta:
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'])
@authentication_classes([SessionAuthentication, TokenAuthentication])
@permission_classes([IsAuthenticated])
def get_all_team_members(request):
try:
# Get all team IDs for current user
# team_ids = TeamMember.objects.filter(user=request.user).values_list('team_id', flat=True)
# team_ids = Team.objects.filter(Q(members__user=request.user) | Q(admin=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()
# Find teams where user is admin or member
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
team_members = TeamMember.objects.filter(team_id__in=team_ids)
for tm in team_members:
print(f" - {tm.user.username} (Team: {tm.team.name})")
# Get all members of those teams
team_members = TeamMember.objects.filter(team_id__in=team_ids)
# Extract user objects
users = [tm.user for tm in team_members]
# Get users and their related customers
users = [tm.user for tm in team_members]
customers = Customer.objects.filter(user__in=users).select_related('user')
serializer = SimpleUserSerializer(users, many=True)
return Response({'members': serializer.data}, status=status.HTTP_200_OK)
# Serialize customer details
serializer = CustomerSerializer(customers, many=True)
return Response({'members': serializer.data}, status=status.HTTP_200_OK)
except Exception as e:
return Response({'error': str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)