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),
        ])
示例#4
0
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),
])
示例#5
0

# 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),
])
示例#6
0
            '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),
])
示例#7
0
        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),
])
示例#8
0
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),
])
示例#9
0
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),
])
示例#10
0
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),
])
示例#11
0
    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),
])
示例#12
0
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,
])
示例#13
0
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),
])
示例#14
0
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),
])
示例#15
0
            '_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),
])
示例#16
0
    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),
])
示例#17
0
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)])
示例#18
0
        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),
])
示例#19
0
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])
示例#20
0
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),
])
示例#21
0
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),
])
示例#22
0
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),
])
示例#23
0
        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])
示例#24
0
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),
])
示例#25
0
    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,
])
示例#26
0
    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),
])