def create_user_consent_for_all_documents(shop, user): """ Create user consent for all available GDPR documents """ from shuup.gdpr.models import GDPRUserConsent, GDPRSettings if not GDPRSettings.get_for_shop( shop).enabled or is_documents_consent_in_sync(shop, user): return from shuup.simple_cms.models import Page, PageType consent_documents = Page.objects.visible(shop).filter( page_type=PageType.GDPR_CONSENT_DOCUMENT) GDPRUserConsent.create_for_user(user, shop, consent_documents)
def get_fields(self, **kwargs): request = kwargs.get("request", None) gdpr_settings = get_gdpr_settings(request) if not gdpr_settings: return [] user_consent = None if request.user.is_authenticated(): user_consent = GDPRUserConsent.get_for_user( request.user, request.shop) fields = [] for page in get_active_consent_pages(request.shop): # user already has consented to this page, ignore it if user_consent and not user_consent.should_reconsent_to_page( page): continue key = "accept_{}".format(page.id) field = forms.BooleanField(label=mark_safe( ugettext( "I have read and accept the <a href='{}' target='_blank' class='gdpr_consent_doc_check'>{}</a>" ).format(reverse("shuup:cms_page", kwargs=dict(url=page.url)), page.title)), required=True, error_messages=dict( required=self.error_message)) definition = FormFieldDefinition(name=key, field=field) fields.append(definition) return fields
def create_user_consent_for_all_documents(shop, user): """ Create user consent for all available GDPR documents """ from shuup.gdpr.models import GDPRUserConsent, GDPRSettings gdpr_settings = GDPRSettings.get_for_shop(shop) if not gdpr_settings.enabled or is_documents_consent_in_sync(shop, user): return consent_documents = get_active_consent_pages(shop) return GDPRUserConsent.ensure_for_user(user, shop, consent_documents)
def is_documents_consent_in_sync(shop, user): """ Returns whether the user has consent to the lastest document versions """ from shuup.gdpr.models import GDPRSettings gdpr_settings = GDPRSettings.get_for_shop(shop) if not gdpr_settings.enabled: return True # nothing to do. from shuup.gdpr.models import GDPRUserConsent last_user_consent = GDPRUserConsent.get_for_user(user, shop) if not last_user_consent: return False return not last_user_consent.should_reconsent(shop, user)