diff --git a/core/migrations/0005_user_is_banned_alcohol.py b/core/migrations/0005_user_is_banned_alcohol.py new file mode 100644 index 00000000..4e143899 --- /dev/null +++ b/core/migrations/0005_user_is_banned_alcohol.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0004_user_godfathers'), + ] + + operations = [ + migrations.AddField( + model_name='user', + name='is_banned_alcohol', + field=models.BooleanField(help_text='Designates whether this user is denyed from buying alchool. ', verbose_name='banned from buying alcohol', default=False), + ), + ] diff --git a/core/models.py b/core/models.py index 8e3a8899..0ce644ea 100644 --- a/core/models.py +++ b/core/models.py @@ -169,6 +169,13 @@ class User(AbstractBaseUser): parent_address = models.CharField(_("parent address"), max_length=128, blank=True, default="") is_subscriber_viewable = models.BooleanField(_("is subscriber viewable"), default=True) godfathers = models.ManyToManyField('User', related_name='godchildren', blank=True) + is_banned_alcohol = models.BooleanField( + _('banned from buying alcohol'), + default=False, + help_text=_( + 'Designates whether this user is denyed from buying alchool. ' + ), + ) objects = UserManager() diff --git a/core/views/forms.py b/core/views/forms.py index 27226d25..898b7e6b 100644 --- a/core/views/forms.py +++ b/core/views/forms.py @@ -127,7 +127,7 @@ class UserProfileForm(forms.ModelForm): fields = ['first_name', 'last_name', 'nick_name', 'email', 'date_of_birth', 'profile_pict', 'avatar_pict', 'scrub_pict', 'sex', 'second_email', 'address', 'parent_address', 'phone', 'parent_phone', 'tshirt_size', 'role', 'department', 'dpt_option', 'semester', 'quote', 'school', 'promo', - 'forum_signature', 'is_subscriber_viewable'] + 'forum_signature', 'is_subscriber_viewable', 'is_banned_alcohol'] widgets = { 'date_of_birth': SelectDate, 'profile_pict': forms.ClearableFileInput, diff --git a/core/views/user.py b/core/views/user.py index 0ac02de9..a88cd0b2 100644 --- a/core/views/user.py +++ b/core/views/user.py @@ -319,22 +319,29 @@ class UserUpdateProfileView(UserTabsMixin, CanEditMixin, UpdateView): form_class = UserProfileForm current_tab = "edit" edit_once = ['profile_pict', 'date_of_birth', 'first_name', 'last_name'] + board_only = ['is_banned_alcohol'] - def remove_once_edited_fields(self, request): + def remove_restricted_fields(self, request): + """ + Removes edit_once and board_only fields + """ for i in self.edit_once: if getattr(self.form.instance, i) and not (request.user.is_board_member or request.user.is_root): self.form.fields.pop(i, None) + for i in self.board_only: + if not (request.user.is_board_member or request.user.is_root): + self.form.fields.pop(i, None) def get(self, request, *args, **kwargs): self.object = self.get_object() self.form = self.get_form() - self.remove_once_edited_fields(request) + self.remove_restricted_fields(request) return self.render_to_response(self.get_context_data(form=self.form)) def post(self, request, *args, **kwargs): self.object = self.get_object() self.form = self.get_form() - self.remove_once_edited_fields(request) + self.remove_restricted_fields(request) files = request.FILES.items() self.form.process(files) if request.user.is_authenticated() and request.user.can_edit(self.object) and self.form.is_valid(): diff --git a/counter/views.py b/counter/views.py index 79a79297..5eb52709 100644 --- a/counter/views.py +++ b/counter/views.py @@ -278,6 +278,9 @@ class CounterClick(CounterTabsMixin, DetailView): if product.limit_age >= 18 and not self.customer.user.date_of_birth: request.session['no_age'] = True return False + if product.limit_age >= 18 and self.customer.user.is_banned_alcohol: + request.session['not_allowed'] = True + return False if self.customer.user.date_of_birth and self.customer.user.get_age() < product.limit_age: # Check if affordable request.session['too_young'] = True return False