Example #1
0
    def get(self, request):
        if 'package' not in request.GET:
            raise Http404

        if not get_web_package(request.GET['package']):
            raise Http404

        return render(request, self.template_name, {
            'package': request.GET['package'],
            'emails': request.user.emails.all(),
        })
Example #2
0
    def get(self, request):
        if 'package_name' not in self.request.GET:
            raise Http404
        package_name = self.request.GET.get('package_name').lower()

        package = get_web_package(package_name)
        if package is not None:
            return redirect(package)
        else:
            return render(request, 'core/package_search.html', {
                'package_name': package_name
            })
Example #3
0
    def post(self, request):
        package = request.POST.get('package', None)
        emails = request.POST.getlist('email', None)

        if not package or not emails:
            raise Http404

        # Remember selected emails via session variable
        request.session['selected_emails'] = emails

        # Check whether the logged in user is associated with the given emails
        users_emails = [e.email for e in request.user.emails.all()]
        for email in emails:
            if email not in users_emails:
                return HttpResponseForbidden()

        _pkg = get_web_package(package)
        _err = None

        if _pkg:
            try:
                for email in emails:
                    Subscription.objects.create_for(
                        package_name=package,
                        email=email)
            except ValidationError as e:
                _err = e.message
        else:
            _err = format_html(
                "Package {pkg} does not exist.",
                pkg=package,
            )

        if request.is_ajax():
            json_result = {'status': 'ok'}
            if _err is not None:
                json_result = {
                    'status': 'failed',
                    'error': _err,
                }
            return render_to_json_response(json_result)
        else:
            if _err:
                return HttpResponseBadRequest(_err)
            _next = request.POST.get('next', None)
            return safe_redirect(
                _next,
                resolve_url('dtracker-package-page', package_name=package),
            )
Example #4
0
def package_page(request, package_name):
    """
    Renders the package page.
    """
    package = get_web_package(package_name)
    if not package:
        raise Http404
    if package.get_absolute_url() not in (urlquote(request.path), request.path):
        return redirect(package)

    is_subscribed = False
    if request.user.is_authenticated():
        # Check if the user is subscribed to the package
        is_subscribed = request.user.is_subscribed_to(package)

    return render(request, 'core/package.html', {
        'package': package,
        'panels': get_panels_for_package(package, request),
        'is_subscribed': is_subscribed,
    })
Example #5
0
    def get_object(self, request, package_name):
        package = get_web_package(package_name)
        if package is None:
            raise Http404

        return package