Beispiel #1
0
 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
Beispiel #2
0
 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
Beispiel #3
0
 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
Beispiel #4
0
 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)
Beispiel #5
0
 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
Beispiel #6
0
 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
Beispiel #7
0
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)
        }
    }
Beispiel #8
0
 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
Beispiel #9
0
 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')
     }
Beispiel #10
0
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
Beispiel #11
0
 def next_url(self):
     return absolute_url(self.context, self.request, 'admin')
Beispiel #12
0
 def view_url(self):
     """Get base target URL"""
     return "%s/%s" % (absolute_url(self.context,
                                    self.request), self.table.__name__)
Beispiel #13
0
 def back_url(self):
     """Form back URL getter"""
     return absolute_url(self.request.root, self.request, 'security-plugins.html')
Beispiel #14
0
 def get_href(self):
     """Link URL getter"""
     return absolute_url(self.context, self.request, self.href)
Beispiel #15
0
 def get_href(self):
     """Breadcrumb URL getter"""
     return absolute_url(self.context, self.request, self.view_name)
Beispiel #16
0
 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
Beispiel #17
0
 def back_url(self):
     """Form back URL getter"""
     return absolute_url(self.request.root, self.request,
                         'admin#utilities.html')  # pylint: disable=no-member
Beispiel #18
0
 def get_ajax_handler(self):
     """Get absolute URL of AJAX handler"""
     return absolute_url(self.context, self.request, self.ajax_form_handler)
Beispiel #19
0
 def back_url(self):
     """Form back URL getter"""
     container = get_utility(IDocumentContainer)
     return absolute_url(container, self.request, 'admin#search.html')
Beispiel #20
0
 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)
Beispiel #21
0
 def get_href(self):
     """Get absolute URL from internal attributes"""
     return absolute_url(self.context, self.request, self.href)