def test_register_anonym_only(): class UserAnonym(register_models.AnonymBase): email = fields.string('test_email_{seq}@preply.com', seq_callback=datetime.datetime.now) username = fields.string('test_username_{seq}@preply.com', seq_callback=datetime.datetime.now) first_name = fields.string('first name {seq}') last_name = fields.string('last name {seq}') password = fields.password('password') is_staff = fields.function(lambda: False) class Meta: exclude_fields = [ 'is_active', 'is_superuser', 'last_login', 'date_joined' ] class GroupAnonym(register_models.AnonymBase): name = fields.string("group_name_{seq}") class Meta: pass register_models.register_anonym([ (User, UserAnonym), (Group, GroupAnonym), ]) Anonymizer(only='django.contrib.auth.models.Group') with pytest.raises(LookupError): Anonymizer(only='django.contrib.auth.models.WrongGroup')
def test_register_anonym(): class UserAnonym(register_models.AnonymBase): email = fields.string('test_email_{seq}@preply.com', seq_callback=datetime.datetime.now) username = fields.string('test_username_{seq}@preply.com', seq_callback=datetime.datetime.now) first_name = fields.string('first name {seq}') last_name = fields.string('last name {seq}') password = fields.password('password') is_staff = fields.function(lambda: False) class Meta: exclude_fields = [ 'is_active', 'is_superuser', 'last_login', 'date_joined' ] register_models.register_anonym([(User, UserAnonym)]) assert len(Anonymizer.clean_models) == 0 assert len(Anonymizer.skip_models) == 0 assert len(Anonymizer.anonym_models) == 1 assert 'django.contrib.auth.models.User' in \ Anonymizer.anonym_models.keys() assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].Meta. queryset, QuerySet) Anonymizer.anonym_models[ 'django.contrib.auth.models.User'].Meta.queryset.model is User assert Anonymizer.anonym_models[ 'django.contrib.auth.models.User'].Meta.exclude_fields == [ 'is_active', 'is_superuser', 'last_login', 'date_joined' ] assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].email, types.GeneratorType) assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].username, types.GeneratorType) assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].first_name, types.GeneratorType) assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].last_name, types.GeneratorType) assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].password, types.GeneratorType) assert isinstance( Anonymizer.anonym_models['django.contrib.auth.models.User'].is_staff, types.GeneratorType) assert next(Anonymizer.anonym_models['django.contrib.auth.models.User']. first_name) == 'first name 0' assert next(Anonymizer.anonym_models['django.contrib.auth.models.User']. is_staff) is False
def test_register_anonym_duplicate(): class UserAnonym(register_models.AnonymBase): email = fields.string('test_email_{seq}@preply.com', seq_callback=datetime.datetime.now) username = fields.string('test_username_{seq}@preply.com', seq_callback=datetime.datetime.now) first_name = fields.string('first name {seq}') last_name = fields.string('last name {seq}') password = fields.password('password') is_staff = fields.function(lambda: False) class Meta: exclude_fields = [ 'is_active', 'is_superuser', 'last_login', 'date_joined' ] with pytest.raises(ValueError): register_models.register_anonym([ (User, UserAnonym), (User, UserAnonym), ])
from dj_anonymizer.register_models import ( AnonymBase, register_anonym, ) from jobs import models class JobAnonym(AnonymBase): class Meta: exclude_fields = [ 'uuid', 'related_uuid', 'related_class', 'status', 'status_detail', 'badge', 'title', 'start', 'end', 'url', 'created', 'modified', 'extra_data' ] register_anonym([ (models.Job, JobAnonym), ])
# using faker lib for generating nice names fake = Factory.create() # create anonymizer class class UserAnonym(AnonymBase): last_name = anonym_field.function(fake.last_name) first_name = anonym_field.function(fake.first_name) email = anonym_field.string( "timothy.hobbs+testuser{seq}@auto-mat.cz", seq_callback=datetime.now, ) username = anonym_field.string("user_name{seq}") class Meta: # anonymize all users except the first one queryset = User.objects.exclude(id=1) # list of fields which will not be changed exclude_fields = [ "groups", "user_permissions", "is_active", "is_superuser", "last_login", "date_joined", "is_staff", "password", ] register_anonym([ (User, UserAnonym), ])
'template_name', 'accomplish', 'transform', 'playground', 'comment', 'category', 'location', 'place_id', 'created', 'modified', 'created_by', 'permissions', ] class TeamAnonym(AnonymBase): name = anonym_field.function(faker.sentence) class Meta: exclude_fields = [ 'uuid', 'project', 'stream', 'created', 'modified', 'image', 'created_by', 'permissions', 'action_object_actions', 'actor_actions', 'target_actions' ] register_anonym([ (models.Project, ProjectAnonym), (team_models.Team, TeamAnonym), ])
exclude_fields = [ 'created', 'modified', 'user', 'conversation', ] class MessageAnonym(AnonymBase): message = anonym_field.function(faker.text) class Meta: exclude_fields = [ 'actor_actions', 'action_object_actions', 'modified', 'created', 'created_by', 'deleted', 'conversation', 'files', 'target_actions', ] register_anonym([ (models.Conversation, ConversationAnonym), (models.ConversationUser, ConversationUserAnonym), (models.Message, MessageAnonym), ])
from dj_anonymizer.register_models import ( AnonymBase, register_anonym, ) from dj_anonymizer import anonym_field from utils.faker_factory import faker from django.db.models.fields import Field from team import models class TeamAnonym(AnonymBase): name = anonym_field.function(faker.name) class Meta: exclude_fields = list( set(field.name for field in models.Team._meta.get_fields() if isinstance(field, Field) and field.name not in [ 'name', ])) register_anonym([ (models.Team, TeamAnonym), ])
from dj_anonymizer.register_models import ( AnonymBase, register_anonym, ) from dj_anonymizer import anonym_field from django.db.models import Field from utils.faker_factory import faker from exo_accounts import models class SocialNetworkAnonym(AnonymBase): created = anonym_field.function(faker.date_time) modified = anonym_field.function(faker.date_time) value = anonym_field.function(faker.uri) class Meta: exclude_fields = list( set(field.name for field in models.SocialNetwork._meta.get_fields() if isinstance(field, Field) and field.name not in [ 'primary_phone', 'secondary_phone', ])) register_anonym([ (models.SocialNetwork, SocialNetworkAnonym), ])
from dj_anonymizer.register_models import ( AnonymBase, register_anonym, ) from dj_anonymizer import anonym_field from django.db.models import Field from utils.faker_factory import faker from project import models class ProjectAnonym(AnonymBase): name = anonym_field.function(faker.name) uuid = anonym_field.function(faker.uuid4) class Meta: exclude_fields = list( set(field.name for field in models.Project._meta.get_fields() if isinstance(field, Field) and field.name not in [ 'name', 'uuid', ])) register_anonym([ (models.Project, ProjectAnonym), ])
informed = anonym_field.function(fake.sentence) concerns = anonym_field.function(fake.sentence) returned_other = anonym_field.function(fake.sentence) extra_notes = anonym_field.function(fake.sentence) class Meta: exclude_fields = [ "modified", "created", "reason", "date", "meeting_held", "meeting_date", "meeting_attend", "returned_items", ] register_anonym([ (DisciplinaryProcess, DisciplinaryProcessAnonym), (Depledge, DepledgeAnonym), (Pledge, PledgeAnonym), (Initiation, InitiationAnonym), (ResignationProcess, ResignationProcessAnonym), (RiskManagement, RiskManagementAnonym), (CollectionReferral, CollectionReferralAnonym), (Convention, ConventionAnonym), (PrematureAlumnus, PrematureAlumnusAnonym), (StatusChange, StatusChangeAnonym), ])
from dj_anonymizer.register_models import (AnonymBase, register_anonym, register_skip) from dj_anonymizer import anonym_field from utils.faker_factory import faker from landing import models class SectionAnonym(AnonymBase): name = anonym_field.function(faker.sentence) description = anonym_field.function(faker.text) content = anonym_field.function(faker.text) class Meta: exclude_fields = ['modified', 'created', 'page', 'index'] register_anonym([ (models.Section, SectionAnonym), ]) register_skip([ models.Page, ])
from dj_anonymizer.register_models import AnonymBase, register_anonym from dj_anonymizer import anonym_field from faker import Factory from surveys.models import DepledgeSurvey fake = Factory.create() class DepledgeSurveyAnonym(AnonymBase): reason_other = anonym_field.function(fake.sentence) decided_other = anonym_field.function(fake.sentence) enjoyed = anonym_field.function(fake.paragraph) improve = anonym_field.function(fake.paragraph) extra_notes = anonym_field.function(fake.paragraph) class Meta: exclude_fields = [ "user", "created", "modified", "reason", "decided", "contact" ] register_anonym([ (DepledgeSurvey, DepledgeSurveyAnonym), ])
from dj_anonymizer.register_models import register_skip, AnonymBase, register_anonym from dj_anonymizer import anonym_field from faker import Factory from termsandconditions.models import UserTermsAndConditions, TermsAndConditions fake = Factory.create() register_skip([TermsAndConditions]) class UserTermsAndConditionsAnonym(AnonymBase): ip_address = anonym_field.function(fake.ipv4_public) class Meta: exclude_fields = ["date_accepted"] register_anonym([ (UserTermsAndConditions, UserTermsAndConditionsAnonym), ])
'_stripe_auth_token_code', '_stripe_payment_id', 'amount', 'currency', 'status', 'date_payment', 'url_notification', 'email_status', 'alternative_payment_mode', 'intent_client_secret_id', 'email_url', 'detail', 'invoice_id', 'intent_id', 'alternative_payment_comment', 'attached_file', '_type', 'send_invoice', 'send_by_email', 'rate', 'vat', 'uuid', 'country', 'country_code', ] register_anonym([ (models.Payment, PaymentAnonym), ])
company_name = anonym_field.function(faker.name) class Meta: exclude_fields = list({ field.name for field in models.ContractingData._meta.get_fields() if isinstance(field, Field) and field.name not in ['name', 'address', 'company_name'] }) class ConsultantExOProfileAnonym(AnonymBase): personal_mtp = anonym_field.function(faker.text) availability_hours = anonym_field.function(faker.pyint) video_url = anonym_field.function(faker.uri) class Meta: exclude_fields = list({ field.name for field in models.ConsultantExOProfile._meta.get_fields() if isinstance(field, Field) and field.name not in ['personal_mtp', 'availability_hours', 'video_url'] }) register_anonym([ (models.Consultant, ConsultantAnonym), (models.ContractingData, ContractingDataAnonym), (models.ConsultantExOProfile, ConsultantExOProfileAnonym), ])
from dj_anonymizer.register_models import register_skip, AnonymBase, register_anonym from dj_anonymizer import anonym_field from django.contrib.sites.models import Site from django.contrib.admin.models import LogEntry from django.contrib.auth.models import Permission, Group from django.contrib.sessions.models import Session from django.contrib.contenttypes.models import ContentType register_skip([Site, Permission, Group, Session, ContentType]) class LogEntryAnonym(AnonymBase): object_repr = anonym_field.string("Object Name") class Meta: exclude_fields = [ "action_flag", "object_id", "action_time", "change_message", ] register_anonym([(LogEntry, LogEntryAnonym)])
exclude_fields = ["created", "modified", "task", "date", "score"] class PictureAnonym(AnonymBase): image = anonym_field.function(fake.file_path) description = anonym_field.function(fake.sentence) class Meta: exclude_fields = ["created", "modified", "submission"] class GearArticleAnonym(AnonymBase): article = anonym_field.function(fake.paragraph) notes = anonym_field.function(fake.sentence) class Meta: exclude_fields = [ "created", "modified", "authors", "submission", "reviewed", ] register_anonym([ (Submission, SubmissionAnonym), (Picture, PictureAnonym), (GearArticle, GearArticleAnonym), ])
from __future__ import absolute_import import datetime from dj_anonymizer import fields from dj_anonymizer.register_models import (AnonymBase, register_anonym, register_skip) from polls.models import Choice, Question class QuestionAnonym(AnonymBase): question_text = fields.string("John Doe {seq}") pub_date = fields.function(datetime.datetime.now) register_anonym([ (Question, QuestionAnonym), ]) register_skip([Choice])
from dj_anonymizer.register_models import AnonymBase, register_anonym, register_skip from dj_anonymizer import anonym_field from faker import Factory from address.models import Locality, State, Country, Address fake = Factory.create() register_skip([Locality, State, Country]) class AddressAnonym(AnonymBase): street_number = anonym_field.function(fake.building_number) route = anonym_field.function(fake.street_name) raw = anonym_field.function(fake.address) formatted = anonym_field.function(fake.address) latitude = anonym_field.function(fake.latitude) longitude = anonym_field.function(fake.longitude) class Meta: pass register_anonym([ (Address, AddressAnonym), ])
from dj_anonymizer.register_models import AnonymBase, register_anonym from dj_anonymizer import anonym_field from django.db.models.fields import Field from exo_certification import models from utils.faker_factory import faker class CertificationRequestAnonym(AnonymBase): requester_email = anonym_field.function(faker.email) requester_name = anonym_field.function(faker.name) class Meta: exclude_fields = list( set(field.name for field in models.CertificationRequest._meta.get_fields() if isinstance(field, Field) and field.name not in ['requester_name', 'requester_email'])) register_anonym([ (models.CertificationRequest, CertificationRequestAnonym), ])
from dj_anonymizer.register_models import ( register_skip, AnonymBase, register_anonym, register_clean, ) from dj_anonymizer import anonym_field from faker import Factory from allauth.socialaccount.models import SocialToken, SocialAccount, SocialApp from allauth.account.models import EmailConfirmation, EmailAddress register_skip([EmailConfirmation, SocialToken, SocialApp]) register_clean([SocialAccount]) fake = Factory.create() class EmailAddressAnonym(AnonymBase): email = anonym_field.string("{seq}@thetatau.org") verified = anonym_field.function(lambda: True) class Meta: exclude_fields = ["primary"] register_anonym([ (EmailAddress, EmailAddressAnonym), ])
exclude_fields = [ 'user', 'opportunity', 'status', 'budget', 'created', 'modified', ] class AnswerAnonym(AnonymBase): class Meta: exclude_fields = [ 'applicant', 'question', 'response', 'created', 'modified', ] register_anonym([ (models.Opportunity, OpportunityAnonym), (models.Applicant, ApplicantAnonym), (models.Question, QuestionAnonym), (models.Answer, AnswerAnonym) ]) register_skip([models.OpportunityStatus])
from dj_anonymizer.register_models import ( AnonymBase, register_anonym, ) from dj_anonymizer import anonym_field from utils.faker_factory import faker from django.db.models.fields import Field from custom_auth import models class InternalOrganizationAnonym(AnonymBase): name = anonym_field.function(faker.name) class Meta: exclude_fields = list( set(field.name for field in models.InternalOrganization._meta.get_fields() if isinstance(field, Field) and field.name not in ['name'])) register_anonym([ (models.InternalOrganization, InternalOrganizationAnonym), ])
is_staff = fields.function(lambda: False) class Meta: exclude_fields = ['is_active', 'is_superuser', 'last_login', 'date_joined'] class GroupAnonym(AnonymBase): name = fields.string('group_{seq}') class Meta: pass register_anonym([ (User, UserAnonym), (Group, GroupAnonym), ]) register_clean([ (Session, AnonymBase), (LogEntry, AnonymBase(truncate=True)), ]) register_skip([ ContentType, Permission, Session, ])
profile_picture = anonym_field.function(faker.image_url) class Meta: exclude_fields = list( set(field.name for field in models.Customer._meta.get_fields() if isinstance(field, Field) and field.name not in [ 'name', 'created', 'modified', 'description', 'phone', 'website', 'address', 'postcode', 'contact_person', 'facebook', 'twitter', 'google', 'linkedin', 'blog', 'timezone', 'market_value', 'annual_revenue', 'profile_picture', ])) register_anonym([ (models.Customer, CustomerAnonym), ])