Example #1
0
def generate_xpi(request, slug):
    if not hasattr(settings,
                   "MAX_USERS") or User.objects.count() < settings.MAX_USERS:
        recipient = slug != '__none__' and Recipient.get_or_none(
            slug=slug) or None
        xpi_builder = XpiBuilder(
            pathify([PROJECT_PATH, 'procrasdonate', 'ProcrasDonateFFExtn'],
                    file_extension=True), "%s%s" % (MEDIA_ROOT, 'xpi'),
            "%s%s" % (MEDIA_ROOT, 'rdf'), recipient)

        private_key = xpi_builder.write_input_json(is_update=False)
        user = User.add(private_key)
        Log.Log("Built XPI for download", detail="usage", user=user)

        (xpi_url, xpi_hash) = xpi_builder.build_xpi(is_update=False)
        return json_success({
            'xpi_url': xpi_url,
            'xpi_hash': xpi_hash,
            'wait_list': False,
            'wait_list_url': reverse('waitlist')
        })
    else:
        return json_success({
            'xpi_url': None,
            'xpi_hash': None,
            'wait_list': True,
            'wait_list_url': reverse('waitlist')
        })
def download_update(request):
    """
    Not called by anyone yet.
    """
    xpi_builder = XpiBuilder(settings.pathify([settings.PROJECT_PATH,
                                               'procrasdonate',
                                               'ProcrasDonateFFExtn'],
                                               file_extension=True),
                             "%s%s" % (settings.MEDIA_ROOT, 'xpi'),
                             "%s%s" % (settings.MEDIA_ROOT, 'rdf'))
    info = xpi_builder.get_update_info()
    link = info['update_link']
    hash = info['update_hash']
    return render_response(request, 'procrasdonate/extension_pages/download_xpi.html', locals())
Example #3
0
 def make(klass, rescuetime_key, recipient=None, user=None, dollars_per_hr=1.0):
     rt = RescueTimeUser.get_or_none(rescuetime_key=rescuetime_key)
     if rt:
         return rt
     
     if not user:
         private_key = XpiBuilder.generate_private_key()
         user = User.add(private_key)
     return RescueTimeUser(user=user,
                           recipient=recipient,
                           rescuetime_key=rescuetime_key,
                           dollars_per_hr=dollars_per_hr)
Example #4
0
def generate_xpi(request, slug):
    if not hasattr(settings, "MAX_USERS") or User.objects.count() < settings.MAX_USERS:
        recipient = slug != "__none__" and Recipient.get_or_none(slug=slug) or None
        xpi_builder = XpiBuilder(
            pathify([PROJECT_PATH, "procrasdonate", "ProcrasDonateFFExtn"], file_extension=True),
            "%s%s" % (MEDIA_ROOT, "xpi"),
            "%s%s" % (MEDIA_ROOT, "rdf"),
            recipient,
        )

        private_key = xpi_builder.write_input_json(is_update=False)
        user = User.add(private_key)
        Log.Log("Built XPI for download", detail="usage", user=user)

        (xpi_url, xpi_hash) = xpi_builder.build_xpi(is_update=False)
        return json_success(
            {"xpi_url": xpi_url, "xpi_hash": xpi_hash, "wait_list": False, "wait_list_url": reverse("waitlist")}
        )
    else:
        return json_success(
            {"xpi_url": None, "xpi_hash": None, "wait_list": True, "wait_list_url": reverse("waitlist")}
        )
Example #5
0
 def Make(klass, wedding):
     user = User.add(XpiBuilder.generate_private_key())
     return WeddingUser(user=user)
Example #6
0
def return_data(request):
    """
    sends back:
        * data for particular user
        * latest extension version
    """
    if not settings.DJANGO_SERVER and not request.is_secure():
        message = "must secure data via HTTPS: request=%s" % request
        Log.Error(message, "request_error")
        return json_failure(message)

    errors = []
    expected_parameters = ["private_key", "since"]

    response = extract_parameters(request, "GET", expected_parameters)
    if not response['success']:
        return json_failure("Something went wrong extracting parameters: %s" %
                            response['reason'])

    since = response["parameters"]["since"]
    print "----SINCE----------"
    print json.dumps(since, indent=2)
    since = decode_time(since)
    print since

    private_key = response["parameters"]["private_key"]
    print "----private_key----------"
    print json.dumps(private_key, indent=2)

    user = User.get_or_none(private_key=private_key)
    print "----  USER ----"
    print user
    if not user:
        message = "unknown user: %s, request=%s" % (private_key, request)
        Log.Error(message, "unknown_user")
        return json_failure(message)

    recipients = []
    #for recipient in Recipient.objects.filter(fpsrecipient__timestamp__gte=since):
    for recipient in Recipient.objects.all():
        recipients.append(recipient.deep_dict())

    multiuse_auths = []
    has_success = False
    for multiuse_auth in FPSMultiuseAuth.objects.filter(user=user):
        multiuse_auths.append(multiuse_auth.deep_dict())
        if multiuse_auth.good_to_go():
            has_success = True

    if not has_success:
        pass
        #@TODO if not has_success, then ask Amazon for token in case pipeline completed by didn't make it back to server yet.

    multiuse_pays = []
    for multiuse_pay in FPSMultiusePay.objects.filter(user=user):
        multiuse_pays.append(multiuse_pay.deep_dict())

    meta_reports = []
    for meta_report in MetaReport.objects.filter(is_draft=False):
        meta_reports.append(meta_report.deep_dict())

    #print '#.'*30;
    #print "RETURN DATA RETURNED"
    #print json.dumps({'recipients': recipients,
    #                     'multiuse_auths': multiuse_auths}, indent=2)
    #print '#.'*30;

    xpi_builder = XpiBuilder(
        pathify([PROJECT_PATH, 'procrasdonate', 'ProcrasDonateFFExtn'],
                file_extension=True), "%s%s" % (MEDIA_ROOT, 'xpi'),
        "%s%s" % (MEDIA_ROOT, 'rdf'))
    info = xpi_builder.get_update_info()
    return json_success({
        'recipients':
        recipients,
        'multiuse_auths':
        multiuse_auths,
        'multiuse_pays':
        multiuse_pays,
        'meta_reports':
        meta_reports,
        'latest_update_version':
        xpi_builder.get_update_version(),
        'update_link':
        info['update_link'],
        'update_hash':
        info['update_hash']
    })
Example #7
0
def return_data(request):
    """
    sends back:
        * data for particular user
        * latest extension version
    """
    if not settings.DJANGO_SERVER and not request.is_secure():
        message = "must secure data via HTTPS: request=%s" % request
        Log.Error(message, "request_error")
        return json_failure(message)

    errors = []
    expected_parameters = ["private_key", "since"]

    response = extract_parameters(request, "GET", expected_parameters)
    if not response["success"]:
        return json_failure("Something went wrong extracting parameters: %s" % response["reason"])

    since = response["parameters"]["since"]
    print "----SINCE----------"
    print json.dumps(since, indent=2)
    since = decode_time(since)
    print since

    private_key = response["parameters"]["private_key"]
    print "----private_key----------"
    print json.dumps(private_key, indent=2)

    user = User.get_or_none(private_key=private_key)
    print "----  USER ----"
    print user
    if not user:
        message = "unknown user: %s, request=%s" % (private_key, request)
        Log.Error(message, "unknown_user")
        return json_failure(message)

    recipients = []
    # for recipient in Recipient.objects.filter(fpsrecipient__timestamp__gte=since):
    for recipient in Recipient.objects.all():
        recipients.append(recipient.deep_dict())

    multiuse_auths = []
    has_success = False
    for multiuse_auth in FPSMultiuseAuth.objects.filter(user=user):
        multiuse_auths.append(multiuse_auth.deep_dict())
        if multiuse_auth.good_to_go():
            has_success = True

    if not has_success:
        pass
        # @TODO if not has_success, then ask Amazon for token in case pipeline completed by didn't make it back to server yet.

    multiuse_pays = []
    for multiuse_pay in FPSMultiusePay.objects.filter(user=user):
        multiuse_pays.append(multiuse_pay.deep_dict())

    meta_reports = []
    for meta_report in MetaReport.objects.filter(is_draft=False):
        meta_reports.append(meta_report.deep_dict())

    # print '#.'*30;
    # print "RETURN DATA RETURNED"
    # print json.dumps({'recipients': recipients,
    #                     'multiuse_auths': multiuse_auths}, indent=2)
    # print '#.'*30;

    xpi_builder = XpiBuilder(
        pathify([PROJECT_PATH, "procrasdonate", "ProcrasDonateFFExtn"], file_extension=True),
        "%s%s" % (MEDIA_ROOT, "xpi"),
        "%s%s" % (MEDIA_ROOT, "rdf"),
    )
    info = xpi_builder.get_update_info()
    return json_success(
        {
            "recipients": recipients,
            "multiuse_auths": multiuse_auths,
            "multiuse_pays": multiuse_pays,
            "meta_reports": meta_reports,
            "latest_update_version": xpi_builder.get_update_version(),
            "update_link": info["update_link"],
            "update_hash": info["update_hash"],
        }
    )
Example #8
0
 def Make(klass, wedding):
     user = User.add(XpiBuilder.generate_private_key())
     return WeddingUser(user=user)