def test_publisher_edit(self):
        """
        Test editing a publisher, the initial GET should have a form with values and then the post should update the
        Publisher rather than creating a new one.
        """
        publisher_name = 'Test Edit Publisher'
        publisher_website = 'http://www.example.com/edit-publisher/'
        publisher_email = '*****@*****.**'
        publisher = Publisher(name=publisher_name,
                              website=publisher_website,
                              email=publisher_email)
        publisher.save()
        self.assertEqual(Publisher.objects.all().count(), 1)

        c = Client()

        response = c.get('/publishers/{}/'.format(publisher.pk))

        self.assertIn(b'value="Test Edit Publisher"', response.content)
        self.assertIn(b'value="http://www.example.com/edit-publisher/"',
                      response.content)
        self.assertIn(b'value="*****@*****.**"', response.content)
        self.assertIn(
            b'<button type="submit" class="btn btn-primary">\n        Save\n    </button>',
            response.content)

        response = c.post(
            '/publishers/{}/'.format(publisher.pk), {
                'name': 'Updated Name',
                'website': 'https://www.example.com/updated/',
                'email': '*****@*****.**'
            })
        self.assertEqual(response.status_code, 302)
        self.assertEqual(Publisher.objects.all().count(), 1)
        publisher2 = Publisher.objects.first()

        self.assertEqual(publisher2.pk, publisher.pk)
        self.assertEqual(publisher2.name, 'Updated Name')
        self.assertEqual(publisher2.website,
                         'https://www.example.com/updated/')
        self.assertEqual(publisher2.email, '*****@*****.**')

        # the messages will be on the redirected to page

        response = c.get(response['location'])

        condensed_content = re.sub(
            r'\s+', ' ',
            response.content.decode('utf8').replace('\n', ''))

        self.assertIn(
            '<div class="alert alert-success" role="alert"> Publisher &quot;Updated Name&quot; was updated. </div>',
            condensed_content)
Пример #2
0
    def test_publisher_edit(self):
        """
        Test editing a publisher, the initial GET should have a form with values and then the post should update the
        Publisher rather than creating a new one.
        """
        publisher_name = 'Test Edit Publisher'
        publisher_website = 'http://www.example.com/edit-publisher/'
        publisher_email = '*****@*****.**'
        publisher = Publisher(name=publisher_name,
                              website=publisher_website,
                              email=publisher_email)
        publisher.save()
        self.assertEqual(Publisher.objects.all().count(), 1)

        c = Client()

        response = c.get('/publishers/{}/'.format(publisher.pk))

        self.assertIn(b'value="Test Edit Publisher"', response.content)
        self.assertIn(b'value="http://www.example.com/edit-publisher/"',
                      response.content)
        self.assertIn(b'value="*****@*****.**"', response.content)

        response = c.post(
            '/publishers/{}/'.format(publisher.pk), {
                'name': 'Updated Name',
                'website': 'https://www.example.com/updated/',
                'email': '*****@*****.**'
            })
        self.assertEqual(response.status_code, 302)
        self.assertEqual(Publisher.objects.all().count(), 1)
        publisher2 = Publisher.objects.first()

        self.assertEqual(publisher2.pk, publisher.pk)
        self.assertEqual(publisher2.name, 'Updated Name')
        self.assertEqual(publisher2.website,
                         'https://www.example.com/updated/')
        self.assertEqual(publisher2.email, '*****@*****.**')
Пример #3
0
#!/usr/bin/env python3

from reviews.models import Publisher

publisher = Publisher(name='Packt Publishing',
                      website='https://www.packtpub.com',
                      email='*****@*****.**')
publisher.save()
publisher.email = '*****@*****.**'
publisher.save()
Пример #4
0
    def handle(self, *args, **options):
        m = re.compile('content:(\w+)')
        header = None
        models = dict()
        try:
            with open(options['csv']) as csvfile:
                model_data = csv.reader(csvfile)
                for i, row in enumerate(model_data):
                    if max([len(cell.strip()) for cell in row[1:] + ['']
                            ]) == 0 and m.match(row[0]):
                        model_name = m.match(row[0]).groups()[0]
                        models[model_name] = []
                        header = None
                        continue

                    if header is None:
                        header = row
                        continue

                    row_dict = self.row_to_dict(row, header)
                    if set(row_dict.values()) == set(['']):
                        continue
                    models[model_name].append(row_dict)

        except FileNotFoundError as f:
            raise CommandError('File "%s" does not exist' % options['csv'])

        for data_dict in models.get('Publisher', []):
            print('Publisher')
            p = Publisher(name=data_dict['publisher_name'],
                          website=data_dict['publisher_website'],
                          email=data_dict['publisher_email'])
            p.save()

        for data_dict in models.get('Book', []):
            print('Book')
            b = Book(
                title=data_dict['book_title'],
                publication_date=data_dict['book_publication_date'].replace(
                    '/', '-'),
                isbn=data_dict['book_isbn'],
                publisher=Publisher.objects.filter(
                    name=data_dict['book_publisher_name']).first())
            b.save()

        for data_dict in models.get('Contributor', []):
            print('Contributor')
            c = Contributor(first_names=data_dict['contributor_first_names'],
                            last_names=data_dict['contributor_last_names'],
                            email=data_dict['contributor_email'])
            c.save()

        for data_dict in models.get('BookContributor', []):
            print('BookContributor')
            bc = BookContributor(
                book=Book.objects.filter(
                    title=data_dict['book_contributor_book']).first(),
                contributor=Contributor.objects.filter(
                    email=data_dict['book_contributor_contributor']).first(),
                role=data_dict['book_contributor_role'])
            bc.save()

        for data_dict in models.get('Review', []):
            print('Review')
            review = Review(
                content=data_dict['review_content'],
                rating=data_dict['review_rating'],
                date_created=data_dict['review_date_created'],
                date_edited=data_dict['review_date_edited'],
                creator=User.objects.get(email=data_dict['review_creator']),
                book=Book.objects.filter(
                    title=data_dict['review_book']).first())
            review.save()