def download_url(self):
     url = self.url
     if self.confidentiality == 'buyerOnly':
         return self.url
     if not url or '?download=' not in url:
         return url
     doc_id = parse_qs(urlparse(url).query)['download'][-1]
     root = self.__parent__
     parents = []
     while root.__parent__ is not None:
         parents[0:0] = [root]
         root = root.__parent__
     request = root.request
     if not request.registry.docservice_url:
         return url
     if 'status' in parents[0] and parents[0].status in type(parents[0])._options.roles:
         role = parents[0].status
         for index, obj in enumerate(parents):
             if obj.id != url.split('/')[(index - len(parents)) * 2 - 1]:
                 break
             field = url.split('/')[(index - len(parents)) * 2]
             if "_" in field:
                 field = field[0] + field.title().replace("_", "")[1:]
             roles = type(obj)._options.roles
             if roles[role if role in roles else 'default'](field, []):
                 return url
     from openprocurement.api.utils import generate_docservice_url
     if not self.hash:
         path = [i for i in urlparse(url).path.split('/') if len(i) == 32 and not set(i).difference(hexdigits)]
         return generate_docservice_url(request, doc_id, False, '{}/{}'.format(path[0], path[-1]))
     return generate_docservice_url(request, doc_id, False)
示例#2
0
 def download_url(self):
     url = self.url
     if not url or '?download=' not in url:
         return url
     doc_id = parse_qs(urlparse(url).query)['download'][-1]
     root = self.__parent__
     parents = []
     while root.__parent__ is not None:
         parents[0:0] = [root]
         root = root.__parent__
     request = root.request
     if not request.registry.docservice_url:
         return url
     if 'status' in parents[0] and parents[0].status in type(parents[0])._options.roles:
         role = parents[0].status
         for index, obj in enumerate(parents):
             if obj.id != url.split('/')[(index - len(parents)) * 2 - 1]:
                 break
             field = url.split('/')[(index - len(parents)) * 2]
             if "_" in field:
                 field = field[0] + field.title().replace("_", "")[1:]
             roles = type(obj)._options.roles
             if roles[role if role in roles else 'default'](field, []):
                 return url
     from openprocurement.api.utils import generate_docservice_url
     if not self.hash:
         path = [i for i in urlparse(url).path.split('/') if len(i) == 32 and not set(i).difference(hexdigits)]
         return generate_docservice_url(request, doc_id, False, '{}/{}'.format(path[0], path[-1]))
     return generate_docservice_url(request, doc_id, False)