Skip to content

Commit 9790b0b

Browse files
committed
Edit only own profile
1 parent 793cdb5 commit 9790b0b

4 files changed

Lines changed: 37 additions & 5 deletions

File tree

src/community_db/forms.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,4 @@ class QuickSearchForm(forms.Form):
1010
class PersonForm(forms.ModelForm):
1111
class Meta:
1212
model = Person
13-
# fields = ["first_name", "last_name", "country", "mobile_number"]
14-
exclude = []
13+
fields = ["first_name", "last_name", "country", "mobile_number"]
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# Generated by Django 4.1 on 2022-08-31 10:58
2+
3+
import django.db.models.deletion
4+
from django.conf import settings
5+
from django.db import migrations, models
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
("community_db", "0003_alter_person_options"),
13+
]
14+
15+
operations = [
16+
migrations.AddField(
17+
model_name="person",
18+
name="user",
19+
field=models.ForeignKey(
20+
null=True,
21+
on_delete=django.db.models.deletion.SET_NULL,
22+
to=settings.AUTH_USER_MODEL,
23+
),
24+
),
25+
]

src/community_db/models.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from django.conf import settings
12
from django.db import models
23

34

@@ -284,6 +285,9 @@ class Countries(models.TextChoices):
284285
last_name = models.CharField(max_length=100)
285286
country = models.CharField(max_length=100, choices=Countries.choices, blank=True)
286287
mobile_number = models.CharField(max_length=20, blank=True)
288+
user = models.ForeignKey(
289+
settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL
290+
)
287291

288292
class Meta:
289293
permissions = [

src/community_db/views.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
from django.contrib.auth.decorators import permission_required
2-
from django.contrib.auth.views import LoginView
1+
from django.contrib.auth.decorators import login_required
2+
from django.contrib.auth.views import LoginView, redirect_to_login
33
from django.db import models
44
from django.http import HttpResponse, HttpResponseRedirect
55
from django.shortcuts import get_object_or_404, render
@@ -31,9 +31,13 @@ def detail_person_with_template(request, pk):
3131
return render(request, "community_db/person_detail_in_base.html", context)
3232

3333

34-
@permission_required("edit_profile")
34+
@login_required
3535
def edit_person_with_template(request, pk):
3636
person = get_object_or_404(Person, id=pk)
37+
38+
if person.user != request.user:
39+
return redirect_to_login(request.path)
40+
3741
if request.POST:
3842
form = PersonForm(request.POST, instance=person)
3943
if form.is_valid():

0 commit comments

Comments
 (0)