Esempio n. 1
0
    def testBasic(self):
        # No odesk association - display alert
        resp = self.c.get(reverse('project_wizard'), follow=True)

        with open('test_golds.csv', 'wb') as f:
            f.write('"http://google.com",No\n')
            f.write('"http://google.com/1",No\n')
            f.write('"http://google.com/2",No\n')
            f.write('"http://google.com/5",No\n')
            f.write('"http://google.com/3",Yes\n')
            f.write('"http://google.com/4",No\n')
            f.flush()

        with open('test_golds.csv', 'rb') as f:
            # Full values provided
            for source, name in JOB_DATA_SOURCE_CHOICES:
                for submit in ['draft', 'active']:
                    no_of_urls = 1
                    data = {
                        'topic': 'Test',
                        'topic_desc': 'Test desc',
                        'data_source': source,
                        'no_of_urls': no_of_urls,
                        'file_gold_urls': f,
                        'same_domain': '1',
                        'stripeToken': 'abc',
                        'submit': submit
                    }

                    resp = self.c.post(reverse('project_wizard'),
                                       data,
                                       follow=True)
                    f.seek(0)

                    if Job.estimate_cost(source, no_of_urls) > 0:
                        # We need to provide correct stripe token.
                        self.assertTemplateUsed(
                            resp, 'main/project/wizard-form-error.html')
                    else:
                        # For free project we don't need payment
                        self.assertTemplateUsed(resp,
                                                'main/project/overview.html')

            # Check project topic and description
            data = {
                'topic_desc': 'Test desc',
                'data_source': '1',
                'no_of_urls': '1',
                'file_gold_urls': f,
                'same_domain': '1',
                'stripeToken': 'abc',
                'submit': 'draft'
            }

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertFormError(resp, 'topic_form', 'topic',
                                 'Please input project topic.')

            data = {
                'topic': 'Test',
                'data_source': '1',
                'no_of_urls': '1',
                'file_gold_urls': f,
                'same_domain': '1',
                'stripeToken': 'abc',
                'submit': 'draft'
            }

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertFormError(resp, 'topic_form', 'topic_desc',
                                 'Please input project topic description.')

            data = {
                'topic': 'Test',
                'data_source': '1',
                'no_of_urls': '1',
                'file_gold_urls': f,
                'same_domain': '1',
                'stripeToken': '',
                'submit': 'draft'
            }

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertFormError(resp, 'topic_form', 'topic_desc',
                                 'Please input project topic description.')

            data = {
                'topic': 'Test',
                'topic_desc': 'a',
                'data_source': '1',
                'no_of_urls': '1',
                'file_gold_urls': f,
                'same_domain': '1',
                'stripeToken': 'abc',
                'submit': 'active'
            }

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertEqual(resp.status_code, 200)
        os.unlink('test_golds.csv')
Esempio n. 2
0
    def testBasic(self):
        # No odesk association - display alert
        resp = self.c.get(reverse('project_wizard'), follow=True)

        with open('test_golds.csv', 'wb') as f:
            f.write('"http://google.com",No\n')
            f.write('"http://google.com/1",No\n')
            f.write('"http://google.com/2",No\n')
            f.write('"http://google.com/5",No\n')
            f.write('"http://google.com/3",Yes\n')
            f.write('"http://google.com/4",No\n')
            f.flush()

        with open('test_golds.csv', 'rb') as f:
            # Full values provided
            for source, name in JOB_DATA_SOURCE_CHOICES:
                for submit in ['draft', 'active']:
                    no_of_urls = 1
                    data = {'topic': 'Test',
                            'topic_desc': 'Test desc',
                            'data_source': source,
                            'no_of_urls': no_of_urls,
                            'file_gold_urls': f,
                            'same_domain': '1',
                            'stripeToken': 'abc',
                            'submit': submit}

                    resp = self.c.post(reverse('project_wizard'), data, follow=True)
                    f.seek(0)

                    if Job.estimate_cost(source, no_of_urls) > 0:
                        # We need to provide correct stripe token.
                        self.assertTemplateUsed(resp, 'main/project/wizard-form-error.html')
                    else:
                        # For free project we don't need payment
                        self.assertTemplateUsed(resp, 'main/project/overview.html')

            # Check project topic and description
            data = {'topic_desc': 'Test desc',
                    'data_source': '1',
                    'no_of_urls': '1',
                    'file_gold_urls': f,
                    'same_domain': '1',
                    'stripeToken': 'abc',
                    'submit': 'draft'}

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertFormError(resp, 'topic_form', 'topic',
                                 'Please input project topic.')

            data = {'topic': 'Test',
                    'data_source': '1',
                    'no_of_urls': '1',
                    'file_gold_urls': f,
                    'same_domain': '1',
                    'stripeToken': 'abc',
                    'submit': 'draft'}

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertFormError(resp, 'topic_form', 'topic_desc',
                                 'Please input project topic description.')

            data = {'topic': 'Test',
                    'data_source': '1',
                    'no_of_urls': '1',
                    'file_gold_urls': f,
                    'same_domain': '1',
                    'stripeToken': '',
                    'submit': 'draft'}

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertFormError(resp, 'topic_form', 'topic_desc',
                                 'Please input project topic description.')

            data = {'topic': 'Test',
                    'topic_desc': 'a',
                    'data_source': '1',
                    'no_of_urls': '1',
                    'file_gold_urls': f,
                    'same_domain': '1',
                    'stripeToken': 'abc',
                    'submit': 'active'}

            resp = self.c.post(reverse('project_wizard'), data, follow=True)
            f.seek(0)
            self.assertEqual(resp.status_code, 200)
        os.unlink('test_golds.csv')
Esempio n. 3
0
            if classify_file:
                try:
                    urls = csv.reader(classify_file)
                    classify_urls = [line[0] for line in urls]
                    params['classify_urls'] = json.dumps(classify_urls)
                except csv.Error, e:
                    request.session['error'] = e
                    return redirect('index')
                except:
                    request.session['error'] =\
                        'Classify urls file has incorrect format.'
                    return render(request, 'main/project/wizard.html',
                                  RequestContext(request, context))

            job_charge = None
            job_cost = Job.estimate_cost(int(params['data_source']),
                                         params['no_of_urls'])
            if job_cost >= 0.5:
                if not stripe_token:
                    context['wizard_error'] = 'No Stripe payment'
                    return render(request, 'main/project/wizard.html',
                                  RequestContext(request, context))
                description = "Customer for User %s in job: %s " % (
                    request.user.id, params['title'])
                try:
                    job_charge = JobCharge.objects.base_from_token(
                        stripe_token, description)
                except JobChargeException, e:
                    context['wizard_error'] = e.message
                    return render(request, 'main/project/wizard.html',
                                  RequestContext(request, context))
            elif Job.is_paid_source(int(params['data_source'])):
Esempio n. 4
0
            if classify_file:
                try:
                    urls = csv.reader(classify_file)
                    classify_urls = [line[0] for line in urls]
                    params['classify_urls'] = json.dumps(classify_urls)
                except csv.Error, e:
                    request.session['error'] = e
                    return redirect('index')
                except:
                    request.session['error'] =\
                        'Classify urls file has incorrect format.'
                    return render(request, 'main/project/wizard.html',
                        RequestContext(request, context))

            job_charge = None
            job_cost = Job.estimate_cost(int(params['data_source']),
                    params['no_of_urls'])
            if job_cost >= 0.5:
                if not stripe_token:
                    context['wizard_error'] = 'No Stripe payment'
                    return render(request, 'main/project/wizard.html',
                        RequestContext(request, context))
                description = "Customer for User %s in job: %s " % (
                    request.user.id, params['title'])
                try:
                    job_charge = JobCharge.objects.base_from_token(
                        stripe_token, description)
                except JobChargeException, e:
                    context['wizard_error'] = e.message
                    return render(request, 'main/project/wizard.html',
                        RequestContext(request, context))
            elif Job.is_paid_source(int(params['data_source'])):