def resources(self): """Resources getter""" request = self.request configuration = IZMIConfiguration(request.root, None) if configuration is not None: # yield main bundle bundle, _label = MYAMS_BUNDLES.get(configuration.myams_bundle) yield bundle # yield stylesheet stylesheet = configuration.custom_stylesheet if stylesheet: modified = IZopeDublinCore(stylesheet).modified stylesheet_url = absolute_url(stylesheet, request, query={'_': modified.timestamp()}) # pylint: disable=no-member resource = bundle.library.known_resources.get(stylesheet_url) if resource is None: resource = ExternalResource(bundle.library, stylesheet_url, resource_type='css', depends=(bundle,)) yield resource # yield script script = configuration.custom_script if script: modified = IZopeDublinCore(script).modified script_url = absolute_url(script, request, query={'_': modified.timestamp()}) # pylint: disable=no-member resource = bundle.library.known_resources.get(script_url) if resource is None: resource = ExternalResource(bundle.library, script_url, resource_type='js', depends=(bundle,)) yield resource
def get_metas(self): """Metas getter""" config = IZMIConfiguration(self.request.root, None) if (config is not None) and (config.favicon is not None): icon = config.favicon icon_url = absolute_url(icon, self.request) icon_size = icon.get_image_size()[0] # pylint: disable=no-member dc = IZopeDublinCore(icon) # pylint: disable=invalid-name timestamp = datetime.timestamp(tztime(dc.modified)) for size in (180, 144, 114, 72, 32, 16): if icon_size >= size: yield LinkMeta( 'apple-touch-icon', type=icon.content_type, # pylint: disable=no-member href=THUMB_HREF_STR.format(icon_url, size, size, timestamp), sizes='{0}x{0}'.format(size)) for size in (128, 124, 32): if icon_size >= size: yield LinkMeta( 'icon', type=icon.content_type, # pylint: disable=no-member href=THUMB_HREF_STR.format(icon_url, size, size, timestamp), sizes='{0}x{0}'.format(size)) yield LinkMeta('shortcut-icon', type=icon.content_type, href=icon_url) # pylint: disable=no-member
def data_attributes(self): attributes = super().data_attributes container = ITaskNotificationContainer(self.context) attributes['table'].update({ 'data-ams-location': absolute_url(container, self.request), 'data-ams-order': '1,asc' }) return attributes
def render_batch_link(self, batch, css_class=None): """Render batch link""" args = self.get_query_string_args() args[self.table.prefix + "-batch-start"] = batch.start args[self.table.prefix + "-batch-size"] = batch.size query = urlencode(sorted(args.items())) table_url = absolute_url(self.table, self.request) idx = batch.index + 1 css = ' class="%s"' % css_class css_class = css if css_class else '' return '<a href="%s?%s"%s>%s</a>' % (table_url, query, css_class, idx)
def __init__(self, context, request, view, manager, transition): # pylint: disable=too-many-arguments super().__init__(context, request, view, manager) self.label = transition.title self.icon_class = transition.user_data.get('menu_icon_class') or 'fa' self.href = '{url}?workflow.widgets.transition_id={transition}'.format( url=absolute_url( context, request, transition.user_data.get('view_name', 'wf-transition.html')), transition=transition.transition_id) self.modal_target = True self.weight = transition.order
def _get_viewlets(self): translate = self.request.localizer.translate for version in IWorkflowVersions( self.context).get_last_versions(count=0): state = IWorkflowState(version) item = MenuItem(version, self.request, self.view, self) item.label = translate(_("Version {id} - {state}")).format( id=state.version_id, state=translate(self.workflow.get_state_label(state.state))) item.icon_class = 'fas fa-arrow-right' if version is self.context: item.css_class = 'bg-primary text-white' item.href = absolute_url(version, self.request, 'admin#{}'.format(self.request.view_name)) yield 'version_{}'.format(state.version_id), item
def get_json_image_refresh_callback(image, image_id, request): """Get image refresh callback settings""" dc = IZopeDublinCore(image, None) # pylint: disable=invalid-name if dc is None: timestamp = datetime.utcnow().timestamp() else: timestamp = dc.modified.timestamp() # pylint: disable=no-member return { 'module': 'helpers', 'callback': 'MyAMS.helpers.refreshImage', 'options': { 'image_id': image_id, 'src': '{}?_={}'.format(absolute_url(image, request), timestamp) } }
def resources(self): """Get custom skin resources""" request = self.request main_resources = request.registry.queryMultiAdapter( (self.context, request, self.view), IResources) if main_resources is not None: main_resource = main_resources.resources[-1] library = main_resource.library parent_resources = (main_resource,) skin_parent = get_parent(request.context, ISkinnable).skin_parent # include custom CSS files custom_css = skin_parent.custom_stylesheet # pylint: disable=no-member if custom_css: dc = IZopeDublinCore(custom_css, None) # pylint: disable=invalid-name modified = dc.modified if dc is not None else datetime.utcnow() # pylint: disable=no-member custom_css_url = absolute_url(custom_css, request, query={'_': modified.timestamp()}) resource = library.known_resources.get(custom_css_url) if resource is None: resource = ExternalResource(library, custom_css_url, resource_type='css', depends=parent_resources) yield resource # include custom JS files custom_js = skin_parent.custom_script # pylint: disable=no-member if custom_js: dc = IZopeDublinCore(custom_js, None) # pylint: disable=invalid-name modified = dc.modified if dc is not None else datetime.utcnow() # pylint: disable=no-member custom_js_url = absolute_url(custom_js, request, query={'_': modified.timestamp()}) resource = library.known_resources.get(custom_js_url) if resource is None: resource = ExternalResource(library, custom_js_url, resource_type='js', depends=parent_resources, bottom=True) yield resource
def render(self, changes): # pylint: disable=no-self-use """Form changes renderer""" if not changes: return None if IWorkflowVersion.providedBy(changes): # new version target = changes else: if changes.parent is None: # deleted version versions = self.view.versions last_version = versions.get_last_versions() if last_version: # other versions target = last_version[0] else: target = self.view.deleted_target else: target = changes.context return { 'status': 'redirect', 'location': absolute_url(target, self.request, 'admin') }
def render_img(image, width=None, height=None, request=None, css_class='', img_class='', timestamp=False, alt=''): # pylint: disable=too-many-arguments,assignment-from-no-return """Render image thumbnail""" thumbnail = None thumbnails = IThumbnails(image, None) if thumbnails is not None: if width and height: thumbnail = thumbnails.get_thumbnail('{0}x{1}'.format( width, height)) elif width and (width != 'auto'): thumbnail = thumbnails.get_thumbnail('w{0}'.format(width)) elif height and (height != 'auto'): thumbnail = thumbnails.get_thumbnail('h{0}'.format(height)) if thumbnail is None: thumbnail = image if request is None: request = check_request() url = absolute_url(thumbnail, request) if timestamp: zdc = IZopeDublinCore(thumbnail, None) if zdc is None: timestamp = datetime.utcnow().timestamp() else: timestamp = zdc.modified.timestamp() # pylint: disable=no-member url += '?_={0}'.format(timestamp) result = '<img src="{0}" class="{1}" alt="{2}" />'.format( url, img_class, alt) if css_class: result = '<div class="{0}">{1}</div>'.format(css_class, result) return result
def next_url(self): return absolute_url(self.context, self.request, 'admin')
def view_url(self): """Get base target URL""" return "%s/%s" % (absolute_url(self.context, self.request), self.table.__name__)
def back_url(self): """Form back URL getter""" return absolute_url(self.request.root, self.request, 'security-plugins.html')
def get_href(self): """Link URL getter""" return absolute_url(self.context, self.request, self.href)
def get_href(self): """Breadcrumb URL getter""" return absolute_url(self.context, self.request, self.view_name)
def to_json(self, fields=None, request=None): """Get document properties in JSON format""" if request is None: request = check_request() dc = IZopeDublinCore(self) # pylint: disable=invalid-name state = IWorkflowState(self) roles = IDocumentRoles(self) result = { 'api': absolute_url(request.root, request, 'api/zfiles/rest/{}'.format(self.oid)), 'oid': self.oid, 'title': self.title, 'application_name': self.application_name, 'filename': self.data.filename, 'filesize': self.data.get_size(), 'content_type': self.data.content_type, 'href': absolute_url(self.data, request), 'hash': self.hash, 'properties': self.properties, 'tags': list(self.tags or ()), 'version': state.version_id, 'status': state.state, 'creator': list(roles.creator)[0], 'created_time': dc.created.isoformat() if dc.created else None, # pylint: disable=no-member 'owner': list(roles.owner)[0], 'updater': self.updater, 'updated_time': dc.modified.isoformat() if dc.modified else None, # pylint: disable=no-member 'status_updater': state.state_principal, 'status_update_time': state.state_date.isoformat(), # pylint: disable=no-member 'access_mode': ACCESS_MODE_IDS[self.access_mode], 'readers': list(roles.readers or ()), 'update_mode': ACCESS_MODE_IDS[self.update_mode], 'managers': list(roles.managers or ()) } if fields: for key in tuple(result.keys()): if key not in fields: del result[key] return result
def back_url(self): """Form back URL getter""" return absolute_url(self.request.root, self.request, 'admin#utilities.html') # pylint: disable=no-member
def get_ajax_handler(self): """Get absolute URL of AJAX handler""" return absolute_url(self.context, self.request, self.ajax_form_handler)
def back_url(self): """Form back URL getter""" container = get_utility(IDocumentContainer) return absolute_url(container, self.request, 'admin#search.html')
def get_link_url(self, item): """Get link URL""" if self.link_name is not None: return "%s/%s" % (absolute_url(item, self.request), self.link_name) return absolute_url(item, self.request)
def get_href(self): """Get absolute URL from internal attributes""" return absolute_url(self.context, self.request, self.href)