Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build back end for post publication. #73

Merged
merged 1 commit into from
Jul 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions stewpot/admin.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
from django.contrib import admin
from .models import meal_posting, share_meal

# Register your models here.
class meal_postingAdmin(admin.ModelAdmin):
class meta:
model = meal_posting

class share_mealAdmin(admin.ModelAdmin):
class meta:
model = share_meal

admin.site.register(meal_posting, meal_postingAdmin)
admin.site.register(share_meal, share_mealAdmin)
30 changes: 30 additions & 0 deletions stewpot/migrations/0002_meal_posting_share_meal_posting.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Generated by Django 4.0.1 on 2023-07-09 21:37

from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('stewpot', '0001_initial'),
]

operations = [
migrations.CreateModel(
name='meal_posting',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=255)),
('text', models.TextField()),
('creator', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
),
migrations.AddField(
model_name='share_meal',
name='posting',
field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='stewpot.meal_posting'),
),
]
20 changes: 20 additions & 0 deletions stewpot/migrations/0003_meal_posting_created_on.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 4.0.1 on 2023-07-10 03:07

from django.db import migrations, models
import django.utils.timezone


class Migration(migrations.Migration):

dependencies = [
('stewpot', '0002_meal_posting_share_meal_posting'),
]

operations = [
migrations.AddField(
model_name='meal_posting',
name='created_on',
field=models.DateTimeField(auto_now_add=True, default=django.utils.timezone.now),
preserve_default=False,
),
]
14 changes: 14 additions & 0 deletions stewpot/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,23 @@
from django.contrib.auth.models import User


class meal_posting(models.Model):
title = models.CharField(max_length=255)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
text = models.TextField()
created_on = models.DateTimeField(auto_now_add=True)

def __str__(self):
return self.title


class share_meal(models.Model):
title = models.CharField(max_length=255)
creator = models.ForeignKey(User, on_delete=models.CASCADE)
text = models.TextField()
meal = models.ForeignKey(mstr_recipe, on_delete=models.CASCADE)
created_on = models.DateTimeField(auto_now_add=True)
posting = models.ForeignKey(meal_posting, null=True, on_delete=models.CASCADE)

def __str__(self):
return self.title
17 changes: 17 additions & 0 deletions stewpot/test_stewpot.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,17 @@ def setUp(self):
text='shared meal test',
meal=self.tst_recipe)
)
self.meal_posting = (models.meal_posting
.objects.create(title='Test Posting',
creator=self.tst_user,
text='A Test Posting Post')
)
self.share_meal_posting = (models.share_meal
.objects.create(title='PostingTest',
creator=self.tst_user,
text='Posting Meal Test',
meal=self.tst_recipe)
)

self.factory = RequestFactory()

Expand All @@ -41,3 +52,9 @@ def test_share_start(self):
request.user = self.tst_user
response = views.start_share(request, self.tst_recipe.meal_id)
self.assertEqual(response.status_code, 200)

def test_posting(self):
request = self.factory.get(f'share/post')
request.user = self.tst_user
response = views.view_share(request, self.meal_posting.id)
self.assertEqual(response.status_code, 200)
1 change: 1 addition & 0 deletions stewpot/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@
path('save/<str:meal_id>', share_views.start_share, name='start-shared'),
path('', share_views.save_share, name='save-shared'),
path('view/<int:share_id>', share_views.view_share, name='view-shared'),
path('post/<int:post_id>', share_views.view_posting, name='view-posting'),
]
25 changes: 24 additions & 1 deletion stewpot/views.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from meals.models import mstr_recipe
from stewpot.models import share_meal
from stewpot.models import share_meal, meal_posting
from mealcurator.helperfuncs import check_blank

# TODO: Let edits happen for things people shared
Expand Down Expand Up @@ -56,3 +56,26 @@ def view_share(request, share_id):
}
template = 'stewpot/share.html'
return render(request, template, context)


def view_posting(request, post_id):
posting = meal_posting.objects.get(id=post_id)
shared = (share_meal.objects.values('id',
'title',
'text',
'meal_id',
'meal__title',
'meal__vegan',
'meal__vegetarian',
'meal__meal_time',
'meal__cooking_time',
'meal__dish_type',
'meal__cooking_method',
'meal__protein_type',
'meal__rec_url')
.filter(posting=posting))

context = {'pp': posting,
'shared_meals': shared}
template = 'stewpot/meal_post.html'
return render(request, template, context)
97 changes: 97 additions & 0 deletions templates/stewpot/meal_post.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
{% extends "base.html" %}
{% load static %}
{% load cooks_extras %}


{% block css_style %}
.list{
text-align: center;
}

.container {
border-radius: 5px;
padding: 20px;
}

{% endblock css_style %}

{% block page_content %}
<div class="content">


<h1>{{pp.title}}</h1>
<p>{{pp.text}}</p>

{% for meal in shared_meals %}

<h2>{{meal.title}}</h2>

<div class="recCard">
<table>
<th colspan=2><a href="{{ meal.meal__rec_url }}", target="_blank">{{ meal.meal__title }}</a></th>
<tr><td><b>Vegan:</b> {{ meal.meal__vegan|yesno:"Yes,No" }}</td><td><b>Vegetarian:</b> {{ meal.meal__vegetarian|yesno:"Yes,No" }}</td></tr>
<tr><td class="leftTd">Meal Time:</td>
<td class="rightTd">
{% if meal.meal__meal_time == 'bk' %} Breakfast
{% elif meal.meal__meal_time == 'lu' %} Lunch
{% elif meal.meal__meal_time == 'di' %} Dinner
{% elif meal.meal__meal_time == 'sd' %} Side Dish
{% elif meal.meal__meal_time == 'de' %} Dessert
{% elif meal.meal__meal_time == 'sn' %} Snack
{% endif %}
</td></tr>
<tr><td class="leftTd">Cooking Time:</td>
<td class="rightTd">
{% if meal.meal__cooking_time == '20' %} Less than 20 Minutes
{% elif meal.meal__cooking_time == '40' %} 20 to 40 Minutes
{% elif meal.meal__cooking_time == '60' %} 40 to 60 Minutes
{% elif meal.meal__cooking_time == '61' %} Over 60 Minutes
{% endif %}
</td></tr>
<tr><td class="leftTd">Method:</td>
<td class="rightTd">
{% if meal.meal__cooking_method == 'st' %} Stove Top
{% elif meal.meal__cooking_method == 'mi' %} Microwave
{% elif meal.meal__cooking_method == 'bl' %} Blender
{% elif meal.meal__cooking_method == 'gr' %} Grill
{% elif meal.meal__cooking_method == 'ov' %} Oven
{% elif meal.meal__cooking_method == 'pr' %} Pressure Cooker
{% elif meal.meal__cooking_method == 'sc' %} Slow Cooker
{% elif meal.meal__cooking_method == 'af' %} Air Fryer
{% elif meal.meal__cooking_method == 'ra' %} Raw/Uncooked
{% endif %}
</td></tr>
<tr><td class="leftTd">Dish Type:</td>
<td class="rightTd">
{% if meal.meal__dish_type == 'sp' %} Soup
{% elif meal.meal__dish_type == 'bk' %} Baked Dish
{% elif meal.meal__dish_type == 'pa' %} Pasta
{% elif meal.meal__dish_type == 'cu' %} Curry
{% elif meal.meal__dish_type == 'ca' %} Casserole
{% elif meal.meal__dish_type == 'st' %} Stew
{% elif meal.meal__dish_type == 'sa' %} Salad
{% elif meal.meal__dish_type == 'lt' %} Light Dish
{% elif meal.meal__dish_type == 'sm' %} Smoothie
{% elif meal.meal__dish_type == 'na' %} Other
{% endif %}
</td></tr>
<tr><td class="leftTd">Protein Type:</td>
<td class="rightTd">
{% if meal.meal__protein_type == 'be' %} Beef
{% elif meal.meal__protein_type == 'ch' %} Chicken
{% elif meal.meal__protein_type == 'pb' %} Plant Based
{% elif meal.meal__protein_type == 'se' %} Fish / Shellfish
{% elif meal.meal__protein_type == 'pk' %} Pork
{% elif meal.meal__protein_type == 'na' %} None
{% elif meal.meal__protein_type == 'ot' %} Other
{% endif %}
</td></tr>
</table>
</div>
<p>{{meal.text}}</p>

{% endfor %}

</div>
{% endblock %}