Skip to content

Commit

Permalink
fix: address import order issues.
Browse files Browse the repository at this point in the history
  • Loading branch information
mariamjamal94 committed Sep 18, 2019
1 parent b5d461b commit 5ef24de
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 55 deletions.
90 changes: 46 additions & 44 deletions optimizely/event/event_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,12 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from .user_event import ConversionEvent, ImpressionEvent
from .payload import Decision, EventBatch, Snapshot, SnapshotEvent, Visitor, VisitorAttribute
from .log_event import LogEvent
from optimizely.helpers import enums, event_tag_utils, validator
from optimizely.helpers import enums
from optimizely.helpers import event_tag_utils
from optimizely.helpers import validator
from . import user_event
from . import payload
from . import log_event

CUSTOM_ATTRIBUTE_FEATURE_TYPE = 'custom'

Expand Down Expand Up @@ -47,15 +49,15 @@ def create_log_event(cls, user_events, logger):

visitors = []

for user_event in user_events:
visitor = cls._create_visitor(user_event, logger)
for event in user_events:
visitor = cls._create_visitor(event, logger)

if visitor:
visitors.append(visitor)

user_context = user_event.event_context
user_context = event.event_context

event_batch = EventBatch(
event_batch = payload.EventBatch(
user_context.account_id,
user_context.project_id,
user_context.revision,
Expand All @@ -72,58 +74,58 @@ def create_log_event(cls, user_events, logger):

event_params = event_batch.get_event_params()

return LogEvent(cls.EVENT_ENDPOINT, event_params, cls.HTTP_VERB, cls.HTTP_HEADERS)
return log_event.LogEvent(cls.EVENT_ENDPOINT, event_params, cls.HTTP_VERB, cls.HTTP_HEADERS)

@classmethod
def _create_visitor(cls, user_event, logger):
def _create_visitor(cls, event, logger):
""" Helper method to create Visitor instance for event_batch.
Args:
user_event: Instance of UserEvent.
event: Instance of UserEvent.
logger: Provides a logger instance.
Returns:
Instance of Visitor. None if:
- user_event is invalid.
- event is invalid.
"""

if isinstance(user_event, ImpressionEvent):
decision = Decision(
user_event.experiment.layerId,
user_event.experiment.id,
user_event.variation.id,
if isinstance(event, user_event.ImpressionEvent):
decision = payload.Decision(
event.experiment.layerId,
event.experiment.id,
event.variation.id,
)

snapshot_event = SnapshotEvent(
user_event.experiment.layerId,
user_event.uuid,
snapshot_event = payload.SnapshotEvent(
event.experiment.layerId,
event.uuid,
cls.ACTIVATE_EVENT_KEY,
user_event.timestamp
event.timestamp
)

snapshot = Snapshot([snapshot_event], [decision])
snapshot = payload.Snapshot([snapshot_event], [decision])

visitor = Visitor([snapshot], user_event.visitor_attributes, user_event.user_id)
visitor = payload.Visitor([snapshot], event.visitor_attributes, event.user_id)

return visitor

elif isinstance(user_event, ConversionEvent):
revenue = event_tag_utils.get_revenue_value(user_event.event_tags)
value = event_tag_utils.get_numeric_value(user_event.event_tags, logger)
elif isinstance(event, user_event.ConversionEvent):
revenue = event_tag_utils.get_revenue_value(event.event_tags)
value = event_tag_utils.get_numeric_value(event.event_tags, logger)

snapshot_event = SnapshotEvent(
user_event.event.id,
user_event.uuid,
user_event.event.key,
user_event.timestamp,
snapshot_event = payload.SnapshotEvent(
event.event.id,
event.uuid,
event.event.key,
event.timestamp,
revenue,
value,
user_event.event_tags
event.event_tags
)

snapshot = Snapshot([snapshot_event])
snapshot = payload.Snapshot([snapshot_event])

visitor = Visitor([snapshot], user_event.visitor_attributes, user_event.user_id)
visitor = payload.Visitor([snapshot], event.visitor_attributes, event.user_id)

return visitor

Expand Down Expand Up @@ -156,22 +158,22 @@ def build_attribute_list(attributes, project_config):
attribute_id = project_config.get_attribute_id(attribute_key)
if attribute_id:
attributes_list.append(
VisitorAttribute(
attribute_id,
attribute_key,
CUSTOM_ATTRIBUTE_FEATURE_TYPE,
attribute_value)
payload.VisitorAttribute(
attribute_id,
attribute_key,
CUSTOM_ATTRIBUTE_FEATURE_TYPE,
attribute_value)
)

# Append Bot Filtering Attribute
bot_filtering_value = project_config.get_bot_filtering_value()
if isinstance(bot_filtering_value, bool):
attributes_list.append(
VisitorAttribute(
enums.ControlAttributes.BOT_FILTERING,
enums.ControlAttributes.BOT_FILTERING,
CUSTOM_ATTRIBUTE_FEATURE_TYPE,
bot_filtering_value)
payload.VisitorAttribute(
enums.ControlAttributes.BOT_FILTERING,
enums.ControlAttributes.BOT_FILTERING,
CUSTOM_ATTRIBUTE_FEATURE_TYPE,
bot_filtering_value)
)

return attributes_list
2 changes: 1 addition & 1 deletion optimizely/event/log_event.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,5 @@ class LogEvent(object):
def __init__(self, url, params, http_verb=None, headers=None):
self.url = url
self.params = params
self.http_verb = http_verb or 'GET'
self.http_verb = http_verb or 'POST'
self.headers = headers
16 changes: 8 additions & 8 deletions optimizely/event/user_event_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@
# See the License for the specific language governing permissions and
# limitations under the License.

from .user_event import EventContext, ConversionEvent, ImpressionEvent
from .event_factory import EventFactory
from . import event_factory
from . import user_event


class UserEventFactory(object):
Expand Down Expand Up @@ -40,18 +40,18 @@ def create_impression_event(cls, project_config, activated_experiment, variation
experiment_key = activated_experiment.key
variation = project_config.get_variation_from_id(experiment_key, variation_id)

event_context = EventContext(
event_context = user_event.EventContext(
project_config.account_id,
project_config.project_id,
project_config.revision,
project_config.anonymize_ip
)

return ImpressionEvent(
return user_event.ImpressionEvent(
event_context,
user_id,
activated_experiment,
EventFactory.build_attribute_list(user_attributes, project_config),
event_factory.EventFactory.build_attribute_list(user_attributes, project_config),
variation,
project_config.get_bot_filtering_value()
)
Expand All @@ -71,18 +71,18 @@ def create_conversion_event(cls, project_config, event_key, user_id, user_attrib
Event object encapsulating the conversion event.
"""

event_context = EventContext(
event_context = user_event.EventContext(
project_config.account_id,
project_config.project_id,
project_config.revision,
project_config.anonymize_ip
)

return ConversionEvent(
return user_event.ConversionEvent(
event_context,
project_config.get_event(event_key),
user_id,
EventFactory.build_attribute_list(user_attributes, project_config),
event_factory.EventFactory.build_attribute_list(user_attributes, project_config),
event_tags,
project_config.get_bot_filtering_value()
)
4 changes: 2 additions & 2 deletions tests/test_event_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,17 @@
# limitations under the License.

import mock
from operator import itemgetter
import time
import unittest
import uuid
from operator import itemgetter

from . import base
from optimizely import logger
from optimizely import version
from optimizely.event.event_factory import EventFactory
from optimizely.event.log_event import LogEvent
from optimizely.event.user_event_factory import UserEventFactory
from . import base


class LogEventTest(unittest.TestCase):
Expand Down

0 comments on commit 5ef24de

Please sign in to comment.