Files
odoo_source/addons/website_slides/tests/common.py
T
Thibault Delavallée 7ee22f1219 [IMP] website_slides: improve and add statistics computation
Purpose of this commit is to add some statistics computation on slide.channel
model. We want notably to have a count of views and votes (likes and dislikes)
on channels. Completion is also computed.

Purpose is to be able to search and order channels based on those statistics.
Having stored computed fields for some statistics help achieving that purpose.

Tests are added.

This commit is linked to task ID 1936153 and PR #30985.
2019-02-11 09:55:12 +00:00

69 lines
2.3 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from contextlib import contextmanager
from functools import partial
from odoo.tests import common, new_test_user
slides_new_test_user = partial(new_test_user, context={'mail_create_nolog': True, 'mail_create_nosubscribe': True, 'mail_notrack': True, 'no_reset_password': True})
class SlidesCase(common.SavepointCase):
def setUp(self):
super(SlidesCase, self).setUp()
self.user_publisher = slides_new_test_user(
self.env, name='Paul Publisher', login='user_publisher', email='publisher@example.com',
groups='base.group_user,website.group_website_publisher'
)
self.user_emp = slides_new_test_user(
self.env, name='Eglantine Employee', login='user_emp', email='employee@example.com',
groups='base.group_user'
)
self.user_portal = slides_new_test_user(
self.env, name='Patrick Portal', login='user_portal', email='portal@example.com',
groups='base.group_portal'
)
self.user_public = slides_new_test_user(
self.env, name='Pauline Public', login='user_public', email='public@example.com',
groups='base.group_public'
)
self.customer = self.env['res.partner'].create({
'name': 'Caroline Customer',
'email': 'customer@example.com',
'customer': True,
})
self.channel = self.env['slide.channel'].sudo(self.user_publisher).create({
'name': 'Test Channel',
'promote_strategy': 'most_voted',
'visibility': 'public',
'website_published': True,
})
self.slide = self.env['slide.slide'].sudo(self.user_publisher).create({
'name': 'How To Cook Humans',
'channel_id': self.channel.id,
'slide_type': 'presentation',
'website_published': True,
'completion_time': 2.0,
})
@contextmanager
def sudo(self, user):
""" Quick sudo environment """
old_uid = self.uid
try:
self.uid = user.id
self.env = self.env(user=self.uid)
yield
finally:
# back
self.uid = old_uid
self.env = self.env(user=self.uid)