Пример #1
0
Файл: all.py Проект: mrc75/pyppi
def distro_serve(request, path, document_root=None, show_indexes=False):
    filename = os.path.basename(path)
    distro = Distribution.objects.get(content=path)
    if not request.user.is_authenticated():
        user = login_basic_auth(request)
        if user:
            login(request, user)

    logger.debug(
        "User `{0.user}` dowdloads distro `{1}` of package {2}".format(request, filename, distro.release.package))

    if user_can_download(request, distro):
        logger.debug("User `{0.user}` download distro `{1}` of package {2}".format(request, filename,
                                                                                   distro.release.package))
        return static.serve(request, path, document_root)

    logger.error("User `{0.user}` cannot access to distro `{1}` of package {2}".format(request, filename,
                                                                                       distro.release.package))
    return HttpResponseForbidden()
Пример #2
0
    def get(self, request, *args, **kwargs):
        path = self.kwargs['path']

        filename = os.path.basename(path)
        # filename = re.sub("(\.zip|\.tar\.gz|\.tar)$", "", filename)
        # parts = pkg_resources.parse_version(filename)
        distro = models.Distribution.objects.get(content=path)
        logger.debug(
            "User `{0.user}` dowdloads distro `{1}` of package {2}".format(request, filename, distro.release.package))

        if user_can_download(request.user, distro):
            logger.debug("User `{0.user}` download distro `{1}` of package {2}".format(request, filename,
                                                                                       distro.release.package))
            response = HttpResponse()
            response['X-Accel-Redirect'] = "/".join((self.redirect_to, path))
            response['Content-Type'] = ''
            return response
        else:
            logger.error("User `{0.user}` cannot access to distro `{1}` of package {2}".format(request, filename,
                                                                                               distro.release.package))
        return HttpResponseForbidden()
Пример #3
0
def can_download(context, distro):
    request = context['request']
    has_perm = user_can_download(request, distro)
    logger.debug('Check if {request.user} can download {distro.release.package}: {has_perm}'.format(**locals()))
    return has_perm