mirror of
https://github.com/Dadechin/Dashboard-XRoom.git
synced 2025-07-04 17:24:34 +00:00
Compare commits
2 Commits
d03cf8e404
...
17204180c8
Author | SHA1 | Date | |
---|---|---|---|
![]() |
17204180c8 | ||
![]() |
ca7d841cc0 |
|
@ -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):
|
||||||
|
|
|
@ -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),
|
||||||
|
|
28
core/views/subscriptionView.py
Normal file
28
core/views/subscriptionView.py
Normal 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)
|
|
@ -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)
|
Loading…
Reference in New Issue
Block a user