Commit 8bc57468 authored by Bereketab Bantewesen's avatar Bereketab Bantewesen
Browse files

message not final yet 2

Showing with 88 additions and 19 deletions
+88 -19
......@@ -435,12 +435,14 @@ class Conversation(models.Model):
return self.subject
class Message(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
conversation = models.ForeignKey(
Conversation, related_name='message_conversations', on_delete=models.CASCADE)
sender = models.ForeignKey(
StartupProjectUser, related_name='message_sender', on_delete=models.CASCADE)
content = models.TextField()
timestamp = models.DateTimeField('timestamp', auto_now_add=True)
......@@ -449,12 +451,14 @@ class Message(models.Model):
class MessageIgnorance(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
message = models.ForeignKey(
Message, related_name='message_ignorance', on_delete=models.CASCADE)
participant = models.ForeignKey(
StartupProjectUser, related_name='message_participant', on_delete=models.CASCADE)
can_view = models.BooleanField(default=False)
def __str__(self):
return f'{self.sender.username} - {self.content[:50]}'
return f'{self.id} - '
class Poster(models.Model):
......
......@@ -168,10 +168,14 @@ from django.db.models import Q
@register.filter
def getAllRelated(conversationId,userId):
try:
message = Message.objects.filter(conversation=conversationId)
# print(message)
message_sent = message.filter(sender=userId).annotate(is_sent=Value(True, output_field=BooleanField()))
message_recive = message.exclude(sender=userId).annotate(is_sent=Value(False, output_field=BooleanField()))
merged = message_recive.union(message_sent)
# print(conversationId,userId)
return merged.order_by('timestamp')
except Profile.DoesNotExist:
return ''
......
......@@ -203,6 +203,7 @@ def sentMessage(request):
random_id = ''.join([str(random.randint(0, 9)) for _ in range(8)])
random_id2 = ''.join([str(random.randint(0, 8)) for _ in range(8)])
try:
encrypted_data = json.loads(request.body)['encryptedData']
......@@ -227,9 +228,47 @@ def sentMessage(request):
subject=subject)
conversation.participants.set(recipient_ids + [request.user.id])
connected_users_within_message=[]
for reciver in conversation.participants.all().exclude(id=request.user.id):
connected_i_recive=Connect.objects.filter(
Q(requester=reciver) , Q(responser=request.user) , Q(status_admin=2)
)
if connected_i_recive:
connected_users_within_message.append(list(connected_i_recive.values_list('requester',flat=True))[0])
connected_i_sent = Connect.objects.filter(
Q(responser=reciver) , Q(requester=request.user) , Q(status_admin=2)
)
if connected_i_sent:
connected_users_within_message.append(list(connected_i_sent.values_list('responser',flat=True))[0])
connected_users_within_message = [str(uuid) for uuid in connected_users_within_message]
message_recivers = [str(uuid) for uuid in list(conversation.participants.all().exclude(id=request.user.id).values_list('id',flat=True))]
message = Message(conversation=conversation,
sender=request.user, content=json.loads(text)['message'])
message.save()
print('whats going')
for reciver in message_recivers:
print(reciver in connected_users_within_message)
print(StartupProjectUser.objects.get(id=reciver))
if reciver in connected_users_within_message:
message_ignorance = MessageIgnorance(
participant=StartupProjectUser.objects.get(id=reciver),
can_view = True,
message=message
)
message_ignorance.save()
else:
message_ignorance = MessageIgnorance(
participant=StartupProjectUser.objects.get(id=reciver),
can_view = False,
message=message
)
message_ignorance.save()
user = request.user
subquery = Message.objects.filter(conversation=OuterRef('id')).values(
'conversation').annotate(latest_date=Max('timestamp')).values('latest_date')[:1]
......@@ -239,8 +278,9 @@ def sentMessage(request):
context = {
'conversations': conversations,
'random_id': random_id,
'random_id2': random_id2
'random_id3': random_id2
}
print('whats going')
return render(request, 'messages/after_sent.html', context)
except Exception as e:
......@@ -317,23 +357,42 @@ def sentMessagefromDetail(request):
return HttpResponse('you are not allowed to this message')
if len(is_current_user_got_exact_connects)==0:
return HttpResponse('you are not allowed to this message')
responsers=[]
requester=[]
for item in conversation.participants.all().exclude(id=queryset2.id):
if is_current_user_got_exact_connects.filter(responser=item):
for c in is_current_user_got_exact_connects.filter(responser=item):
responsers.append(c.responser)
if is_current_user_got_exact_connects.filter(requester=item):
for c in is_current_user_got_exact_connects.filter(requester=item):
requester.append(c.requester)
# print(requester)
# print(responsers)
# print(conversation.participants.all().exclude(id=queryset2.id))
connected_users_within_message=[]
for reciver in conversation.participants.all().exclude(id=request.user.id):
connected_i_recive=Connect.objects.filter(
Q(requester=reciver) , Q(responser=request.user) , Q(status_admin=2)
)
if connected_i_recive:
connected_users_within_message.append(list(connected_i_recive.values_list('requester',flat=True))[0])
connected_i_sent = Connect.objects.filter(
Q(responser=reciver) , Q(requester=request.user) , Q(status_admin=2)
)
if connected_i_sent:
connected_users_within_message.append(list(connected_i_sent.values_list('responser',flat=True))[0])
connected_users_within_message = [str(uuid) for uuid in connected_users_within_message]
message_recivers = [str(uuid) for uuid in list(conversation.participants.all().exclude(id=request.user.id).values_list('id',flat=True))]
message = Message(conversation=conversation,
sender=request.user, content=json.loads(text)['message'])
message.save()
for reciver in message_recivers:
if reciver in connected_users_within_message:
message_ignorance = MessageIgnorance(
participant=StartupProjectUser.objects.get(id=reciver),
can_view = True,
message=message
)
message_ignorance.save()
# print(reciver,'must save user as true')
else:
message_ignorance = MessageIgnorance(
participant=StartupProjectUser.objects.get(id=reciver),
can_view = False,
message=message
)
message_ignorance.save()
user = request.user
subquery = Message.objects.filter(conversation=OuterRef('id')).values(
'conversation').annotate(latest_date=Max('timestamp')).values('latest_date')[:1]
......@@ -342,9 +401,11 @@ def sentMessagefromDetail(request):
context = {
'conversations': conversations,
'random_id': random_id,
# 'random_id': random_id,
'random_id3': random_id2
}
return render(request, 'messages/after_sent.html', context)
except Exception as e:
......
......@@ -169,9 +169,9 @@
}
});
}
var randomId = '{{random_id3}}'
var randomId25 = '{{random_id3}}'
var message_form698 = document.getElementById(randomId);
var message_form698 = document.getElementById(randomId25);
if (message_form698) {
message_form698.addEventListener("submit", (e) => {
e.preventDefault();
......
......@@ -111,7 +111,7 @@
</li>
{% endfor %}
</ul>
{{conversations}}
<div class="form-group mt-3 mb-0">
<form id="{{random_id3}}" method="post">
{% csrf_token %}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment