Merge branch 'master' into production

This commit is contained in:
Andreas Zweili 2018-01-14 12:28:48 +01:00
commit 75dac7d385
4 changed files with 73 additions and 15 deletions

View File

@ -5,7 +5,9 @@ from django.contrib.auth.models import User
# Register your models here.
from webshop.models import (Article, Order, OrderPosition,
Person, City, Picture, OrderOfGoods,
Category, Option, Setting)
Category, Option)
from webshop.forms import PictureForm
class PersonInline(admin.StackedInline):
@ -14,12 +16,38 @@ class PersonInline(admin.StackedInline):
verbose_name_plural = 'person'
class PictureAdmin(admin.ModelAdmin):
form = PictureForm
ordering = ('name',)
list_display = ('name', 'article',)
class PictureInline(admin.StackedInline):
model = Picture
can_delete = False
form = PictureForm
verbose_name_plural = 'pictures'
class OptionAdmin(admin.ModelAdmin):
model = Option
list_display = ('name', 'description',)
readonly_fields = ('name','description',)
def get_actions(self, request):
#Disable delete
actions = super(OptionAdmin, self).get_actions(request)
del actions['delete_selected']
return actions
def has_delete_permission(self, request, obj=None):
#Disable delete
return False
def has_add_permission(self, request):
return False
class UserAdmin(BaseUserAdmin):
inlines = (PersonInline,)
@ -54,8 +82,8 @@ admin.site.register(User, UserAdmin)
admin.site.register(Article, ArticleAdmin)
admin.site.register(Order, OrderAdmin)
admin.site.register(Picture, PictureAdmin)
admin.site.register(City)
admin.site.register(OrderOfGoods, OrderOfGoodsAdmin)
admin.site.register(Category)
admin.site.register(Option)
admin.site.register(Setting)
admin.site.register(Option, OptionAdmin)

View File

@ -95,3 +95,10 @@
stock: 44
status: 3
price_in_chf: 41.4
- model: webshop.Option
fields:
name: max_pictures
description: "Maximum number of Pictures a user is allowed to upload."
value: 5
enabled: True

View File

@ -1,5 +1,5 @@
from django import forms
from webshop.models import Salutation, City
from webshop.models import Salutation, City, Picture, Article, Option
class RegistrationForm(forms.Form):
@ -22,3 +22,32 @@ class RegistrationForm(forms.Form):
raise forms.ValidationError(
"The zip code and the city don't match.")
return city
class PictureForm(forms.ModelForm):
def max_pictures(self):
try:
option = Option.objects.get(name='max_pictures')
if option.enabled:
return option.value
else:
return False
except:
return False
def count_pictures(self, _article):
count = Picture.objects.filter(article=_article.id).count()
return count
def clean(self):
article = self.cleaned_data.get('article')
print(self.max_pictures())
if self.max_pictures():
if (self.count_pictures(article) >= self.max_pictures()):
raise forms.ValidationError("Only " + str(self.max_pictures())
+ " pictures per article allowed.")
return self.cleaned_data
class Meta:
model = Picture
fields = ['name', 'article', 'image']

View File

@ -7,18 +7,12 @@ from django.utils import timezone
class Option(models.Model):
name = models.CharField(max_length=200, unique=True)
description = models.CharField(max_length=200, unique=True)
value = models.IntegerField(default=5)
def __str__(self):
return self.name
class Setting(models.Model):
option = models.ForeignKey(Option, on_delete=models.CASCADE)
enabled = models.BooleanField(default=False)
def __str__(self):
return str(self.option)
return self.name
class ArticleStatus(models.Model):
@ -74,8 +68,8 @@ class OrderOfGoods(models.Model):
class Picture(models.Model):
name = models.CharField(max_length=200, unique=True)
article = models.ForeignKey(Article, on_delete=models.CASCADE)
name = models.CharField(max_length=200)
article = models.ForeignKey(Article)
image = models.ImageField(upload_to="images")
def __str__(self):