diff --git a/README.md b/README.md index cd773b1..b3d004a 100644 --- a/README.md +++ b/README.md @@ -26,16 +26,17 @@ python manage.py shell_plus --use-pythonrc Data generation order: -1. superuser -2. specializations -3. locations -4. perm. groups -5. build. classif-s -6. constr. types -7. users -8. teams -9. realties -10. projects -11. portfolios +1. Superuser +2. Specializations +3. Locations +4. Perm. groups +5. Build. classif-s +6. Constr. types +7. Users +8. Teams +9. Realties +10. Projects +11. Portfolios +12. Reviews ---------------------------------------- diff --git a/archilance/management/commands/generate_reviews.py b/archilance/management/commands/generate_reviews.py new file mode 100644 index 0000000..649a162 --- /dev/null +++ b/archilance/management/commands/generate_reviews.py @@ -0,0 +1,41 @@ +from django.contrib.auth.models import Group, Permission +from django.contrib.contenttypes.models import ContentType +from django.core.management import BaseCommand +from django.utils import timezone +import pydash as _; _.map = _.map_; _.filter = _.filter_ +import random + +from archilance import util +from projects.models import Project, Portfolio +from specializations.models import Specialization +from users.models import User, GENDERS, Team +from reviews.models import Review + + +class Command(BaseCommand): + def handle(self, *args, **options): + print('---------------------------------------') + print('Generating reviews...') + print('---------------------------------------') + + def create_review(i): + review = Review() + + review.project = Project.objects.order_by('?').first() + review.stars = _.random(1, 5) + review.text = 'This is a review %s text' % i + review.is_secured = _.sample((True, False)) + + review.save() + + if _.sample((True, False)): + review.from_contractor = User.contractor_objects.order_by('?').first() + review.target_customer = User.customer_objects.order_by('?').first() + else: + review.from_customer = User.customer_objects.order_by('?').first() + review.target_contractor = User.contractor_objects.order_by('?').first() + + review.save() + return review + + _.times(create_review, 300) diff --git a/archilance/management/commands/generate_teams.py b/archilance/management/commands/generate_teams.py index ee48009..f5d0317 100644 --- a/archilance/management/commands/generate_teams.py +++ b/archilance/management/commands/generate_teams.py @@ -44,4 +44,3 @@ class Command(BaseCommand): team.save() i += 1 - diff --git a/reviews/migrations/0003_auto_20160721_2021.py b/reviews/migrations/0003_auto_20160721_2021.py new file mode 100644 index 0000000..498be68 --- /dev/null +++ b/reviews/migrations/0003_auto_20160721_2021.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-07-21 17:21 +from __future__ import unicode_literals + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('reviews', '0002_auto_20160721_1808'), + ] + + operations = [ + migrations.AlterField( + model_name='review', + name='from_contractor', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='customer_reviews', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='review', + name='from_customer', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='contractor_reviews', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='review', + name='target_contractor', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reviews_by_customer', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='review', + name='target_customer', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='reviews_by_contractor', to=settings.AUTH_USER_MODEL), + ), + migrations.AlterUniqueTogether( + name='review', + unique_together=set([('from_customer', 'target_contractor', 'project'), ('from_contractor', 'target_customer', 'project')]), + ), + ] diff --git a/reviews/models.py b/reviews/models.py index 3794a10..56b7358 100644 --- a/reviews/models.py +++ b/reviews/models.py @@ -6,19 +6,19 @@ class Review(models.Model): project = models.ForeignKey('projects.Project', related_name='reviews') stars = models.IntegerField(validators=[MinValueValidator(1), MaxValueValidator(5)]) text = models.TextField() - target_customer = models.ForeignKey('users.User', related_name='reviews_by_contractor') - target_contractor = models.ForeignKey('users.User', related_name='reviews_by_customer') - from_customer = models.ForeignKey('users.User', related_name='contractor_reviews') - from_contractor = models.ForeignKey('users.User', related_name='customer_reviews') + target_customer = models.ForeignKey('users.User', related_name='reviews_by_contractor', null=True, blank=True) + target_contractor = models.ForeignKey('users.User', related_name='reviews_by_customer', null=True, blank=True) + from_customer = models.ForeignKey('users.User', related_name='contractor_reviews', null=True, blank=True) + from_contractor = models.ForeignKey('users.User', related_name='customer_reviews', null=True, blank=True) def __str__(self): - return self.pk + return str(self.pk) class Meta: verbose_name = 'Отзыв' verbose_name_plural = 'Отзывы' - # unique_together = ( - # ('from_customer', 'target_contractor', 'project'), - # ('from_contractor', 'target_customer', 'project'), - # ) + unique_together = ( + ('from_customer', 'target_contractor', 'project'), + ('from_contractor', 'target_customer', 'project'), + ) diff --git a/users/templates/customer_profile_reviews.html b/users/templates/customer_profile_reviews.html index eba585e..4879a2a 100644 --- a/users/templates/customer_profile_reviews.html +++ b/users/templates/customer_profile_reviews.html @@ -7,7 +7,7 @@
{% include 'partials/customer_profile_info_block.html' %} -

Reviews will be here

+

{{ customer }}

{% include 'partials/footer.html' %}