Compare commits

...

8 Commits

10 changed files with 156 additions and 54 deletions

View File

@ -9,8 +9,6 @@ from django.contrib.auth.admin import UserAdmin
from django.utils import timezone
from lostplaces.models import *
from lostplaces.forms import ExplorerCreationForm, ExplorerChangeForm
# Register your models here.
class VoucherAdmin(admin.ModelAdmin):

View File

@ -8,9 +8,9 @@ from django.db import models
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth.models import User
from django.utils.translation import ugettext_lazy as _
from lostplaces.models import Place, PlaceImage, Voucher
from lostplaces.models import Place, PlaceImage, Voucher, Explorer
class ExplorerCreationForm(UserCreationForm):
class SignupVoucherForm(UserCreationForm):
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name')
@ -35,10 +35,23 @@ class ExplorerCreationForm(UserCreationForm):
fetched_voucher.delete()
return True
class ExplorerChangeForm(UserChangeForm):
class ExplorerUserChangeForm(UserChangeForm):
class Meta:
model = User
fields = ('username', 'email', 'first_name', 'last_name')
fields = [ 'username', 'first_name', 'last_name', 'email' ]
password = None
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['username'].required = False
self.fields['username'].help_text = None
self.fields['username'].widget.attrs['disabled'] = 'disabled'
class ExplorerChangeForm(forms.ModelForm):
class Meta:
model = Explorer
fields = '__all__'
exclude = ['user', 'favorite_places']
class PlaceForm(forms.ModelForm):
class Meta:

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-12-24 16:29+0100\n"
"POT-Creation-Date: 2020-12-25 01:22+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Commander1024 <commander@commander1024.de>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -30,7 +30,7 @@ msgstr "Ungültiger Voucher"
msgid "Expired voucher"
msgstr "Abgelaufener Voucher"
#: models/abstract_models.py:29 templates/explorer/profile.html:19
#: models/abstract_models.py:29 templates/explorer/profile.html:31
msgid "Name"
msgstr "Name"
@ -75,14 +75,20 @@ msgid "link text"
msgstr "Linktext"
#: models/models.py:46
#, fuzzy
#| msgid "Filename(s)"
msgid "Filename"
msgstr "Dateiname(n)"
msgid "Biography / Description"
msgstr "Beschreibung"
#: models/models.py:47
msgid "Optional profile pic for display in explorer profile"
msgstr ""
msgid "Describe yourself, your preferences, etc. in a few sentences."
msgstr "Beschreibe Dich selbst, Deine Vorlieben, usw. in ein paar Sätzen."
#: models/models.py:55
msgid "Profile image"
msgstr "Profilbild"
#: models/models.py:56
msgid "Optional profile image for display in Explorer profile"
msgstr "Optionales Profilbind zur Anzeige im Explorerprofil"
#: models/place.py:21
msgid "Location"
@ -120,41 +126,49 @@ msgstr "Du wirst in 5 Sekunden weitergeleitet"
msgid "Go Back"
msgstr "Zurück"
#: templates/explorer/profile.html:27
msgid "E-Mail"
msgstr ""
#: templates/explorer/profile.html:41
msgid "E-mail"
msgstr "E-Mail"
#: templates/explorer/profile.html:35
#: templates/explorer/profile.html:52
msgid "Joined"
msgstr ""
msgstr "Beigetreten"
#: templates/explorer/profile.html:43
#: templates/explorer/profile.html:60
#, fuzzy
#| msgid "All Places"
msgid "Places"
msgstr "Alle Places"
#: templates/explorer/profile.html:51
msgid "Place Assets"
#: templates/explorer/profile.html:68
msgid "Place assets"
msgstr ""
#: templates/explorer/profile.html:65
#, fuzzy
#| msgid "Image(s) submitted successfully"
msgid "Places submitted by"
msgstr "Bild(er) erfolgreich hinzugefügt"
#: templates/explorer/profile.html:82
#, fuzzy
#| msgid "Image(s) submitted successfully"
msgid "Images submitted by"
msgstr "Bild(er) erfolgreich hinzugefügt"
msgid "Favorite places"
msgstr "Favoriten-Places"
#: templates/explorer/profile.html:104
#, fuzzy
#| msgid "Photo album link submitted"
#: templates/explorer/profile.html:98
msgid "Places submitted by"
msgstr "Places hinzugefügt von"
#: templates/explorer/profile.html:113
msgid "Images submitted by"
msgstr "Bilder hinzugefügt von"
#: templates/explorer/profile.html:135
msgid "Photo albums submitted by"
msgstr "Fotoalbum-Link hinzugefügt"
msgstr "Fotoalben hinzugefügt von"
#: templates/explorer/profile_update.html:6
#: templates/explorer/profile_update.html:12
msgid "Edit Explorer profile"
msgstr "Explorerprofil bearbeiten"
#: templates/explorer/profile_update.html:48
#: templates/place/place_update.html:42
msgid "Update"
msgstr "Aktualisieren"
#: templates/global.html:32
msgid "Logout"
@ -174,7 +188,7 @@ msgid "Login"
msgstr "Anmelden"
#: templates/global.html:41 templates/registration/login.html:29
#: templates/signup.html:6 templates/signup.html:12 templates/signup.html:41
#: templates/signup.html:6 templates/signup.html:12 templates/signup.html:49
msgid "Sign up"
msgstr "Registrieren"
@ -244,6 +258,14 @@ msgstr "Abschicken"
msgid "Cancel"
msgstr "Abbrechen"
#: templates/partials/icons/place_favorite.html:6
msgid "Remove from favorites"
msgstr "Aus den Favoriten entfernen"
#: templates/partials/icons/place_favorite.html:10
msgid "Save as favorite"
msgstr "In den Favoriten speichern"
#: templates/partials/nav/footer.html:64
msgid "Made by"
msgstr "Erstellt von"
@ -368,10 +390,6 @@ msgstr "Alle Places"
msgid "Our lost places"
msgstr "Unsere Lost Places"
#: templates/place/place_update.html:42
msgid "Update"
msgstr "Aktualisieren"
#: templates/place_image/place_image_create.html:7
msgid "Submit images to a place"
msgstr "Bilder zu einem Place hinzufügen"
@ -435,3 +453,8 @@ msgstr "Fotoalbum-Link gelöscht"
#: views/views.py:60
msgid "You are not allowed to edit this photo album link"
msgstr "Du darfst diesen Fotoalbum-Link nicht bearbeiten"
#, fuzzy
#~| msgid "Filename(s)"
#~ msgid "Filename"
#~ msgstr "Dateiname(n)"

View File

@ -53,7 +53,7 @@ class Explorer(models.Model):
resize_source=dict(size=(400, 400),
sharpen=True),
verbose_name=_('Profile image'),
help_text=_('Optional profile pic for display in explorer profile')
help_text=_('Optional profile image for display in Explorer profile')
)
favorite_places = models.ManyToManyField(
Place,

View File

@ -38,7 +38,7 @@
<tr>
{% if explorer.user.email %}
<td class="LP-UserInfo__Key">
<span class="LP-Paragraph">{% trans 'E-Mail' %}</span>
<span class="LP-Paragraph">{% trans 'E-mail' %}</span>
</td>
<td class="LP-UserInfo__Value">
<span class="LP-Paragraph">
@ -65,7 +65,7 @@
</tr>
<tr>
<td class="LP-UserInfo__Key">
<span class="LP-Paragraph">{% trans 'Place Assets'%}</span>
<span class="LP-Paragraph">{% trans 'Place assets'%}</span>
</td>
<td class="LP-UserInfo__Value">
<span class="LP-Paragraph">{{asset_count}}</span>

View File

@ -0,0 +1,55 @@
{% extends 'global.html'%}
{% load static %}
{% load i18n %}
{% load widget_tweaks %}
# {% block title %}{% trans 'Edit Explorer profile' %}{% endblock %}
{% block maincontent %}
<form class="LP-Form" method="POST">
<fieldset class="LP-Form__Fieldset">
<legend class="LP-Form__Legend">{% trans 'Edit Explorer profile' %}</legend>
{% csrf_token %}
<div class="LP-Form__Composition LP-Form__Composition--breakable">
<div class="LP-Form__Field">
{% include 'partials/form/inputField.html' with field=explorer_user_change_form.username %}
</div>
<div class="LP-Form__Field">
{% include 'partials/form/inputField.html' with field=explorer_user_change_form.email %}
</div>
</div>
<div class="LP-Form__Composition LP-Form__Composition--breakable">
<div class="LP-Form__Field">
{% include 'partials/form/inputField.html' with field=explorer_user_change_form.first_name %}
</div>
<div class="LP-Form__Field">
{% include 'partials/form/inputField.html' with field=explorer_user_change_form.last_name %}
</div>
</div>
<div class="LP-Form__Composition">
<div class="LP-Form__Field">
{% include 'partials/form/inputField.html' with field=explorer_change_form.bio %}
</div>
</div>
<div class="LP-Form__Composition">
{% if explorer_image_url %}
<div class="LP-Form__Field">
<img class="LP-Form__Field LP-Image" src="{{ explorer_image_url }}"/>
</div>
{% endif %}
<div class="LP-Form__Field">
{% include 'partials/form/inputField.html' with field=explorer_change_form.profile_image %}
</div>
</div>
{% trans 'Update' as action %}
<div class="LP-Form__Composition LP-Form__Composition--buttons">
{% include 'partials/form/submit.html' with referrer=request.META.HTTP_REFERER action=action %}
</div>
</fieldset>
</form>
{% endblock maincontent %}

View File

@ -4,15 +4,15 @@ from django import forms
from django.utils import timezone
from lostplaces.tests.forms import FormTestCase
from lostplaces.forms import ExplorerCreationForm
from lostplaces.forms import SignupVoucherForm
from lostplaces.models.models import Voucher
class ExplorerCreationFormTestCase(FormTestCase):
class SignupVoucherFormTestCase(FormTestCase):
"""
This test case only tests for the voucher since all other aspects don't realy matter
to this project and are already tested by django
"""
form = ExplorerCreationForm
form = SignupVoucherForm
@classmethod
def setUpTestData(cls):
@ -37,7 +37,7 @@ class ExplorerCreationFormTestCase(FormTestCase):
)
def test_validation_valid(self):
form = ExplorerCreationForm(self.post_data)
form = SignupVoucherForm(self.post_data)
self.assertTrue(
form.is_valid(),
msg='Expecting the %s to validate' % (
@ -49,7 +49,7 @@ class ExplorerCreationFormTestCase(FormTestCase):
self.post_data = {
'voucher': 'Imanotacode123'
}
form = ExplorerCreationForm(self.post_data)
form = SignupVoucherForm(self.post_data)
self.assertFalse(
form.is_valid(),
msg='Expecting the %s to not validate' % (

View File

@ -18,7 +18,8 @@ from lostplaces.views import (
PlaceImageCreateView,
PlaceImageDeleteView,
FlatView,
ExplorerProfileView
ExplorerProfileView,
ExplorerProfileUpdateView
)
urlpatterns = [
@ -39,9 +40,8 @@ urlpatterns = [
path('place/tag/delete/<int:tagged_id>/<int:tag_id>', PlaceTagDeleteView.as_view(), name='place_tag_delete'),
path('explorer/<int:explorer_id>/', ExplorerProfileView.as_view(), name='explorer_profile'),
path('explorer/update/', ExplorerProfileUpdateView.as_view(), name='explorer_profile_update'),
path('explorer/favorite/<int:place_id>/', PlaceFavoriteView.as_view(), name='place_favorite'),
path('explorer/unfavorite/<int:place_id>/', PlaceUnfavoriteView.as_view(), name='place_unfavorite')
]

View File

@ -12,6 +12,7 @@ from lostplaces.common import get_all_subclasses
from lostplaces.views.base_views import IsAuthenticatedMixin
from lostplaces.models.models import Explorer
from lostplaces.models.place import Place, PlaceAsset
from lostplaces.forms import ExplorerChangeForm, ExplorerUserChangeForm
class ExplorerProfileView(IsAuthenticatedMixin, View):
def get(self, request, explorer_id):
@ -39,3 +40,15 @@ class ExplorerProfileView(IsAuthenticatedMixin, View):
template_name='explorer/profile.html',
context=context
)
class ExplorerProfileUpdateView(IsAuthenticatedMixin, View):
success_message = ''
permission_denied_message = ''
def get(self, request, *args, **kwargs):
context = {
'explorer_image_url': request.user.explorer.profile_image.url,
'explorer_user_change_form': ExplorerUserChangeForm(instance=request.user),
'explorer_change_form': ExplorerChangeForm(instance=request.user.explorer)
}
return render(request, 'explorer/profile_update.html', context)

View File

@ -11,7 +11,7 @@ from django.shortcuts import render, redirect, get_object_or_404
from django.http import HttpResponseForbidden
from django.utils.translation import ugettext_lazy as _
from lostplaces.forms import ExplorerCreationForm, TagSubmitForm
from lostplaces.forms import SignupVoucherForm, TagSubmitForm
from lostplaces.models import Place, PhotoAlbum
from lostplaces.views.base_views import IsAuthenticatedMixin
@ -23,7 +23,7 @@ from lostplaces.views.base_views import (
from taggit.models import Tag
class SignUpView(SuccessMessageMixin, CreateView):
form_class = ExplorerCreationForm
form_class = SignupVoucherForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
success_message = _('User created')