diff --git a/SocialHelper/homepage/__pycache__/models.cpython-37.pyc b/SocialHelper/homepage/__pycache__/models.cpython-37.pyc index 74a6f6e..9a1f377 100644 Binary files a/SocialHelper/homepage/__pycache__/models.cpython-37.pyc and b/SocialHelper/homepage/__pycache__/models.cpython-37.pyc differ diff --git a/SocialHelper/homepage/__pycache__/urls.cpython-37.pyc b/SocialHelper/homepage/__pycache__/urls.cpython-37.pyc index 13f81a5..169035a 100644 Binary files a/SocialHelper/homepage/__pycache__/urls.cpython-37.pyc and b/SocialHelper/homepage/__pycache__/urls.cpython-37.pyc differ diff --git a/SocialHelper/homepage/__pycache__/views.cpython-37.pyc b/SocialHelper/homepage/__pycache__/views.cpython-37.pyc index cb03f2f..28c0ccc 100644 Binary files a/SocialHelper/homepage/__pycache__/views.cpython-37.pyc and b/SocialHelper/homepage/__pycache__/views.cpython-37.pyc differ diff --git a/SocialHelper/homepage/migrations/0001_initial.py b/SocialHelper/homepage/migrations/0001_initial.py index 64d4821..c7ffa2c 100644 --- a/SocialHelper/homepage/migrations/0001_initial.py +++ b/SocialHelper/homepage/migrations/0001_initial.py @@ -1,7 +1,9 @@ -# Generated by Django 2.1.5 on 2020-12-10 20:03 +# Generated by Django 3.1.4 on 2020-12-20 16:51 import datetime +from django.conf import settings from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -9,6 +11,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -19,13 +22,13 @@ class Migration(migrations.Migration): ('active', models.BooleanField(default=True)), ('picture', models.ImageField(blank=True, null=True, upload_to='images/')), ('create_date', models.DateField(default=datetime.date.today, verbose_name='Date')), - ('user_owner', models.TextField(default='', max_length=40)), ('type', models.IntegerField(choices=[(1, 'Potrzebuje'), (2, 'Oddam')], default='')), ('offer', models.IntegerField(choices=[(1, 'Usługa'), (2, 'Przedmiot')], default='')), ('title', models.TextField(default='', max_length=40)), ('description', models.TextField(default='', max_length=6000)), ('place', models.TextField(default='', max_length=40)), ('keywords', models.TextField(default='', max_length=6000)), + ('user_iden', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), ] diff --git a/SocialHelper/homepage/migrations/__pycache__/0001_initial.cpython-37.pyc b/SocialHelper/homepage/migrations/__pycache__/0001_initial.cpython-37.pyc index 856ed75..f887f0f 100644 Binary files a/SocialHelper/homepage/migrations/__pycache__/0001_initial.cpython-37.pyc and b/SocialHelper/homepage/migrations/__pycache__/0001_initial.cpython-37.pyc differ diff --git a/SocialHelper/homepage/migrations/__pycache__/0002_auto_20201220_1746.cpython-37.pyc b/SocialHelper/homepage/migrations/__pycache__/0002_auto_20201220_1746.cpython-37.pyc new file mode 100644 index 0000000..7713d55 Binary files /dev/null and b/SocialHelper/homepage/migrations/__pycache__/0002_auto_20201220_1746.cpython-37.pyc differ diff --git a/SocialHelper/homepage/migrations/__pycache__/0003_auto_20201220_1746.cpython-37.pyc b/SocialHelper/homepage/migrations/__pycache__/0003_auto_20201220_1746.cpython-37.pyc new file mode 100644 index 0000000..c330d69 Binary files /dev/null and b/SocialHelper/homepage/migrations/__pycache__/0003_auto_20201220_1746.cpython-37.pyc differ diff --git a/SocialHelper/homepage/migrations/__pycache__/0004_auto_20201220_1747.cpython-37.pyc b/SocialHelper/homepage/migrations/__pycache__/0004_auto_20201220_1747.cpython-37.pyc new file mode 100644 index 0000000..19c47b1 Binary files /dev/null and b/SocialHelper/homepage/migrations/__pycache__/0004_auto_20201220_1747.cpython-37.pyc differ diff --git a/SocialHelper/homepage/models.py b/SocialHelper/homepage/models.py index 12099fd..14601b1 100644 --- a/SocialHelper/homepage/models.py +++ b/SocialHelper/homepage/models.py @@ -1,4 +1,6 @@ from django.db import models +from django.contrib.auth.models import User + import datetime TYPE_T = ( @@ -10,11 +12,12 @@ TYPE_O = ( (1,'Usługa'), (2,'Przedmiot'), ) + class Product(models.Model): active = models.BooleanField(default=True) picture = models.ImageField(null=True, blank=True, upload_to="images/") create_date = models.DateField(("Date"), default=datetime.date.today) - user_owner = models.TextField(max_length=40, blank=False, default="") + user_iden = models.ForeignKey(User, on_delete=models.CASCADE) type = models.IntegerField(choices = TYPE_T, blank=False, default="") offer = models.IntegerField(choices = TYPE_O, blank=False, default="") title = models.TextField(max_length=40, blank=False, default="") diff --git a/SocialHelper/homepage/templates/homepage/Dodawanie.html b/SocialHelper/homepage/templates/homepage/add_offer.html similarity index 99% rename from SocialHelper/homepage/templates/homepage/Dodawanie.html rename to SocialHelper/homepage/templates/homepage/add_offer.html index 9525048..0176fbb 100644 --- a/SocialHelper/homepage/templates/homepage/Dodawanie.html +++ b/SocialHelper/homepage/templates/homepage/add_offer.html @@ -16,7 +16,7 @@ -
+ {% csrf_token %} {{ form.media }} {{ form.as_p }} diff --git a/SocialHelper/homepage/templates/homepage/create_user.html b/SocialHelper/homepage/templates/homepage/create_user.html new file mode 100644 index 0000000..b8d9274 --- /dev/null +++ b/SocialHelper/homepage/templates/homepage/create_user.html @@ -0,0 +1,135 @@ +{% extends 'base.html' %} +{% load static %} +{% block content %} + + + + + +
+
+
+

Utwórz nowe konto

+
+
+
+ + + + + {% csrf_token %} + {{ form.media }} + {{ form.as_p }} +
+
+
+ + +
+ + +
+ +
+ + +
+ +
+ +
+ +
+
+
+ + + + + + + + + + {% endblock %} diff --git a/SocialHelper/homepage/templates/homepage/edycja_ogloszenia.html b/SocialHelper/homepage/templates/homepage/edycja_ogloszenia.html index bc7c594..f0ba863 100644 --- a/SocialHelper/homepage/templates/homepage/edycja_ogloszenia.html +++ b/SocialHelper/homepage/templates/homepage/edycja_ogloszenia.html @@ -79,7 +79,7 @@
- +
diff --git a/SocialHelper/homepage/templates/homepage/login.html b/SocialHelper/homepage/templates/homepage/login.html new file mode 100644 index 0000000..efa98ed --- /dev/null +++ b/SocialHelper/homepage/templates/homepage/login.html @@ -0,0 +1,144 @@ +{% extends 'base.html' %} +{% load static %} +{% block content %} + + + + + +
+
+
+

Zaloguj się

+
+
+
+ + + +
+ {% csrf_token %} + {{ form.media }} + {{ form.as_p }} + + +
+
+
+ + +
+ + +
+ +
+ + +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+
+ + + + + + + + + + {% endblock %} diff --git a/SocialHelper/homepage/templates/homepage/Mojeogloszenia.html b/SocialHelper/homepage/templates/homepage/my_offer.html similarity index 98% rename from SocialHelper/homepage/templates/homepage/Mojeogloszenia.html rename to SocialHelper/homepage/templates/homepage/my_offer.html index 0951898..a7338ad 100644 --- a/SocialHelper/homepage/templates/homepage/Mojeogloszenia.html +++ b/SocialHelper/homepage/templates/homepage/my_offer.html @@ -9,6 +9,7 @@
+
{{ username }}

Moje ogłoszenia

@@ -61,6 +62,7 @@

No polls are available.

{% endif %} +
diff --git a/SocialHelper/homepage/templates/navbar.html b/SocialHelper/homepage/templates/navbar.html index 39ee5b7..686c124 100644 --- a/SocialHelper/homepage/templates/navbar.html +++ b/SocialHelper/homepage/templates/navbar.html @@ -23,8 +23,8 @@ diff --git a/SocialHelper/homepage/urls.py b/SocialHelper/homepage/urls.py index 4beced9..024d2ad 100644 --- a/SocialHelper/homepage/urls.py +++ b/SocialHelper/homepage/urls.py @@ -9,9 +9,14 @@ urlpatterns = [ path('contact', views.contact, name='contact'), path('regulamin',views.regulamin, name='regulamin'), path('filter', views.filter, name='filter'), - path('Dodawanie', views.Dodawanie, name='Dodawanie'), - path('Mojeogloszenia', views.Mojeogloszenia, name='Mojeogloszenia'), + path('add_offer', views.add_offer, name='add_offer'), + path('my_offer', views.my_offer, name='my_offer'), path('/delete_offer', views.delete_offer, name='delete_offer'), path('/edit_offer', views.edit_offer, name='edit_offer'), + path('create_user', views.create_user, name='create_user'), + path('login', views.login, name='login'), + path('delete_user', views.delete_user, name='delete_user'), + path('/delete_user', views.delete_user, name='delete_user'), + ] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/SocialHelper/homepage/views.py b/SocialHelper/homepage/views.py index 168467f..5e43edf 100644 --- a/SocialHelper/homepage/views.py +++ b/SocialHelper/homepage/views.py @@ -1,7 +1,11 @@ from django.shortcuts import get_object_or_404, render, redirect +from django.contrib.auth import authenticate, login, logout from django.http import HttpResponse, HttpResponseRedirect +from django.contrib.auth.decorators import login_required from django.urls import reverse from django.template import loader +from django.contrib.auth import get_user_model +from django.contrib import messages, auth from .models import Product, TYPE_T, TYPE_O @@ -11,7 +15,7 @@ import datetime def index(request): - all_product = Product.objects.all + all_product = Product.objects.filter(active = True) template = loader.get_template('homepage/index.html') types = TYPE_T types_o = TYPE_O @@ -32,34 +36,38 @@ def index(request): } return HttpResponse(template.render(context, request)) - def contact(request): return render(request , 'homepage/contact.html') def regulamin(request): return render(request, 'homepage/regulamin.html') -def Mojeogloszenia(request): - all_product = Product.objects.filter(user_owner = "jedrzejklepacki@wp.pl", active = True).order_by('create_date') - template = loader.get_template('homepage/Mojeogloszenia.html') - types = TYPE_T - types_o = TYPE_O - place_local = "" - oddam_local = "" - potrzebuje_local = "" - usluga_local = "" - przedmiot_local = "" - context = { - 'all_product': all_product, - 'types': types, - 'place_local': place_local, - 'oddam_local': oddam_local, - 'potrzebuje_local': potrzebuje_local, - 'types_o': types_o, - 'usluga_local': usluga_local, - 'przedmiot_local': przedmiot_local, - } - return HttpResponse(template.render(context, request)) +def my_offer(request): + if request.user.is_authenticated: + all_product = Product.objects.filter(user_iden = request.user.id, active = True).order_by('create_date') + username = request.user.email + template = loader.get_template('homepage/my_offer.html') + types = TYPE_T + types_o = TYPE_O + place_local = "" + oddam_local = "" + potrzebuje_local = "" + usluga_local = "" + przedmiot_local = "" + context = { + 'all_product': all_product, + 'types': types, + 'place_local': place_local, + 'oddam_local': oddam_local, + 'potrzebuje_local': potrzebuje_local, + 'types_o': types_o, + 'usluga_local': usluga_local, + 'przedmiot_local': przedmiot_local, + 'username': username + } + return HttpResponse(template.render(context, request)) + else: + return redirect(login) def filter(request): @@ -108,39 +116,42 @@ def filter(request): } return HttpResponse(template.render(context, request)) -def Dodawanie(request): - if request.method == 'POST': - place_local = request.POST['place'] - type_local = request.POST['type'] - script_local = request.POST['script'] - title_local = request.POST['title'] - data_local = timezone.now() - if request.FILES: - pic_local = request.FILES['file'] - else: - pic_local = "/images/basic.png" - offer_local = request.POST['offer'] - product = Product( - picture = pic_local, - create_date = data_local, - user_owner = "jedrzejklepacki@wp.pl", - type = int(type_local), - offer = int(offer_local), - title = title_local, - description = script_local, - place = place_local, - keywords = "", - ) - product.save() - return redirect(Mojeogloszenia) - return render(request , 'homepage/Dodawanie.html') +def add_offer(request): + if request.user.is_authenticated: + if request.method == 'POST': + place_local = request.POST['place'] + type_local = request.POST['type'] + script_local = request.POST['script'] + title_local = request.POST['title'] + data_local = timezone.now() + if request.FILES: + pic_local = request.FILES['file'] + else: + pic_local = "/images/basic.png" + offer_local = request.POST['offer'] + product = Product( + picture = pic_local, + create_date = data_local, + user_iden = request.user, + type = int(type_local), + offer = int(offer_local), + title = title_local, + description = script_local, + place = place_local, + keywords = "", + ) + product.save() + return redirect(my_offer) + return render(request , 'homepage/add_offer.html') + else: + return redirect(login) def delete_offer(request, offer_id): instance = Product.objects.get(id=offer_id) instance.active = False instance.save() - return redirect(Mojeogloszenia) + return redirect(my_offer) def edit_offer(request, offer_id): instance = Product.objects.get(id=offer_id) @@ -170,5 +181,58 @@ def edit_offer(request, offer_id): instance.keywords = "" instance.save() - return redirect(Mojeogloszenia) + return redirect(my_offer) return render(request , 'homepage/edycja_ogloszenia.html', context) + +def create_user(request): + if request.method == 'POST': + User = get_user_model() + email = request.POST['email'] + password = request.POST['password'] + if User.objects.filter(email=email).exists(): + messages.error(request,'Ten adres e-mail jest już używany') + return redirect('create_user') + else: + user = User( + username = email, + email = email, + is_active = True, + is_staff = False + ) + user.save() + user.set_password(password) + user.save() + messages.success(request,'Gratulacje, teraz możesz się zalogować!') + return redirect(my_offer) + return render(request , 'homepage/create_user.html') + +def delete_user(request): + User = get_user_model() + instant = User.objects.filter(id=request.user.id).first() + instant.is_active = False + instant.save() + messages.success(request,'Konto skasowane!') + return redirect(index) + +def edit_user(request, user_id): + return True + +def login(request): + if request.method == 'POST': + username = request.POST['email'] + password = request.POST['password'] + user = authenticate(request, username=username, password=password, is_active=True) + if user is not None: + auth.login(request,user) + messages.success(request, 'Jesteś zalogowany!') + return redirect(my_offer) + else: + messages.error(request,'Nieprawidłowe dane logowania!') + return redirect(login) + return render(request , 'homepage/login.html') + +def logout_user(request): + if request.method == 'POST': + auth.logout(request) + messages.success(request, 'Zostałeś wylogowany!') + return render(request, index) diff --git a/SocialHelper/media/images/1.jpg b/SocialHelper/media/images/1.jpg new file mode 100644 index 0000000..b7f84ac Binary files /dev/null and b/SocialHelper/media/images/1.jpg differ diff --git a/SocialHelper/media/images/1_4xD9eiF.jpg b/SocialHelper/media/images/1_4xD9eiF.jpg new file mode 100644 index 0000000..b7f84ac Binary files /dev/null and b/SocialHelper/media/images/1_4xD9eiF.jpg differ