def create_update_passive_event_report(sender, instance, created, **kwargs): """Automatically create/update a passive report on event creation.""" from remo.events.templatetags.helpers import get_event_link attrs = { 'report_date': instance.start.date(), 'longitude': instance.lon, 'latitude': instance.lat, 'location': "%s, %s, %s" % (instance.city, instance.region, instance.country), 'link': get_event_link(instance), 'activity_description': instance.description, 'is_passive': True, 'event': instance, 'campaign': instance.campaign, 'country': instance.country } if created: activity = Activity.objects.get(name=ACTIVITY_EVENT_CREATE) attrs.update({'user': instance.owner, 'activity': activity}) NGReport.objects.create(**attrs) statsd.incr('reports.create_passive_event') else: reports = (NGReport.objects.filter(event=instance) .exclude(activity__name=ACTIVITY_POST_EVENT_METRICS)) reports.update(**attrs) # Change user and mentor to the appropriate reports attrs.update({'user': instance.owner, 'mentor': instance.owner.userprofile.mentor}) reports.exclude(activity__name=ACTIVITY_EVENT_ATTEND).update(**attrs) statsd.incr('reports.update_passive_event')
def save(self, *args, **kwargs): """Create post event data report.""" event = super(PostEventForm, self).save() activity = Activity.objects.get(name=ACTIVITY_POST_EVENT_METRICS) reports = NGReport.objects.filter(event=event, activity=activity) if not reports: up = event.owner.userprofile attrs = { 'activity': activity, 'report_date': get_date(), 'longitude': up.lon, 'latitude': up.lat, 'location': '%s, %s, %s' % (up.city, up.region, up.country), 'link': get_event_link(event), 'is_passive': True, 'event': event, 'user': event.owner } report = NGReport.objects.create(**attrs) report.functional_areas.add(*event.categories.all()) statsd.incr('reports.create_passive_post_event_metrics') return event
def create_passive_attendance_report(sender, instance, **kwargs): """Automatically create a passive report after event attendance save.""" from remo.events.templatetags.helpers import get_event_link if instance.user.groups.filter(name='Rep').exists(): activity = Activity.objects.get(name=ACTIVITY_EVENT_ATTEND) attrs = { 'user': instance.user, 'event': instance.event, 'activity': activity, 'report_date': instance.event.start.date(), 'longitude': instance.event.lon, 'latitude': instance.event.lat, 'location': "%s, %s, %s" % (instance.event.city, instance.event.region, instance.event.country), 'is_passive': True, 'country': instance.event.country, 'link': get_event_link(instance.event), 'activity_description': instance.event.description } report = NGReport.objects.create(**attrs) report.functional_areas.add(*instance.event.categories.all()) statsd.incr('reports.create_passive_attendance')
def save(self, *args, **kwargs): """Create post event data report.""" event = super(PostEventForm, self).save() activity = Activity.objects.get(name=ACTIVITY_POST_EVENT_METRICS) reports = NGReport.objects.filter(event=event, activity=activity) if not reports: up = event.owner.userprofile attrs = { "activity": activity, "report_date": get_date(), "longitude": up.lon, "latitude": up.lat, "location": "%s, %s, %s" % (up.city, up.region, up.country), "link": get_event_link(event), "is_passive": True, "event": event, "user": event.owner, } report = NGReport.objects.create(**attrs) report.functional_areas.add(*event.categories.all()) statsd.incr("reports.create_passive_post_event_metrics") return event
def create_update_passive_event_report(sender, instance, created, **kwargs): """Automatically create/update a passive report on event creation.""" from remo.events.templatetags.helpers import get_event_link attrs = { 'report_date': instance.start.date(), 'longitude': instance.lon, 'latitude': instance.lat, 'location': "%s, %s, %s" % (instance.city, instance.region, instance.country), 'link': get_event_link(instance), 'activity_description': instance.description, 'is_passive': True, 'event': instance, 'campaign': instance.campaign, 'country': instance.country } if created: activity = Activity.objects.get(name=ACTIVITY_EVENT_CREATE) attrs.update({'user': instance.owner, 'activity': activity}) NGReport.objects.create(**attrs) statsd.incr('reports.create_passive_event') else: reports = (NGReport.objects.filter(event=instance).exclude( activity__name=ACTIVITY_POST_EVENT_METRICS)) reports.update(**attrs) # Change user and mentor to the appropriate reports attrs.update({ 'user': instance.owner, 'mentor': instance.owner.userprofile.mentor }) reports.exclude(activity__name=ACTIVITY_EVENT_ATTEND).update(**attrs) statsd.incr('reports.update_passive_event')
def test_create(self): """Test creating a passive report after creating an event.""" activity = Activity.objects.get(name=ACTIVITY_EVENT_CREATE) owner = UserFactory.create() event = EventFactory.create(owner=owner) report = NGReport.objects.get(event=event, user=event.owner, activity=activity) location = '%s, %s, %s' % (event.city, event.region, event.country) eq_(report.mentor, event.owner.userprofile.mentor) eq_(report.activity.name, ACTIVITY_EVENT_CREATE) eq_(report.latitude, event.lat) eq_(report.longitude, event.lon) eq_(report.location, location) eq_(report.is_passive, True) eq_(report.link, get_event_link(event)) eq_(report.activity_description, event.description) self.assertQuerysetEqual(report.functional_areas.all(), [e.name for e in event.categories.all()], lambda x: x.name)
def test_owner(self): """Test creating a passive attendance report for event owner.""" activity = Activity.objects.get(name=ACTIVITY_EVENT_ATTEND) user = UserFactory.create(groups=['Rep', 'Mentor'], userprofile__initial_council=True) event = EventFactory.create(owner=user) report = NGReport.objects.get(event=event, user=user, activity=activity) location = '%s, %s, %s' % (event.city, event.region, event.country) eq_(report.mentor, user.userprofile.mentor) eq_(report.activity.name, ACTIVITY_EVENT_ATTEND) eq_(report.latitude, event.lat) eq_(report.longitude, event.lon) eq_(report.location, location) eq_(report.is_passive, True) eq_(report.link, get_event_link(event)) eq_(report.activity_description, event.description) self.assertQuerysetEqual(report.functional_areas.all(), [e.name for e in event.categories.all()], lambda x: x.name)
def create_passive_attendance_report(sender, instance, **kwargs): """Automatically create a passive report after event attendance save.""" from remo.events.templatetags.helpers import get_event_link if instance.user.groups.filter(name='Rep').exists(): activity = Activity.objects.get(name=ACTIVITY_EVENT_ATTEND) attrs = { 'user': instance.user, 'event': instance.event, 'activity': activity, 'report_date': instance.event.start.date(), 'longitude': instance.event.lon, 'latitude': instance.event.lat, 'location': "%s, %s, %s" % (instance.event.city, instance.event.region, instance.event.country), 'is_passive': True, 'country': instance.event.country, 'link': get_event_link(instance.event), 'activity_description': instance.event.description} report = NGReport.objects.create(**attrs) report.functional_areas.add(*instance.event.categories.all()) statsd.incr('reports.create_passive_attendance')