This commit fixes the reordering of slides on upload or drag and drop
in frontend. This issue was due to the fact that in a previous commit
(c4eba6f) uncategorized slides were moved to the bottom of the list,
which broke the reordering after drag and drop.
Indeed we use the dom order itself to reorder the slides with a simple rpc
call to dataset/resequence. Instead we revert part of the previous fix
to display uncategorized slides at the top. It allows to be coherent with
resequence and with backend behavior that displays uncategorized at the
top of the list.
Another issue was that, on slide upload, in the controller, we used
the category_id on the slide (which seems to not always be correct at
this stage) instead of the one given by the javascript. This caused the slide
to not be uploaded in the right section.
This commit also adds some margin to the categories in frontend for training
courses. Otherwise uncategorized slides are too close to the first category.
Task ID 2090927
X-original-commit: 7bd042d6e20c44558b90641409a6e3f8fa8000ed
131 lines
5.8 KiB
Python
131 lines
5.8 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo.addons.website_slides.tests import common as slides_common
|
|
from odoo.tests.common import users
|
|
|
|
|
|
class TestSlidesManagement(slides_common.SlidesCase):
|
|
|
|
@users('user_officer')
|
|
def test_get_categorized_slides(self):
|
|
new_category = self.env['slide.slide'].create({
|
|
'name': 'Cooking Tips for Cooking Humans',
|
|
'channel_id': self.channel.id,
|
|
'is_category': True,
|
|
'sequence': 5,
|
|
})
|
|
order = self.env['slide.slide']._order_by_strategy['sequence']
|
|
categorized_slides = self.channel._get_categorized_slides([], order)
|
|
self.assertEqual(categorized_slides[0]['category'], False)
|
|
self.assertEqual(categorized_slides[1]['category'], self.category)
|
|
self.assertEqual(categorized_slides[1]['total_slides'], 2)
|
|
self.assertEqual(categorized_slides[2]['total_slides'], 0)
|
|
self.assertEqual(categorized_slides[2]['category'], new_category)
|
|
|
|
|
|
class TestSequencing(slides_common.SlidesCase):
|
|
|
|
@users('user_officer')
|
|
def test_category_update(self):
|
|
self.assertEqual(self.channel.slide_category_ids, self.category)
|
|
self.assertEqual(self.channel.slide_content_ids, self.slide | self.slide_2 | self.slide_3)
|
|
self.assertEqual(self.slide.category_id, self.env['slide.slide'])
|
|
self.assertEqual(self.slide_2.category_id, self.category)
|
|
self.assertEqual(self.slide_3.category_id, self.category)
|
|
self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.category.id, self.slide_2.id, self.slide_3.id])
|
|
|
|
self.slide.write({'sequence': 0})
|
|
self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.category.id, self.slide_2.id, self.slide_3.id])
|
|
self.assertEqual(self.slide_2.category_id, self.category)
|
|
self.slide_2.write({'sequence': 1})
|
|
self.channel.invalidate_cache()
|
|
self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.slide_2.id, self.category.id, self.slide_3.id])
|
|
self.assertEqual(self.slide_2.category_id, self.env['slide.slide'])
|
|
|
|
channel_2 = self.env['slide.channel'].create({
|
|
'name': 'Test2'
|
|
})
|
|
new_category = self.env['slide.slide'].create({
|
|
'name': 'NewCategorySlide',
|
|
'channel_id': channel_2.id,
|
|
'is_category': True,
|
|
'sequence': 1,
|
|
})
|
|
new_category_2 = self.env['slide.slide'].create({
|
|
'name': 'NewCategorySlide2',
|
|
'channel_id': channel_2.id,
|
|
'is_category': True,
|
|
'sequence': 2,
|
|
})
|
|
new_slide = self.env['slide.slide'].create({
|
|
'name': 'NewTestSlide',
|
|
'channel_id': channel_2.id,
|
|
'sequence': 2,
|
|
})
|
|
self.assertEqual(new_slide.category_id, new_category_2)
|
|
(new_slide | self.slide_3).write({'sequence': 1})
|
|
self.assertEqual(new_slide.category_id, new_category)
|
|
self.assertEqual(self.slide_3.category_id, self.env['slide.slide'])
|
|
|
|
(new_slide | self.slide_3).write({'sequence': 0})
|
|
self.assertEqual(new_slide.category_id, self.env['slide.slide'])
|
|
self.assertEqual(self.slide_3.category_id, self.env['slide.slide'])
|
|
|
|
@users('user_officer')
|
|
def test_resequence(self):
|
|
self.assertEqual(self.slide.sequence, 1)
|
|
self.category.write({'sequence': 4})
|
|
self.slide_2.write({'sequence': 8})
|
|
self.slide_3.write({'sequence': 3})
|
|
|
|
self.channel.invalidate_cache()
|
|
self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, self.slide_3.id, self.category.id, self.slide_2.id])
|
|
self.assertEqual(self.slide.sequence, 1)
|
|
|
|
# insert a new category and check resequence_slides does as expected
|
|
new_category = self.env['slide.slide'].create({
|
|
'name': 'Sub-cooking Tips Category',
|
|
'channel_id': self.channel.id,
|
|
'is_category': True,
|
|
'is_published': True,
|
|
'sequence': 2,
|
|
})
|
|
new_category.flush()
|
|
self.channel.invalidate_cache()
|
|
self.channel._resequence_slides(self.slide_3, force_category=new_category)
|
|
self.assertEqual(self.slide.sequence, 1)
|
|
self.assertEqual(new_category.sequence, 2)
|
|
self.assertEqual(self.slide_3.sequence, 3)
|
|
self.assertEqual(self.category.sequence, 4)
|
|
self.assertEqual(self.slide_2.sequence, 5)
|
|
self.assertEqual([s.id for s in self.channel.slide_ids], [self.slide.id, new_category.id, self.slide_3.id, self.category.id, self.slide_2.id])
|
|
|
|
|
|
class TestFromURL(slides_common.SlidesCase):
|
|
def test_youtube_urls(self):
|
|
urls = {
|
|
'W0JQcpGLSFw': [
|
|
'https://youtu.be/W0JQcpGLSFw',
|
|
'https://www.youtube.com/watch?v=W0JQcpGLSFw',
|
|
'https://www.youtube.com/watch?v=W0JQcpGLSFw&list=PL1-aSABtP6ACZuppkBqXFgzpNb2nVctZx',
|
|
],
|
|
'vmhB-pt7EfA': [ # id starts with v, it is important
|
|
'https://youtu.be/vmhB-pt7EfA',
|
|
'https://www.youtube.com/watch?feature=youtu.be&v=vmhB-pt7EfA',
|
|
'https://www.youtube.com/watch?v=vmhB-pt7EfA&list=PL1-aSABtP6ACZuppkBqXFgzpNb2nVctZx&index=7',
|
|
],
|
|
'hlhLv0GN1hA': [
|
|
'https://www.youtube.com/v/hlhLv0GN1hA',
|
|
'https://www.youtube.com/embed/hlhLv0GN1hA',
|
|
'https://m.youtube.com/watch?v=hlhLv0GN1hA'
|
|
],
|
|
}
|
|
|
|
for id, urls in urls.items():
|
|
for url in urls:
|
|
with self.subTest(url=url, id=id):
|
|
document = self.env['slide.slide']._find_document_data_from_url(url)
|
|
self.assertEqual(document[0], 'youtube')
|
|
self.assertEqual(document[1], id)
|