Added new functionalities to tags
This commit is contained in:
parent
a073bdb142
commit
8cc364879a
@ -25,4 +25,9 @@ class ExpenseForm(forms.ModelForm):
|
||||
]
|
||||
widgets = {
|
||||
'date': forms.DateInput(attrs={'type': 'date'}),
|
||||
}
|
||||
}
|
||||
|
||||
class TagForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Tag
|
||||
fields = ['name']
|
||||
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Eliminar etiqueta</h1>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<button type="submit">Eliminar</button>
|
||||
</form>
|
||||
|
||||
<a href="{% url 'tag_list' %}">Cancelar</a>
|
||||
</body>
|
||||
</html>
|
||||
16
expenses_manager/expenses/templates/expenses/tag_form.html
Normal file
16
expenses_manager/expenses/templates/expenses/tag_form.html
Normal file
@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Etiqueta</h1>
|
||||
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{{ form.as_p }}
|
||||
<button type="submit">Guardar</button>
|
||||
</form>
|
||||
|
||||
<a href="{% url 'tag_list' %}">Volver</a>
|
||||
</body>
|
||||
</html>
|
||||
20
expenses_manager/expenses/templates/expenses/tag_list.html
Normal file
20
expenses_manager/expenses/templates/expenses/tag_list.html
Normal file
@ -0,0 +1,20 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Etiquetas</h1>
|
||||
|
||||
<ul>
|
||||
{% for tag in tags %}
|
||||
<li>
|
||||
{{ tag.name }}
|
||||
<a href="{% url 'tag_edit' tag.id %}">Editar</a>
|
||||
<a href="{% url 'tag_delete' tag.id %}">Eliminar</a>
|
||||
</li>
|
||||
{% empty %}
|
||||
<li>No hay etiquetas</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
||||
@ -22,4 +22,17 @@ def test_expense_can_have_tags(client, django_user_model):
|
||||
expense.tags.add(tag)
|
||||
|
||||
assert expense.tags.count() == 1
|
||||
assert tag in expense.tags.all()
|
||||
assert tag in expense.tags.all()
|
||||
|
||||
def test_user_can_create_tag(client, django_user_model):
|
||||
user = django_user_model.objects.create_user(
|
||||
username='test', password='1234'
|
||||
)
|
||||
client.login(username='test', password='1234')
|
||||
|
||||
response = client.post(
|
||||
reverse('tag_create'),
|
||||
{'name': 'Food'}
|
||||
)
|
||||
|
||||
assert Tag.objects.filter(owner=user, name='Food').exists()
|
||||
|
||||
@ -8,4 +8,8 @@ urlpatterns = [
|
||||
path('<int:pk>/edit/', views.expense_edit, name='expense_edit'),
|
||||
path('<int:pk>/delete/', views.expense_delete, name='expense_delete'),
|
||||
path('dashboard/', views.dashboard, name='dashboard'),
|
||||
path('tags/', views.tag_list, name='tag_list'),
|
||||
path('tags/new/', views.tag_create, name='tag_create'),
|
||||
path('tags/<int:pk>/edit/', views.tag_edit, name='tag_edit'),
|
||||
path('tags/<int:pk>/delete/', views.tag_delete, name='tag_delete'),
|
||||
]
|
||||
@ -1,6 +1,6 @@
|
||||
from datetime import date
|
||||
from .models import Category, Expense
|
||||
from .forms import ExpenseForm
|
||||
from .forms import ExpenseForm, TagForm
|
||||
from .models import Category, Expense, Tag
|
||||
# from dateutli.relativedelta import relativedelta
|
||||
|
||||
from django.db.models import Sum
|
||||
@ -444,4 +444,76 @@ def dashboard(request):
|
||||
'kpi_percentage': percentage,
|
||||
'category_comparison': category_comparison,
|
||||
'kpi_trend': kpi_trend,
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
@login_required
|
||||
def tag_list(request):
|
||||
tags = Tag.objects.filter(owner=request.user)
|
||||
|
||||
return render(
|
||||
request,
|
||||
'expenses/tag_list.html',
|
||||
{'tags':tags}
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def tag_create(request):
|
||||
if request.method == 'POST':
|
||||
form = TagForm(request.POST)
|
||||
if form.is_valid():
|
||||
tag = form.save(commit=False)
|
||||
tag.owner = request.user
|
||||
tag.save()
|
||||
return redirect('tag_list')
|
||||
else:
|
||||
form = TagForm()
|
||||
|
||||
return render(
|
||||
request,
|
||||
'expenses/tag_form.html',
|
||||
{'form': form}
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def tag_edit(request, pk):
|
||||
tag = get_object_or_404(
|
||||
Tag,
|
||||
pk=pk,
|
||||
owner=request.user
|
||||
)
|
||||
|
||||
if request.method == 'POST':
|
||||
form = TagForm(request.POST, instance=tag)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
return redirect('tag_list')
|
||||
else:
|
||||
form = TagForm(instance=tag)
|
||||
|
||||
return render(
|
||||
request,
|
||||
'expenses/tag_form.html',
|
||||
{'form': form}
|
||||
)
|
||||
|
||||
|
||||
@login_required
|
||||
def tag_delete(request, pk):
|
||||
tag = get_object_or_404(
|
||||
Tag,
|
||||
pk=pk,
|
||||
owner=request.user
|
||||
)
|
||||
|
||||
if request.method == 'POST':
|
||||
tag.delete()
|
||||
return redirect('tag_list')
|
||||
|
||||
return render(
|
||||
request,
|
||||
'expenses/tag_confirm_delete.html',
|
||||
{'tag': tag}
|
||||
)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user