Skip to content

Commit 3068b19

Browse files
authored
Merge pull request #19 from farooq13/feature
add DM
2 parents ac745b8 + cedb10d commit 3068b19

File tree

7 files changed

+67
-2
lines changed

7 files changed

+67
-2
lines changed
1.18 KB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Generated by Django 5.1.1 on 2024-11-24 19:57
2+
3+
import django.db.models.deletion
4+
import django.utils.timezone
5+
from django.conf import settings
6+
from django.db import migrations, models
7+
8+
9+
class Migration(migrations.Migration):
10+
11+
dependencies = [
12+
('base', '0004_post_image'),
13+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
14+
]
15+
16+
operations = [
17+
migrations.CreateModel(
18+
name='ThreadModel',
19+
fields=[
20+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
21+
('receiver', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
22+
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
23+
],
24+
),
25+
migrations.CreateModel(
26+
name='Message',
27+
fields=[
28+
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
29+
('body', models.CharField(max_length=1000)),
30+
('date', models.DateTimeField(default=django.utils.timezone.now)),
31+
('is_read', models.BooleanField(default=False)),
32+
('receiver_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
33+
('sender_user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL)),
34+
('thread', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='base.threadmodel')),
35+
],
36+
),
37+
]
Binary file not shown.

base/models.py

+14
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,17 @@ class Notification(models.Model):
7272
comment = models.ForeignKey('Comment', on_delete=models.CASCADE, related_name='+', null=True, blank=True)
7373
date = models.DateTimeField(default=timezone.now)
7474
user_has_seen = models.BooleanField(default=False)
75+
76+
77+
class ThreadModel(models.Model):
78+
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')
79+
receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')
80+
81+
82+
class Message(models.Model):
83+
thread = models.ForeignKey(ThreadModel, on_delete=models.CASCADE, related_name='+', blank=True, null=True)
84+
sender_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')
85+
receiver_user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='+')
86+
body = models.CharField(max_length=1000)
87+
date = models.DateTimeField(default=timezone.now)
88+
is_read = models.BooleanField(default=False)

base/templates/base/inbox.html

Whitespace-only changes.

base/views.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from django.shortcuts import get_object_or_404
66
from django.http import HttpResponseRedirect, HttpResponse
77
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
8-
from .models import Post, Comment, UserProfile, Notification
8+
from .models import Post, Comment, UserProfile, Notification, ThreadModel, Message
99
from django.db.models import Q
1010
from .forms import PostForm, CommentForm, ProfileForm
1111

@@ -319,4 +319,18 @@ def delete(self, request, notification_pk, *args, **kwargs):
319319
notification = Notification.objects.get(pk=notification_pk)
320320
notification.user_has_seen = True
321321
notification.save()
322-
return HttpResponse('success', content_type='text/plain')
322+
return HttpResponse('success', content_type='text/plain')
323+
324+
325+
326+
class ListThread(View):
327+
def get(self, request, *args, **kwargs):
328+
threads = ThreadModel.objects.filter(
329+
Q(user=request.user) |
330+
Q(receiver=request.user)
331+
)
332+
333+
context = {
334+
'threads': threads
335+
}
336+
return render(request, 'base/inbox.html', context)

db.sqlite3

28 KB
Binary file not shown.

0 commit comments

Comments
 (0)