def test_register_skip(mocker): skip_mock = mock.MagicMock() mocker.patch('dj_anonymizer.anonymizer.Anonymizer.skip_models', skip_mock) register_models.register_skip([User, Permission, Group]) skip_mock.method_calls[0][1] == 'django.contrib.auth.models.User' skip_mock.method_calls[1][1] == 'django.contrib.auth.models.Permission' skip_mock.method_calls[2][1] == 'django.contrib.auth.models.Group'
def test_register_skip_only(): register_models.register_skip([User, Permission, Group]) Anonymizer(only='django.contrib.auth.models.Group') with pytest.raises(LookupError): Anonymizer(only='django.contrib.auth.models.WrongGroup')
def test_register_skip(): register_models.register_skip([User, Permission, Group]) assert len(Anonymizer.clean_models) == 0 assert len(Anonymizer.skip_models) == 3 assert len(Anonymizer.anonym_models) == 0 assert 'django.contrib.auth.models.User' in Anonymizer.skip_models assert 'django.contrib.auth.models.Permission' in Anonymizer.skip_models assert 'django.contrib.auth.models.Group' in Anonymizer.skip_models
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)])
from __future__ import absolute_import from django.contrib.admin.models import LogEntry from django.contrib.auth.models import Group, Permission from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType from django.contrib.sessions.models import Session from dj_anonymizer.register_models import (register_skip) from exo_auth import models User = get_user_model() register_skip([ User, ContentType, Group, Permission, LogEntry, Session, models.UserSubscription, models.EmailAddress, ])
from __future__ import absolute_import from django.contrib.admin.models import LogEntry from django.contrib.auth.models import Group, Permission from django.contrib.auth import get_user_model from django.contrib.contenttypes.models import ContentType from django.contrib.sessions.models import Session from dj_anonymizer.register_models import (register_skip) User = get_user_model() register_skip([ User, ContentType, Group, Permission, LogEntry, Session, ])
from dj_anonymizer.register_models import register_skip from tasks.models import Task, TaskDate, TaskChapter register_skip([Task, TaskDate, TaskChapter])
from dj_anonymizer.register_models import register_skip from events.models import Event, Picture register_skip([Event, Picture])
from dj_anonymizer.register_models import register_skip from material.frontend.models import Module register_skip([Module])
from dj_anonymizer.register_models import register_skip from django_plotly_dash.models import DashApp, StatelessApp register_skip([DashApp, StatelessApp])
from dj_anonymizer.register_models import register_skip from announcements.models import Announcement register_skip([Announcement])
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 register_skip from report_builder.models import DisplayField, FilterField, Format, Report register_skip([DisplayField, FilterField, Format, Report])
from dj_anonymizer.register_models import register_skip from django_otp.plugins.otp_static.models import StaticToken, StaticDevice from django_otp.plugins.otp_totp.models import TOTPDevice register_skip([StaticToken, StaticDevice, TOTPDevice])
from dj_anonymizer.register_models import register_skip from chapters.models import Chapter, ChapterCurricula register_skip([Chapter, ChapterCurricula])
UserDemographic, UserAlter, UserStatusChange, UserRoleChange, UserSemesterServiceHours, UserOrgParticipate, UserSemesterGPA, ) fake = Factory.create() register_skip( [ UserAlter, UserStatusChange, UserSemesterServiceHours, UserDemographic, UserSemesterGPA, ] ) register_clean([UserRoleChange, UserOrgParticipate]) class UserAnonym(AnonymBase): password = anonym_field.password("test") user_id = anonym_field.string("FAKE{seq}") email_school = anonym_field.string("{seq}[email protected]") email = anonym_field.string("{seq}@thetatau.org") username = anonym_field.string("{seq}@thetatau.org") middle_name = anonym_field.function(fake.first_name)
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 __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 register_skip from scores.models import ScoreType, ScoreChapter register_skip([ScoreType, ScoreChapter])
RiskManagement, StatusChange, PledgeProgramProcess, ) fake = Factory.create() register_clean([DisciplinaryAttachment]) register_skip([ Audit, Badge, ChapterReport, Depledge, Guard, InitiationProcess, OSM, PledgeProcess, PledgeProgram, ReturnStudent, PledgeProgramProcess, ]) class StatusChangeAnonym(AnonymBase): email_work = anonym_field.string("{seq}@work.com") employer = anonym_field.function(fake.company) class Meta: exclude_fields = [ "date_end",
from dj_anonymizer.register_models import ( register_skip, ) from resource import models register_skip([ models.Category, models.Resource, models.Tag, ])
from dj_anonymizer.register_models import register_skip from regions.models import Region register_skip([Region])
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), ])
from dj_anonymizer.register_models import register_skip, register_clean from herald.models import SentNotification, UserNotification, Notification register_skip([UserNotification, Notification]) # This stores a complete message sent to users register_clean([SentNotification])
def test_register_skip_duplicate(): with pytest.raises(ValueError): register_models.register_skip([User, Permission, Group, Group])
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 register_skip from viewflow.models import Process, Task register_skip([Process, Task])
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, ])
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), ])