Some more basic stuff
This commit is contained in:
parent
53d83a7855
commit
c0f8cc02d2
8 changed files with 61 additions and 3 deletions
BIN
src/db.sqlite3
BIN
src/db.sqlite3
Binary file not shown.
0
src/wishlists/handler/__init__.py
Normal file
0
src/wishlists/handler/__init__.py
Normal file
0
src/wishlists/handler/wishlist/__init__.py
Normal file
0
src/wishlists/handler/wishlist/__init__.py
Normal file
16
src/wishlists/handler/wishlist/get_wishlist_handler.py
Normal file
16
src/wishlists/handler/wishlist/get_wishlist_handler.py
Normal file
|
@ -0,0 +1,16 @@
|
|||
from uuid import UUID
|
||||
|
||||
from django.http import Http404
|
||||
|
||||
from wishlists.models import Wishlist
|
||||
|
||||
|
||||
def get_wishlist_by_uuid(uuid: UUID) -> Wishlist:
|
||||
return Wishlist.objects.get(id=uuid)
|
||||
|
||||
|
||||
def get_wishlist_or_404_by_uuid(uuid: UUID) -> Wishlist:
|
||||
try:
|
||||
return get_wishlist_by_uuid(uuid)
|
||||
except Wishlist.DoesNotExist:
|
||||
raise Http404("This wishlist does not exist.")
|
|
@ -17,10 +17,12 @@ class WishlistItem(models.Model):
|
|||
wishlist = models.ForeignKey(Wishlist, on_delete=models.CASCADE)
|
||||
name = models.CharField(max_length=200)
|
||||
description = models.CharField(max_length=2000, null=True)
|
||||
order = models.IntegerField(null=True)
|
||||
url = models.CharField(max_length=2000, null=True)
|
||||
price = models.FloatField(null=True)
|
||||
image = models.CharField(max_length=2000, blank=True, null=True)
|
||||
gifted = models.BooleanField(default=False)
|
||||
reveal_date = models.DateTimeField(null=True)
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
updated_at = models.DateTimeField(auto_now=True)
|
||||
|
||||
|
|
9
src/wishlists/templates/owner/index.html
Normal file
9
src/wishlists/templates/owner/index.html
Normal file
|
@ -0,0 +1,9 @@
|
|||
{% if wishlist %}
|
||||
<h1>{{ wishlist.name }}</h1>
|
||||
<sub>Created on {{ wishlist.created_at }}</sub>
|
||||
{% if wishlist.description %}
|
||||
<p>{{ wishlist.description }}</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p>Wishlist not found.</p>
|
||||
{% endif %}
|
|
@ -4,6 +4,34 @@
|
|||
{% if wishlist.description %}
|
||||
<p>{{ wishlist.description }}</p>
|
||||
{% endif %}
|
||||
|
||||
<a href="{% url 'public' wishlist.id %}">Public link</a>
|
||||
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Item</th>
|
||||
<th>Price</th>
|
||||
<th>Link</th>
|
||||
<th>Priority</th>
|
||||
<th>Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in wishlist_items %}
|
||||
<tr>
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.price }}</td>
|
||||
<td><a href="{{ item.link }}">{{ item.link }}</a></td>
|
||||
<td>{{ item.priority }}</td>
|
||||
<td>
|
||||
<a href="/items/{{ item.id }}/edit">Edit</a>
|
||||
<a href="/items/{{ item.id }}/delete">Delete</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p>Wishlist not found.</p>
|
||||
{% endif %}
|
|
@ -1,7 +1,9 @@
|
|||
from uuid import UUID
|
||||
|
||||
from django.http import HttpResponse
|
||||
from django.http import HttpResponse, Http404
|
||||
from django.template import loader
|
||||
|
||||
from .handler.wishlist.get_wishlist_handler import get_wishlist_or_404_by_uuid
|
||||
from .models import Wishlist
|
||||
|
||||
|
||||
|
@ -11,14 +13,15 @@ def index(request):
|
|||
|
||||
|
||||
def owner(request, wishlist_id: UUID):
|
||||
wishlist = Wishlist.objects.get(id=wishlist_id)
|
||||
wishlist = get_wishlist_or_404_by_uuid(wishlist_id)
|
||||
return HttpResponse(f"You are the owner of wishlist '{wishlist.name}'.")
|
||||
|
||||
|
||||
def public(request, wishlist_id: UUID):
|
||||
wishlist = Wishlist.objects.get(id=wishlist_id)
|
||||
template = loader.get_template("public/index.html")
|
||||
wishlist = get_wishlist_or_404_by_uuid(wishlist_id)
|
||||
context = {
|
||||
"wishlist": wishlist,
|
||||
"wishlist_items": wishlist.wishlistitem_set.all(),
|
||||
}
|
||||
return HttpResponse(template.render(context, request))
|
||||
|
|
Loading…
Reference in a new issue