10 # FOR A PARTICULAR PURPOSE. |
10 # FOR A PARTICULAR PURPOSE. |
11 # |
11 # |
12 |
12 |
13 __docformat__ = 'restructuredtext' |
13 __docformat__ = 'restructuredtext' |
14 |
14 |
15 |
15 from pyams_content.shared.common import ISharedContent, IWfSharedContent |
16 # import standard library |
|
17 |
|
18 # import interfaces |
|
19 from pyams_content.shared.common import IWfSharedContent |
|
20 from pyams_sequence.interfaces import ISequentialIdInfo |
16 from pyams_sequence.interfaces import ISequentialIdInfo |
21 from pyams_skin.layer import IPyAMSUserLayer |
17 from pyams_skin.layer import IPyAMSUserLayer |
|
18 from pyams_utils.adapter import ContextRequestAdapter, adapter_config |
22 from pyams_utils.interfaces.url import IRelativeURL |
19 from pyams_utils.interfaces.url import IRelativeURL |
|
20 from pyams_utils.url import absolute_url, relative_url |
23 |
21 |
24 # import packages |
22 |
25 from pyams_utils.adapter import adapter_config, ContextRequestAdapter |
23 @adapter_config(context=(ISharedContent, IPyAMSUserLayer), provides=IRelativeURL) |
26 from pyams_utils.url import absolute_url |
24 class SharedContentRelativeURLAdapter(ContextRequestAdapter): |
|
25 """Shared content relative URL adapter""" |
|
26 |
|
27 def get_url(self, display_context=None, view_name=None, query=None): |
|
28 version = self.context.published_version |
|
29 if version is not None: |
|
30 return relative_url(version, self.request, display_context, view_name, query) |
27 |
31 |
28 |
32 |
29 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer), provides=IRelativeURL) |
33 @adapter_config(context=(IWfSharedContent, IPyAMSUserLayer), provides=IRelativeURL) |
30 class SharedContentRelativeUrlAdapter(ContextRequestAdapter): |
34 class WfSharedContentRelativeUrlAdapter(ContextRequestAdapter): |
31 """Shared content relative URL adapter""" |
35 """Workflow managed shared content relative URL adapter""" |
32 |
36 |
33 def get_url(self, display_context=None, view_name=None, query=None): |
37 def get_url(self, display_context=None, view_name=None, query=None): |
34 return absolute_url(display_context, self.request, |
38 return absolute_url(display_context, self.request, |
35 '++oid++{0}::{1}.html'.format( |
39 '++oid++{0}::{1}{2}{3}'.format( |
36 ISequentialIdInfo(self.context).get_base_oid().strip(), |
40 ISequentialIdInfo(self.context).get_base_oid().strip(), |
37 self.context.content_url)) |
41 self.context.content_url, |
|
42 '/{}'.format(view_name) if view_name else '.html', |
|
43 '?{}'.format(query) if query else '')) |