Skip to content

Commit 36980d9

Browse files
committed
Updated
1 parent fe60469 commit 36980d9

6 files changed

Lines changed: 70 additions & 2 deletions

File tree

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 3.0.4 on 2020-05-16 22:36
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('boards', '0002_topic_views'),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name='post',
18+
name='updated_by',
19+
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL),
20+
),
21+
migrations.AddField(
22+
model_name='post',
23+
name='updated_dt',
24+
field=models.DateTimeField(null=True),
25+
),
26+
]

boards/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ class Post(models.Model):
3333
topic = models.ForeignKey(Topic,related_name='posts',on_delete=models.CASCADE)
3434
created_by = models.ForeignKey(User,related_name='posts',on_delete=models.CASCADE)
3535
created_dt = models.DateTimeField(auto_now_add=True)
36-
36+
updated_by = models.ForeignKey(User,null=True,related_name='+',on_delete=models.CASCADE)
37+
updated_dt = models.DateTimeField(null=True)
3738
def __str__(self):
3839
truncted_message = Truncator(self.message)
3940
return truncted_message.chars(30)

boards/url.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@
77
path('boards/<int:board_id>/new/',views.new_topic,name='new_topic'),
88
path('boards/<int:board_id>/topics/<int:topic_id>', views.topic_posts, name='topic_posts'),
99
path('boards/<int:board_id>/topics/<int:topic_id>/reply/', views.reply_topic, name='reply_topic'),
10+
path('boards/<int:board_id>/topics/<int:topic_id>/posts/<int:post_id>/edit/', views.PostUpdateView.as_view(), name='edit_post'),
1011

1112
]

boards/views.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
from .forms import NewTopicForm, PostForm
77
from django.contrib.auth.decorators import login_required
88
from django.db.models import Count
9+
from django.views.generic import UpdateView
10+
from django.utils import timezone
11+
from django.utils.decorators import method_decorator
912
# Create your views here.
1013

1114
def home(request):
@@ -71,6 +74,27 @@ def reply_topic(request, board_id,topic_id):
7174
form = PostForm()
7275
return render(request,'reply_topic.html',{'topic':topic,'form':form})
7376

77+
78+
@method_decorator(login_required,name='dispatch')
79+
class PostUpdateView(UpdateView):
80+
model = Post
81+
fields = ('message',)
82+
template_name = 'edit_post.html'
83+
pk_url_kwarg = 'post_id'
84+
context_object_name = 'post'
85+
86+
def form_valid(self, form):
87+
post = form.save(commit=False)
88+
post.updated_by = self.request.user
89+
post.updated_dt = timezone.now()
90+
post.save()
91+
return redirect('topic_posts',board_id=post.topic.board.pk,topic_id=post.topic.pk)
92+
93+
94+
95+
96+
97+
7498
def about(request):
7599

76100
return HttpResponse(request,"yes")

templates/edit_post.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{% extends 'base.html' %}
2+
{% block title %}Edit Post{% endblock %}
3+
4+
{% block breadcrumb %}
5+
<li class="breadcrumb-item"><a href="{% url 'home' %}">Boards</a></li>
6+
<li class="breadcrumb-item"><a href="{% url 'board_topics' post.topic.board.pk %}">{{ post.topic.board.name }}</a></li>
7+
<li class="breadcrumb-item active">Edit Post</li>
8+
{% endblock %}
9+
10+
{% block content %}
11+
<form method="post" novalidate class="mb-4">
12+
{% csrf_token %}
13+
{% include 'includes/form.html'%}
14+
<button type="submit" class="btn btn-success">Save changes</button>
15+
</form>
16+
{% endblock %}

templates/topic_posts.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@
3535
{{ post.message }}
3636
{% if post.created_by == user %}
3737
<div class="mt-3">
38-
<a href="#" class="btn btn-primary btn-sm" role="button">Edit</a>
38+
<a href="{% url 'edit_post' post.topic.board.pk post.topic.pk post.pk %}" class="btn btn-primary btn-sm" role="button">Edit</a>
3939
</div>
4040
{% endif %}
4141
</div>

0 commit comments

Comments
 (0)