![]() | |
Informa Tempat Sampah 5 Ltr Stainless Fingerprint Slow CloseHunian Anda akan lebih bersih dan sehat dengan menghadirkan tempat sampah pedal ini. Memiliki fitur soft close (tutup perlahan) yang tidak menimbulkan bunyi saat tertutup. Sistem pedal dari tempat sampah ini memungkinkan Anda untuk membuang sampah tanpa perlu menyentuh tutupnya, sehingga tangan lebih bersih dan higienis. selain itu, sidik jari Anda tidak akan tertinggal ketika menyentuh tempat sampah. Free Klik Disini ! |
Dengan Decorator Pattern, didapatkak keuntungan-keuntungan sebagai berikut :
def decorateMyFunction(originalFunction):
'''Decorates a function by wrapping its return value in a pair of HTML paragraph tags.'''
def addAdditionalText():
obtain string returned by original function
add text to the string
return new string
return addAdditionalText
@decorateMyFunction
def functionToBeDecorated():
return True
Perhatikan struktur table auth_user dan account_emailaddress dibawah ini :
CREATE TABLE auth_user (
id serial NOT NULL,
last_login timestamptz NULL,
username varchar(150) NOT NULL,
first_name varchar(30) NOT NULL,
last_name varchar(150) NOT NULL,
email varchar(254) NOT NULL,
is_staff bool NOT NULL,
is_active bool NOT NULL,
date_joined timestamptz NOT NULL
);CREATE TABLE account_emailaddress (
id serial NOT NULL,
email varchar(254) NOT NULL,
verified bool NOT NULL,
"primary" bool NOT NULL,
user_id int4 NOT NULL
);
from allauth.account.models import EmailAddressdef email_verified(function):
def wrapper(request, *args, **kw):
user=request.user
chek_user = EmailAddress.objects.filter(user_id=user.id)
if chek_user:
chek_user = chek_user.first()
if chek_user.verified is False :
return HttpResponseRedirect('/users/no-email-verification')
else:
return function(request, *args, **kw)
else:
return HttpResponseRedirect('/')
return wrapper
from apps.utils import email_verifiedclass DashboardTemplateView(TemplateView):
template_name = 'home/index.html'
@method_decorator(email_verified)
def dispatch(self, *args, **kwargs):
return super().dispatch(*args, **kwargs)
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
return context
Baca artikel lainya :