Fuck Off
This commit is contained in:
parent
07a3c256e9
commit
af692d405d
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-10-29 23:28
|
||||
# Generated by Django 1.11.7 on 2017-12-04 01:44
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
@ -31,7 +31,7 @@ class Migration(migrations.Migration):
|
||||
name='Lecture_Terms',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('starttime', models.TimeField(default=datetime.datetime(2017, 10, 29, 23, 28, 46, 228504, tzinfo=utc))),
|
||||
('starttime', models.TimeField(default=datetime.datetime(2017, 12, 4, 1, 44, 13, 10710, tzinfo=utc))),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-10-29 23:29
|
||||
# Generated by Django 1.11.7 on 2017-12-04 01:44
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
@ -17,6 +17,6 @@ class Migration(migrations.Migration):
|
||||
migrations.AlterField(
|
||||
model_name='lecture_terms',
|
||||
name='starttime',
|
||||
field=models.TimeField(default=datetime.datetime(2017, 10, 29, 23, 29, 23, 775652, tzinfo=utc)),
|
||||
field=models.TimeField(default=datetime.datetime(2017, 12, 4, 1, 44, 28, 301106, tzinfo=utc)),
|
||||
),
|
||||
]
|
||||
@ -1,22 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.5 on 2017-10-29 23:30
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
from django.db import migrations, models
|
||||
from django.utils.timezone import utc
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('donar', '0002_auto_20171030_0029'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lecture_terms',
|
||||
name='starttime',
|
||||
field=models.TimeField(default=datetime.datetime(2017, 10, 29, 23, 30, 14, 805020, tzinfo=utc)),
|
||||
),
|
||||
]
|
||||
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2017-11-11 09:13
|
||||
# Generated by Django 1.11.7 on 2017-12-04 02:03
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
@ -10,13 +10,13 @@ from django.utils.timezone import utc
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('donar', '0002_auto_20171030_0029'),
|
||||
('donar', '0002_auto_20171204_0244'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lecture_terms',
|
||||
name='starttime',
|
||||
field=models.TimeField(default=datetime.datetime(2017, 11, 11, 9, 13, 24, 139058, tzinfo=utc)),
|
||||
field=models.TimeField(default=datetime.datetime(2017, 12, 4, 2, 3, 45, 618615, tzinfo=utc)),
|
||||
),
|
||||
]
|
||||
@ -1,22 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.5 on 2017-10-29 23:31
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
from django.db import migrations, models
|
||||
from django.utils.timezone import utc
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('donar', '0003_auto_20171030_0030'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='lecture_terms',
|
||||
name='starttime',
|
||||
field=models.TimeField(default=datetime.datetime(2017, 10, 29, 23, 31, 17, 880353, tzinfo=utc)),
|
||||
),
|
||||
]
|
||||
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.6 on 2017-10-25 21:40
|
||||
# Generated by Django 1.11.7 on 2017-12-04 01:44
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
@ -2,11 +2,12 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.contrib import admin
|
||||
from apps.food.models import SingleFood, Menu, HappyHour, UserRating
|
||||
from apps.food.models import SingleFood, Menu, HappyHour, UserRating, UserFoodImage
|
||||
|
||||
# Register your models here.
|
||||
admin.site.register(SingleFood)
|
||||
admin.site.register(Menu)
|
||||
admin.site.register(HappyHour)
|
||||
admin.site.register(UserRating)
|
||||
admin.site.register(UserFoodImage)
|
||||
|
||||
|
||||
8
ofu_app/apps/food/forms.py
Normal file
8
ofu_app/apps/food/forms.py
Normal file
@ -0,0 +1,8 @@
|
||||
from django import forms
|
||||
from apps.food.models import UserFoodImage
|
||||
|
||||
|
||||
class UploadImageForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = UserFoodImage
|
||||
fields = ['image']
|
||||
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-10-29 23:28
|
||||
# Generated by Django 1.11.7 on 2017-12-04 01:44
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
@ -51,11 +51,19 @@ class Migration(migrations.Migration):
|
||||
('price_student', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('price_employee', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('price_guest', models.CharField(blank=True, max_length=10, null=True)),
|
||||
('image', models.ImageField(blank=True, upload_to='food/%Y/%m/')),
|
||||
('rating', models.FloatField(default=0)),
|
||||
('allergens', models.ManyToManyField(blank=True, to='food.Allergene')),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserFoodImage',
|
||||
fields=[
|
||||
('id', models.AutoField(primary_key=True, serialize=False)),
|
||||
('image', models.ImageField(blank=True, upload_to='food/%Y/%m/%W')),
|
||||
('food', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='food.SingleFood')),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserRating',
|
||||
fields=[
|
||||
@ -65,6 +73,11 @@ class Migration(migrations.Migration):
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='singlefood',
|
||||
name='image',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_images', to='food.UserFoodImage'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='menu',
|
||||
name='menu',
|
||||
@ -74,6 +87,10 @@ class Migration(migrations.Migration):
|
||||
name='happyhour',
|
||||
unique_together=set([('date', 'location', 'starttime', 'endtime')]),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='userfoodimage',
|
||||
unique_together=set([('user', 'food')]),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='menu',
|
||||
unique_together=set([('date', 'location')]),
|
||||
|
||||
24
ofu_app/apps/food/migrations/0002_auto_20171204_0303.py
Normal file
24
ofu_app/apps/food/migrations/0002_auto_20171204_0303.py
Normal file
@ -0,0 +1,24 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.7 on 2017-12-04 02:03
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('food', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='singlefood',
|
||||
name='image',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='singlefood',
|
||||
name='image',
|
||||
field=models.ManyToManyField(related_name='user_images', to='food.UserFoodImage'),
|
||||
),
|
||||
]
|
||||
@ -27,7 +27,7 @@ class SingleFood(models.Model):
|
||||
price_student = models.CharField(max_length=10, blank=True, null=True)
|
||||
price_employee = models.CharField(max_length=10, blank=True, null=True)
|
||||
price_guest = models.CharField(max_length=10, blank=True, null=True)
|
||||
image = models.ImageField(upload_to='food/%Y/%m/', blank=True)
|
||||
image = models.ManyToManyField("UserFoodImage", related_name='user_images')
|
||||
rating = models.FloatField(default=0)
|
||||
allergens = models.ManyToManyField("Allergene", blank=True)
|
||||
|
||||
@ -66,3 +66,16 @@ class UserRating(models.Model):
|
||||
|
||||
def __str__(self):
|
||||
return "User: %s - Rating: %s" % (self.user.username, self.rating)
|
||||
|
||||
|
||||
class UserFoodImage(models.Model):
|
||||
id = models.AutoField(primary_key=True)
|
||||
user = models.ForeignKey(User, on_delete=models.CASCADE, unique=False)
|
||||
food = models.ForeignKey(SingleFood)
|
||||
image = models.ImageField(upload_to='food/%Y/%m/%W', blank=True)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('user', 'food')
|
||||
|
||||
def __str__(self):
|
||||
return "User: %s - Rating: %s" % (self.user.username, str(self.image))
|
||||
|
||||
@ -13,9 +13,9 @@ Including another URLconf
|
||||
1. Import the include() function: from django.conf.urls import url, include
|
||||
2. Add a URL to urlpatterns: url(r'^blog/', include('blog.urls'))
|
||||
"""
|
||||
from django.conf.urls import url
|
||||
|
||||
from apps.food import views
|
||||
from django.conf.urls import url, include
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', views.food, name='food'),
|
||||
|
||||
@ -2,16 +2,21 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import datetime
|
||||
import os
|
||||
|
||||
from django.conf import settings
|
||||
from django.core.exceptions import ObjectDoesNotExist
|
||||
from django.http import HttpResponse
|
||||
from django.shortcuts import render
|
||||
from pprint import pprint
|
||||
|
||||
from apps.food.models import Menu, HappyHour, SingleFood, UserRating
|
||||
from apps.food.forms import UploadImageForm
|
||||
from apps.food.models import Menu, HappyHour, SingleFood, UserRating, UserFoodImage
|
||||
|
||||
|
||||
# Create your views here.
|
||||
def daily_food(request):
|
||||
today = datetime.datetime.now()
|
||||
today = datetime.datetime.now() - datetime.timedelta(4)
|
||||
feki_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Feldkirchenstraße").last()
|
||||
austr_menu = Menu.objects.filter(date__exact=today).filter(location__contains="Austraße").last()
|
||||
erba_cafete = Menu.objects.filter(date__exact=today).filter(location__contains="Erba").last()
|
||||
@ -49,8 +54,12 @@ def weekly_food(request):
|
||||
|
||||
|
||||
def food_detail(request, id):
|
||||
if request.method == 'POST':
|
||||
if pic_upload(request, id) == False:
|
||||
return HttpResponse(status=404)
|
||||
food = SingleFood.objects.get(id=id)
|
||||
return render(request, "food/detailed_food.jinja", {'food': food})
|
||||
images = UserFoodImage.objects.filter(food=id)
|
||||
return render(request, "food/detailed_food.jinja", {'food': food, 'images': images})
|
||||
|
||||
|
||||
def all_food(request):
|
||||
@ -94,7 +103,6 @@ def food_rating(request):
|
||||
food.save()
|
||||
return HttpResponse(status=200)
|
||||
return HttpResponse(status=404)
|
||||
|
||||
return HttpResponse(status=403)
|
||||
|
||||
|
||||
@ -106,5 +114,22 @@ def food_image(request):
|
||||
food.image = img
|
||||
food.save()
|
||||
return HttpResponse(status=200)
|
||||
|
||||
return HttpResponse(status=404)
|
||||
|
||||
|
||||
def pic_upload(request, id):
|
||||
form = UploadImageForm(request.POST, request.FILES)
|
||||
if form.is_valid():
|
||||
try:
|
||||
old_user_pic = UserFoodImage.objects.get(user=request.user, food=id)
|
||||
old_user_pic.delete()
|
||||
os.remove(os.path.join(settings.MEDIA_ROOT, old_user_pic.image.name))
|
||||
except ObjectDoesNotExist:
|
||||
pass
|
||||
userPic = form.save(commit=False)
|
||||
userPic.food = SingleFood.objects.get(id=id)
|
||||
userPic.user = request.user
|
||||
userPic.save()
|
||||
return True
|
||||
else:
|
||||
return False
|
||||
|
||||
@ -8,4 +8,10 @@ class SignUpForm(UserCreationForm):
|
||||
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ('username', 'email', 'password1', 'password2', )
|
||||
fields = ('username', 'email', 'password1', 'password2',)
|
||||
|
||||
|
||||
class ChangeUserDataForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = User
|
||||
fields = ('first_name', 'last_name', 'email',)
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.2 on 2017-10-29 11:07
|
||||
# Generated by Django 1.11.7 on 2017-12-04 01:02
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.conf import settings
|
||||
|
||||
@ -3,6 +3,7 @@ from apps.registration import views as core_views
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^$', core_views.account_view, name='account'),
|
||||
url(r'^change/$', core_views.account_change, name='change-account'),
|
||||
url(r'^signup/$', core_views.signup, name='signup'),
|
||||
url(r'^account_activation_sent/$', core_views.account_activation_sent, name='account_activation_sent'),
|
||||
url(r'^activate/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
|
||||
|
||||
@ -1,17 +1,17 @@
|
||||
from django.contrib.sites.shortcuts import get_current_site
|
||||
from django.shortcuts import render, redirect
|
||||
from django.shortcuts import render, redirect, get_object_or_404, render_to_response
|
||||
from django.utils.encoding import force_bytes
|
||||
from django.utils.http import urlsafe_base64_encode
|
||||
from django.template.loader import render_to_string
|
||||
from apps.registration.forms import SignUpForm
|
||||
from apps.registration.forms import SignUpForm, ChangeUserDataForm
|
||||
from apps.registration.tokens import account_activation_token
|
||||
from django.contrib.auth import login
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.encoding import force_text
|
||||
from django.utils.http import urlsafe_base64_decode
|
||||
from django.core.mail import send_mail
|
||||
from django.shortcuts import HttpResponse
|
||||
from apps.food.models import UserRating
|
||||
from django.shortcuts import HttpResponse, redirect
|
||||
from apps.food.models import UserRating, UserFoodImage
|
||||
|
||||
|
||||
def signup(request):
|
||||
@ -62,11 +62,31 @@ def account_activation_sent(request):
|
||||
def account_view(request):
|
||||
if request.user.is_authenticated:
|
||||
user = request.user
|
||||
|
||||
food_ratings = UserRating.objects.filter(user=user).order_by('food__name')
|
||||
food_images = UserFoodImage.objects.filter(user=user)
|
||||
print(food_images)
|
||||
|
||||
return render(request, 'registration/account_view.jinja',
|
||||
{'name': user.username, 'email': user.email, 'date_joined': user.date_joined,
|
||||
'food_ratings': food_ratings, 'first_name': user.first_name, 'last_name': user.last_name,
|
||||
'last_login': user.last_login})
|
||||
'last_login': user.last_login, 'food_images': food_images})
|
||||
else:
|
||||
return HttpResponse(status=404)
|
||||
|
||||
|
||||
def account_change(request):
|
||||
if request.user.is_authenticated:
|
||||
instance = get_object_or_404(User, id=request.user.id)
|
||||
form = ChangeUserDataForm(request.POST, instance=instance, initial={"first_name": "Hallo"})
|
||||
if request.method == 'POST':
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
return redirect('account')
|
||||
else:
|
||||
return HttpResponse(status=404)
|
||||
else:
|
||||
return render(request, 'registration/account_data_change.jinja', {'form': form})
|
||||
|
||||
else:
|
||||
return HttpResponse(status=404)
|
||||
|
||||
@ -17,22 +17,24 @@ from core import views
|
||||
from django.conf.urls import url, include
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth import views as auth_views
|
||||
from django.conf import settings
|
||||
from django.conf.urls.static import static
|
||||
|
||||
urlpatterns = [
|
||||
url(r'^login/$', auth_views.login, {'template_name': 'registration/login.jinja'}, name='login'),
|
||||
url(r'^logout/$', auth_views.logout, {'next_page': 'home'}, name='logout'),
|
||||
url(r'^admin/', admin.site.urls),
|
||||
# url(r'^signup/$', core_views.signup, name='signup'),
|
||||
url(r'^account/', include("apps.registration.urls")),
|
||||
url(r'^login/$', auth_views.login, {'template_name': 'registration/login.jinja'}, name='login'),
|
||||
url(r'^logout/$', auth_views.logout, {'next_page': 'home'}, name='logout'),
|
||||
url(r'^admin/', admin.site.urls),
|
||||
# url(r'^signup/$', core_views.signup, name='signup'),
|
||||
url(r'^account/', include("apps.registration.urls")),
|
||||
|
||||
url(r'^$', views.home, name="home"),
|
||||
url(r'^$', views.home, name="home"),
|
||||
|
||||
# -- Apps --
|
||||
url(r'^food/', include('apps.food.urls')),
|
||||
url(r'^events/', include('apps.events.urls')),
|
||||
url(r'^donar/', include('apps.donar.urls')),
|
||||
url(r'^links/$', views.links, name='links-home'),
|
||||
url(r'^impressum/$', views.impressum, name='impressum'),
|
||||
# -- Apps --
|
||||
url(r'^food/', include('apps.food.urls')),
|
||||
url(r'^events/', include('apps.events.urls')),
|
||||
url(r'^donar/', include('apps.donar.urls')),
|
||||
url(r'^links/$', views.links, name='links-home'),
|
||||
url(r'^impressum/$', views.impressum, name='impressum'),
|
||||
|
||||
url(r'', include('api.urls'))
|
||||
]
|
||||
url(r'', include('api.urls'))
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
#main-nav {
|
||||
display: table;
|
||||
position: fixed;
|
||||
left: -200px;
|
||||
right: -200px;
|
||||
top: 0;
|
||||
background-color: transparent;
|
||||
z-index: 5000;
|
||||
height: 100%;
|
||||
width: 200px;
|
||||
-webkit-transition: left 0.5s; /* For Safari 3.1 to 6.0 */
|
||||
transition: left 0.5s;
|
||||
-webkit-transition: right 0.5s; /* For Safari 3.1 to 6.0 */
|
||||
transition: right 0.5s;
|
||||
}
|
||||
|
||||
#main-nav .nav-wrapper {
|
||||
@ -18,7 +18,7 @@
|
||||
|
||||
#main-nav .inner-nav .menu-item {
|
||||
padding: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
width: 100%;
|
||||
display: block;
|
||||
background-color: #ffffff;
|
||||
@ -39,14 +39,14 @@
|
||||
background-color: #ffffff;
|
||||
display: block;
|
||||
padding: 10px;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
margin-bottom: 0;
|
||||
text-transform: uppercase;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#menu-button:hover #main-nav, #menu-button:active #main-nav {
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
#menu-button:hover i, #menu-button:active i {
|
||||
|
||||
@ -7,25 +7,50 @@
|
||||
<div class="container">
|
||||
<div class="row p-3 border border-dark rounded bg-light text-dark">
|
||||
<div id="title" class="col-12"><h4>{{ food.name }}</h4></div>
|
||||
<div class="col-8 mt-2">
|
||||
<div class="col-12"><h5>Allergene</h5></div>
|
||||
<ul>
|
||||
{% for alergen in food.allergens.all() %}
|
||||
<li>{{ alergen }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<div class="col-8 mt-2">
|
||||
<div class="col-12"><h5>Allergene</h5></div>
|
||||
<ul>
|
||||
{% for alergen in food.allergens.all() %}
|
||||
<li>{{ alergen }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<div class="col-4 mt-2">
|
||||
<div id="prices" class="">
|
||||
<div><strong>Preise</strong></div>
|
||||
<div class="student">Student: {{ food.price_student }}</div>
|
||||
<div class="price-employee">Employee: {{ food.price_employee }}</div>
|
||||
<div class="price-guest">Guest: {{ food.price_guest }}</div>
|
||||
</div>
|
||||
<div class="col-4 mt-2">
|
||||
<div id="prices" class="">
|
||||
<div><strong>Preise</strong></div>
|
||||
<div class="student">Student: {{ food.price_student }}</div>
|
||||
<div class="price-employee">Employee: {{ food.price_employee }}</div>
|
||||
<div class="price-guest">Guest: {{ food.price_guest }}</div>
|
||||
</div>
|
||||
<div id="rating" class="mt-3"><strong>Rating:</strong> {{ food.rating }}</div>
|
||||
</div>
|
||||
<div id="rating" class="mt-3"><strong>Rating:</strong> {{ food.rating }}</div>
|
||||
</div>
|
||||
</div>
|
||||
{% if request.user.is_authenticated %}
|
||||
<div class="row p-3 border border-dark rounded bg-light text-dark">
|
||||
<div class="col-12 mt-2">
|
||||
<h4>Send a Picture</h4>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
{% csrf_token %}
|
||||
<tr>
|
||||
<th><label for="id_image">Image:</label></th>
|
||||
<td><input type="file" name="image" id="id_image"/></td>
|
||||
</tr>
|
||||
<input type="submit"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
{% if images %}
|
||||
<div class="row p-3 border border-dark rounded bg-light text-dark">
|
||||
<h4>Pictures</h4>
|
||||
{% for image in images %}
|
||||
<div class="col-12 mt-2">
|
||||
<p>{{ image.food.name }}</p>
|
||||
<img src="{{ image.image.url }}" style="width:50%">
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
||||
@ -31,28 +31,43 @@
|
||||
{% endmacro %}
|
||||
|
||||
{% macro get_menu(menu) -%}
|
||||
<ul class="border">
|
||||
<ul class="border media-list">
|
||||
{% for single_food in menu %}
|
||||
<li data-food="{{ single_food.id }}" data-rating="{{ single_food.rating }}" class="food-item">
|
||||
<div class="row">
|
||||
<div class="food-name col-8">
|
||||
{% if single_food.price_student %}
|
||||
<a href="{{ url('food-detail', args=[single_food.id]) }}">
|
||||
<p>{{ single_food.name }}</p></a>
|
||||
{% else %}
|
||||
<p>{{ single_food.name }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if single_food.price_student %}
|
||||
<div class="col-4"><span class="float-right">{{ single_food.price_student }}</span></div>
|
||||
<li data-food="{{ single_food.id }}" data-rating="{{ single_food.rating }}" class="food-item media">
|
||||
<div class="mr-2 media-left media-middle">
|
||||
{# TODO: without many to many #}
|
||||
{% if single_food.image.all() %}
|
||||
{% for image in single_food.image.all() %}
|
||||
<a href="{{ image.image.url }}">
|
||||
<img src="{{ image.image.url }}" class="media-object" alt="Bild" width="80px">
|
||||
</a>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<a href="/media/food/default/gorilla.jpg">
|
||||
<img src="/media/food/default/gorilla.jpg" class="media-object" alt="Bild" width="80px">
|
||||
</a>
|
||||
{% endif %}
|
||||
{#<div class="image-wrapper col-4"><img src="" class="img-rounded img" alt="" width="1024"
|
||||
</div>
|
||||
<div class="media-body">
|
||||
<div class="row">
|
||||
<div class="food-name col-8">
|
||||
{% if single_food.price_student %}
|
||||
<a href="{{ url('food-detail', args=[single_food.id]) }}">
|
||||
<p>{{ single_food.name }}</p></a>
|
||||
{% else %}
|
||||
<p>{{ single_food.name }}</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if single_food.price_student %}
|
||||
<div class="col-4"><span class="float-right">{{ single_food.price_student }}</span></div>
|
||||
{% endif %}
|
||||
{#<div class="image-wrapper col-4"><img src="" class="img-rounded img" alt="" width="1024"
|
||||
height="800"><i
|
||||
class="img-placeholder fa fa-cutlery text-right"></i></div>#}
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="rating-wrapper col-6 text-left"></div>
|
||||
{# <div class="col-6 text-right">
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="rating-wrapper col-6 text-left"></div>
|
||||
{# <div class="col-6 text-right">
|
||||
<label for="pic-upload-{{ single_food.id }}" class="custom-pic-upload">
|
||||
<i class="fa fa-camera" aria-hidden="true"></i>
|
||||
</label>
|
||||
@ -62,6 +77,7 @@
|
||||
id="upload-photo" style="display: none !important;"/>
|
||||
</div>
|
||||
</div>#}
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
{% endfor %}
|
||||
|
||||
33
ofu_app/templates/registration/account_data_change.jinja
Normal file
33
ofu_app/templates/registration/account_data_change.jinja
Normal file
@ -0,0 +1,33 @@
|
||||
{% extends 'base.jinja' %}
|
||||
|
||||
{% block headline %}<h3 class="text-center">Account</h3>{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="col-12 col-sm-12 col-md-12 col-lg-8 col-xl-8 text-left p-3 pl-4">
|
||||
<div class="row p-1">
|
||||
<div class="col-12 p-3 bg-light text-dark">
|
||||
<form method="post" action="{{ url('change-account') }}">
|
||||
{% csrf_token %}
|
||||
<label for="first_name" class="label">Vorname:</label>
|
||||
<p>
|
||||
<input id="first_name" type="text" name="first_name" value="{{ request.user.first_name }}"
|
||||
required autofocus maxlength="150"/>
|
||||
</p>
|
||||
<label for="last_name" class="label">Nachname:</label>
|
||||
<p>
|
||||
<input id="last_name" type="text" name="last_name"
|
||||
value="{{ request.user.last_name }}" required autofocus maxlength=" 150"/>
|
||||
</p>
|
||||
<label for="email" class="label">E-Mail:</label>
|
||||
<p>
|
||||
<input id="email" type="email" name="email" value="{{ request.user.email }}" required
|
||||
maxlength="
|
||||
254" id="id_email"/>
|
||||
<small style="color: grey">Required. Inform a valid email address.</small>
|
||||
</p>
|
||||
<input type="submit" class="button is-pulled-right" value="Save"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@ -10,16 +10,31 @@
|
||||
<p><strong>Vorname:</strong> {{ first_name }}</p>
|
||||
<p><strong>Nachname:</strong> {{ last_name }}</p>
|
||||
<p><strong>E-Mail:</strong> {{ email }}</p>
|
||||
<a href="{{ url('change-account') }}">Bearbeiten</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row p-1">
|
||||
<div class="col-12 p-3 bg-light text-dark">
|
||||
<h4>Your Food Ratings:</h4>
|
||||
{% for rating in food_ratings %}
|
||||
<p>{{ rating.food.name }}: {{ rating.rating }}</p>
|
||||
{% endfor %}
|
||||
<ul>
|
||||
{% for rating in food_ratings %}
|
||||
<li>{{ rating.food.name }}: {{ rating.rating }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row p-1">
|
||||
{% for image in food_images %}
|
||||
<div class="col-12 col-sm-12 col-md-6 col-lg-6 col-xl-4 p-3 bg-light text-dark">
|
||||
<p>{{ image.food.name }}</p>
|
||||
<div class="thumbnail">
|
||||
<a href="{{ image.image.url }}">
|
||||
<img src="{{ image.image.url }}" alt="Lights" style="width:100%">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-sm-12 col-md-12 col-lg-4 col-xl-4 text-center p-3">
|
||||
<div class="p-3 bg-light text-dark">
|
||||
|
||||
Reference in New Issue
Block a user