Compare commits
4 Commits
0.1.3
...
8f048369bf
Author | SHA1 | Date | |
---|---|---|---|
8f048369bf | |||
f974469996 | |||
dbbd7b0802 | |||
abca946883 |
@@ -1,25 +1,25 @@
|
|||||||
# Generated by Django 3.1.1 on 2020-10-04 19:52
|
# Generated by Django 3.1.1 on 2020-10-04 19:52
|
||||||
|
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
dependencies = [
|
dependencies = [
|
||||||
('lostplaces', '0002_reomve_vouchers'),
|
('lostplaces', '0002_reomve_vouchers'),
|
||||||
]
|
]
|
||||||
|
|
||||||
operations = [
|
operations = [
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Voucher',
|
name='Voucher',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('created_when', models.DateTimeField(auto_now_add=True)),
|
('created_when', models.DateTimeField(auto_now_add=True)),
|
||||||
('expires_when', models.DateTimeField()),
|
('expires_when', models.DateTimeField()),
|
||||||
('code', models.CharField(max_length=30, unique=True)),
|
('code', models.CharField(max_length=30, unique=True)),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
]
|
]
|
@@ -1,102 +0,0 @@
|
|||||||
# Generated by Django 3.1.1 on 2020-12-19 13:53
|
|
||||||
|
|
||||||
import django.core.validators
|
|
||||||
from django.db import migrations, models
|
|
||||||
import django.db.models.deletion
|
|
||||||
import easy_thumbnails.fields
|
|
||||||
import lostplaces.models.place
|
|
||||||
|
|
||||||
|
|
||||||
class Migration(migrations.Migration):
|
|
||||||
|
|
||||||
dependencies = [
|
|
||||||
('lostplaces', '0003_voucher'),
|
|
||||||
]
|
|
||||||
|
|
||||||
operations = [
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='photoalbum',
|
|
||||||
name='label',
|
|
||||||
field=models.CharField(max_length=100, verbose_name='link text'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='photoalbum',
|
|
||||||
name='submitted_by',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='photoalbums', to='lostplaces.explorer', verbose_name='Submitter'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='photoalbum',
|
|
||||||
name='submitted_when',
|
|
||||||
field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='Submission date'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='photoalbum',
|
|
||||||
name='url',
|
|
||||||
field=models.URLField(verbose_name='URL'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='description',
|
|
||||||
field=models.TextField(help_text="Description of the place: e.g. how to get there, where to be careful, the place's history...", verbose_name='Description'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='latitude',
|
|
||||||
field=models.FloatField(help_text='Latitude in decimal format: e. g. 41.40338', validators=[django.core.validators.MinValueValidator(-90), django.core.validators.MaxValueValidator(90)], verbose_name='Latitude'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='location',
|
|
||||||
field=models.CharField(max_length=50, verbose_name='Location'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='longitude',
|
|
||||||
field=models.FloatField(help_text='Longitude in decimal format: e. g. 2.17403', validators=[django.core.validators.MinValueValidator(-180), django.core.validators.MaxValueValidator(180)], verbose_name='Longitude'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='name',
|
|
||||||
field=models.CharField(max_length=50, verbose_name='Name'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='submitted_by',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='places', to='lostplaces.explorer', verbose_name='Submitter'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='place',
|
|
||||||
name='submitted_when',
|
|
||||||
field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='Submission date'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='placeimage',
|
|
||||||
name='description',
|
|
||||||
field=models.TextField(blank=True, verbose_name='Description'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='placeimage',
|
|
||||||
name='filename',
|
|
||||||
field=easy_thumbnails.fields.ThumbnailerImageField(help_text='Optional: One or more images to upload', upload_to=lostplaces.models.place.generate_image_upload_path, verbose_name='Filename(s)'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='placeimage',
|
|
||||||
name='submitted_by',
|
|
||||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='placeimages', to='lostplaces.explorer', verbose_name='Submitter'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='placeimage',
|
|
||||||
name='submitted_when',
|
|
||||||
field=models.DateTimeField(auto_now_add=True, null=True, verbose_name='Submission date'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='voucher',
|
|
||||||
name='created_when',
|
|
||||||
field=models.DateTimeField(auto_now_add=True, verbose_name='Creation date'),
|
|
||||||
),
|
|
||||||
migrations.AlterField(
|
|
||||||
model_name='voucher',
|
|
||||||
name='expires_when',
|
|
||||||
field=models.DateTimeField(verbose_name='Expiration date'),
|
|
||||||
),
|
|
||||||
]
|
|
@@ -14,6 +14,7 @@ from django.db.models.signals import post_save
|
|||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
|
|
||||||
from lostplaces.models.abstract_models import Expireable
|
from lostplaces.models.abstract_models import Expireable
|
||||||
|
from lostplaces.models.place import Place
|
||||||
|
|
||||||
class Explorer(models.Model):
|
class Explorer(models.Model):
|
||||||
"""
|
"""
|
||||||
@@ -27,6 +28,12 @@ class Explorer(models.Model):
|
|||||||
related_name='explorer'
|
related_name='explorer'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
favorite_places = models.ManyToManyField(
|
||||||
|
Place,
|
||||||
|
related_name='favorite_places',
|
||||||
|
verbose_name='Explorers favorite places'
|
||||||
|
)
|
||||||
|
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
return self.user.username
|
return self.user.username
|
||||||
|
|
||||||
|
@@ -11,6 +11,8 @@ from lostplaces.views import (
|
|||||||
PlaceDeleteView,
|
PlaceDeleteView,
|
||||||
PlaceTagDeleteView,
|
PlaceTagDeleteView,
|
||||||
PlaceTagSubmitView,
|
PlaceTagSubmitView,
|
||||||
|
PlaceFavoriteView,
|
||||||
|
PlaceUnfavoriteView,
|
||||||
PhotoAlbumCreateView,
|
PhotoAlbumCreateView,
|
||||||
PhotoAlbumDeleteView,
|
PhotoAlbumDeleteView,
|
||||||
PlaceImageCreateView,
|
PlaceImageCreateView,
|
||||||
@@ -36,5 +38,10 @@ urlpatterns = [
|
|||||||
path('place/tag/<int:tagged_id>', PlaceTagSubmitView.as_view(), name='place_tag_submit'),
|
path('place/tag/<int:tagged_id>', PlaceTagSubmitView.as_view(), name='place_tag_submit'),
|
||||||
path('place/tag/delete/<int:tagged_id>/<int:tag_id>', PlaceTagDeleteView.as_view(), name='place_tag_delete'),
|
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/<int:explorer_id>/', ExplorerProfileView.as_view(), name='explorer_profile'),
|
||||||
|
|
||||||
|
path('explorer/favorite/<int:place_id>/', PlaceFavoriteView.as_view(), name='place_favorite'),
|
||||||
|
path('explorer/unfavorite/<int:place_id>/', PlaceUnfavoriteView.as_view(), name='place_favorite')
|
||||||
|
|
||||||
|
|
||||||
]
|
]
|
||||||
|
@@ -119,3 +119,35 @@ class PlaceDeleteView(IsAuthenticatedMixin, IsPlaceSubmitterMixin, DeleteView):
|
|||||||
|
|
||||||
def get_place(self):
|
def get_place(self):
|
||||||
return self.get_object()
|
return self.get_object()
|
||||||
|
|
||||||
|
class PlaceFavoriteView(IsAuthenticatedMixin, View):
|
||||||
|
|
||||||
|
def get(self, request, place_id):
|
||||||
|
place = get_object_or_404(Place, id=place_id)
|
||||||
|
if request.user is not None:
|
||||||
|
request.user.explorer.favorite_places.add(place)
|
||||||
|
request.user.explorer.save()
|
||||||
|
|
||||||
|
referer = request.META.get('HTTP_referer')
|
||||||
|
if referer is not None:
|
||||||
|
return redirect(referer)
|
||||||
|
else:
|
||||||
|
return redirect(
|
||||||
|
reverse_lazy('place_detail', kwargs={'pk': place.pk})
|
||||||
|
)
|
||||||
|
|
||||||
|
class PlaceUnfavoriteView(IsAuthenticatedMixin, View):
|
||||||
|
|
||||||
|
def get(self, request, place_id):
|
||||||
|
place = get_object_or_404(Place, id=place_id)
|
||||||
|
if request.user is not None:
|
||||||
|
request.user.explorer.favorite_places.remove(place)
|
||||||
|
request.user.explorer.save()
|
||||||
|
|
||||||
|
referer = request.META.get('HTTP_referer')
|
||||||
|
if referer is not None:
|
||||||
|
return redirect(referer)
|
||||||
|
else:
|
||||||
|
return redirect(
|
||||||
|
reverse_lazy('place_detail', kwargs={'pk': place.pk})
|
||||||
|
)
|
@@ -8,7 +8,7 @@ with open('../Readme.md') as f:
|
|||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='django-lostplaces',
|
name='django-lostplaces',
|
||||||
version='0.1.3',
|
version='0.1.2 HotFix',
|
||||||
description='A django app to manage lost places',
|
description='A django app to manage lost places',
|
||||||
author='Reverend',
|
author='Reverend',
|
||||||
author_email='reverend@reverend2048.de',
|
author_email='reverend@reverend2048.de',
|
||||||
|
Reference in New Issue
Block a user