mirror of
https://github.com/Dadechin/Dashboard-XRoom.git
synced 2025-07-02 00:04:34 +00:00
edit meeting
This commit is contained in:
parent
24d745958e
commit
b190fe0675
|
@ -125,7 +125,7 @@ else:
|
|||
'USER': 'root',
|
||||
'PASSWORD': '',
|
||||
'HOST': 'localhost',
|
||||
'PORT': '3306',
|
||||
'PORT': '3309',
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -98,6 +98,7 @@ urlpatterns = [
|
|||
re_path('get_all_team_members', teamView.get_all_team_members),
|
||||
|
||||
path('add_meeting', meetingView. addMeeting, name='add_meeting'),
|
||||
path('edit_meeting', meetingView. editMeeting, name='edit_meeting'),
|
||||
path('get_user_meetings', meetingView. get_user_meetings, name='get_user_meetings'),
|
||||
|
||||
|
||||
|
|
|
@ -1,33 +1,46 @@
|
|||
|
||||
import requests
|
||||
import json
|
||||
|
||||
|
||||
|
||||
from datetime import datetime
|
||||
|
||||
def send_sms(to_number, name, date_time, title):
|
||||
# Try multiple datetime formats
|
||||
dt = None
|
||||
for fmt in ("%Y-%m-%dT%H:%M:%S.%f%z", "%Y-%m-%dT%H:%M:%S%z", "%Y-%m-%d %H:%M:%S%z"):
|
||||
try:
|
||||
dt = datetime.strptime(date_time, fmt)
|
||||
break
|
||||
except ValueError:
|
||||
continue
|
||||
|
||||
def send_sms(to_number, code):
|
||||
username = "09399112092"
|
||||
if dt is None:
|
||||
return "Invalid datetime format"
|
||||
|
||||
# Format for SMS
|
||||
date_str = dt.strftime("%Y/%m/%d")
|
||||
time_str = dt.strftime("%H:%M")
|
||||
|
||||
# Message content
|
||||
msg = f"""جناب {name}
|
||||
شما در تاریخ {date_str}
|
||||
ساعت {time_str}
|
||||
به جلسه ی {title}
|
||||
در متاورسی دعوت شده اید
|
||||
my.xroomapp.com"""
|
||||
|
||||
# SMS service credentials
|
||||
uname = "09399112092"
|
||||
password = "Dadechin123!@##!"
|
||||
from_number = "+983000505"
|
||||
pattern_code = "lgfrblbdppyn202"
|
||||
from_number = "+983000505" # Replace with your SMS line number
|
||||
|
||||
url = "https://ippanel.com/patterns/pattern"
|
||||
to = [to_number]
|
||||
input_data = {"code": code}
|
||||
|
||||
params = {
|
||||
"username": username,
|
||||
"password": password,
|
||||
"from": from_number,
|
||||
"to": json.dumps(to),
|
||||
"input_data": json.dumps(input_data),
|
||||
"pattern_code": pattern_code
|
||||
}
|
||||
# Request URL
|
||||
url = (
|
||||
f"https://sms.farazsms.com/class/sms/webservice/send_url.php"
|
||||
f"?from={from_number}&to={to_number}&msg={msg}&uname={uname}&pass={password}"
|
||||
)
|
||||
|
||||
print(url)
|
||||
|
||||
try:
|
||||
response = requests.post(url, params=params, data=input_data)
|
||||
response = requests.get(url)
|
||||
return response.text
|
||||
except Exception as e:
|
||||
return f"Error: {e}"
|
||||
|
||||
return str(e)
|
||||
|
|
|
@ -101,7 +101,12 @@ def addMeeting(request):
|
|||
)
|
||||
|
||||
# Send SMS to user.username (which is a phone number)
|
||||
sms_result = send_sms(to_number=user.username, code="1111")
|
||||
sms_result = send_sms(
|
||||
to_number=user.username,
|
||||
name=user.get_full_name() or user.username,
|
||||
date_time=str(meeting.date_time),
|
||||
title=meeting.name
|
||||
)
|
||||
|
||||
print(f"SMS sent to {user.username}: {sms_result}")
|
||||
|
||||
|
@ -154,4 +159,94 @@ def get_user_meetings(request):
|
|||
return Response({"meetings": serializer.data}, status=status.HTTP_200_OK)
|
||||
|
||||
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)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@swagger_auto_schema(
|
||||
method='post',
|
||||
request_body=openapi.Schema(
|
||||
type=openapi.TYPE_OBJECT,
|
||||
required=['meeting_id', 'name', 'description', 'date_time', 'user_ids'],
|
||||
properties={
|
||||
'meeting_id': openapi.Schema(type=openapi.TYPE_INTEGER, default=1),
|
||||
'name': openapi.Schema(type=openapi.TYPE_STRING, default='Updated Meeting'),
|
||||
'description': openapi.Schema(type=openapi.TYPE_STRING, default='Updated description'),
|
||||
'date_time': openapi.Schema(type=openapi.TYPE_STRING, format='date-time', default='2025-06-01T16:00:00Z'),
|
||||
'space': openapi.Schema(type=openapi.TYPE_INTEGER, default=1),
|
||||
'asset_bundle': openapi.Schema(type=openapi.TYPE_INTEGER, default=1),
|
||||
'use_space': openapi.Schema(type=openapi.TYPE_BOOLEAN, default=False),
|
||||
'user_ids': openapi.Schema(
|
||||
type=openapi.TYPE_ARRAY,
|
||||
items=openapi.Items(type=openapi.TYPE_INTEGER),
|
||||
description='List of user IDs to invite'
|
||||
),
|
||||
}
|
||||
)
|
||||
)
|
||||
@api_view(['POST'])
|
||||
@authentication_classes([SessionAuthentication, TokenAuthentication])
|
||||
@permission_classes([IsAuthenticated])
|
||||
def editMeeting(request):
|
||||
data = request.data.copy()
|
||||
user_ids = data.pop('user_ids', [])
|
||||
meeting_id = data.get('meeting_id')
|
||||
|
||||
try:
|
||||
meeting = Meeting.objects.get(id=meeting_id)
|
||||
except Meeting.DoesNotExist:
|
||||
return Response({"error": "Meeting not found"}, status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
serializer = MeetingSerializer(meeting, data=data, partial=True)
|
||||
|
||||
if serializer.is_valid():
|
||||
try:
|
||||
with transaction.atomic():
|
||||
updated_meeting = serializer.save()
|
||||
|
||||
# Remove old invitations and add new ones
|
||||
Invitation.objects.filter(meeting=meeting).delete()
|
||||
|
||||
for user_id in user_ids:
|
||||
try:
|
||||
user = User.objects.get(id=user_id)
|
||||
Invitation.objects.create(
|
||||
user=user,
|
||||
meeting=meeting,
|
||||
is_admin=False,
|
||||
is_sms_sent=True
|
||||
)
|
||||
|
||||
# Send SMS notification
|
||||
sms_result = send_sms(
|
||||
to_number=user.username,
|
||||
name=user.get_full_name() or user.username,
|
||||
date_time=str(meeting.date_time),
|
||||
title=meeting.name
|
||||
)
|
||||
|
||||
print(f"SMS sent to {user.username}: {sms_result}")
|
||||
|
||||
except User.DoesNotExist:
|
||||
return Response(
|
||||
{"error": f"User with id {user_id} does not exist."},
|
||||
status=status.HTTP_400_BAD_REQUEST
|
||||
)
|
||||
|
||||
return Response({
|
||||
"message": "Meeting updated successfully with new invitations and SMS sent.",
|
||||
"meeting": serializer.data
|
||||
}, status=status.HTTP_200_OK)
|
||||
|
||||
except Exception as e:
|
||||
return Response({"error": str(e)}, status=status.HTTP_500_INTERNAL_SERVER_ERROR)
|
||||
|
||||
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
|
||||
|
|
Loading…
Reference in New Issue
Block a user