From 0d6cb8f796edbcbf91361d48d7eb5b03fa9ae4ee Mon Sep 17 00:00:00 2001 From: ArturBaybulatov Date: Thu, 4 Aug 2016 19:06:08 +0300 Subject: [PATCH] #ARC-14 --- README.md | 2 + archilance/util.py | 7 + assets/index.js | 14 +- chat/migrations/0003_documents.py | 35 ++ chat/migrations/0004_auto_20160804_1806.py | 41 ++ chat/models.py | 10 +- common/templatetags/common_tags.py | 8 + .../migrations/0013_auto_20160804_1403.py | 24 + .../migrations/0014_auto_20160804_1754.py | 21 + projects/models.py | 8 +- .../templates/customer_project_edit_test.html | 41 -- projects/templates/project_detail.html | 433 ++++++++---------- projects/views.py | 31 +- users/migrations/0004_team_avatar.py | 20 + users/models.py | 1 + .../partials/customer_profile_info_block.html | 6 +- 16 files changed, 381 insertions(+), 321 deletions(-) create mode 100644 chat/migrations/0003_documents.py create mode 100644 chat/migrations/0004_auto_20160804_1806.py create mode 100644 projects/migrations/0013_auto_20160804_1403.py create mode 100644 projects/migrations/0014_auto_20160804_1754.py delete mode 100644 projects/templates/customer_project_edit_test.html create mode 100644 users/migrations/0004_team_avatar.py diff --git a/README.md b/README.md index aade22d..55f9bee 100644 --- a/README.md +++ b/README.md @@ -23,6 +23,7 @@ python manage.py shell_plus --use-pythonrc ``` ---------------------------------------- + Generate data via: ``` @@ -45,6 +46,7 @@ Data generation order: 12. Reviews or here is right commands in one str: + ``` python manage.py generate_superuser && python manage.py generate_specializations && diff --git a/archilance/util.py b/archilance/util.py index 80b72a4..b7feef0 100644 --- a/archilance/util.py +++ b/archilance/util.py @@ -82,3 +82,10 @@ def lorem(sentences=5): ), ' ') return _.join(_.times(lambda i_: _.capitalize(_.join(_.sample(words, _.random(5, 30)), ' ')), sentences), '. ') + + +def decap(s): + if not isinstance(s, str): + raise TypeError('String expected') + + return s[0].lower() + s[1:] if len(s) > 0 else s diff --git a/assets/index.js b/assets/index.js index 7c2ac93..9d393e9 100644 --- a/assets/index.js +++ b/assets/index.js @@ -271,24 +271,24 @@ function loadRealtyDetails(realtyId) { var $fileUploadContainer = $('#fileUploadContainer') $('#fileUploadAddBtn').on('click', function($evt) { - $fileUploadContainer.find('.file-upload-widget').last().children('.file-upload-input').click() + $fileUploadContainer.find('.file-upload-widget').last().find('.file-upload-input').click() }) $fileUploadContainer.on('change', '.file-upload-input', function($evt) { var $fileInput = $(this) - var $fileUploadWidget = $fileInput.parent('.file-upload-widget') + var $fileUploadWidget = $fileInput.closest('.file-upload-widget') var filePath = $fileInput.val().replace(/\\/g, '/') var fileName = path.basename(filePath) //var fileExt = path.extname(filePath) var fileSize = $fileInput.get(0).files && humanFileSize($fileInput.get(0).files[0].size) if (fileName) { - $fileUploadWidget.children('.file-upload-label').text(fileName + ' ' + fileSize) + $fileUploadWidget.find('.file-upload-label').text(fileName + ' ' + fileSize) var $newFileUploadWidget = $fileUploadWidget.clone() - $newFileUploadWidget.children('.file-upload-label').text('') + $newFileUploadWidget.find('.file-upload-label').text('') - $fileUploadContainer.children('ul').first().append($newFileUploadWidget) + $fileUploadContainer.find('ul').first().append($newFileUploadWidget) $fileUploadWidget.css('display', 'block') } @@ -296,12 +296,12 @@ $fileUploadContainer.on('change', '.file-upload-input', function($evt) { $fileUploadContainer.on('click', '.file-upload-remove-btn', function($evt) { var $btn = $(this) - $btn.parent('.file-upload-widget').remove() + $btn.closest('.file-upload-widget').remove() }) $fileUploadContainer.on('click', '.existing-file-remove-btn', function($evt) { var $btn = $(this) - $btn.parent('.existing-file-widget').remove() + $btn.closest('.existing-file-widget').remove() }) diff --git a/chat/migrations/0003_documents.py b/chat/migrations/0003_documents.py new file mode 100644 index 0000000..039c234 --- /dev/null +++ b/chat/migrations/0003_documents.py @@ -0,0 +1,35 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-04 11:03 +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 = [ + ('projects', '0013_auto_20160804_1403'), + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('users', '0003_auto_20160726_1931'), + ('chat', '0002_message_team'), + ] + + operations = [ + migrations.CreateModel( + name='Documents', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', models.FileField(upload_to='chat/documents/')), + ('order', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='order_documents', to='projects.Order')), + ('recipent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='recipent_documents', to=settings.AUTH_USER_MODEL)), + ('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='sender_documents', to=settings.AUTH_USER_MODEL)), + ('team', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='team_documents', to='users.Team')), + ], + options={ + 'verbose_name_plural': 'Входящие Документы', + 'verbose_name': 'Входящие Документы', + }, + ), + ] diff --git a/chat/migrations/0004_auto_20160804_1806.py b/chat/migrations/0004_auto_20160804_1806.py new file mode 100644 index 0000000..1c86557 --- /dev/null +++ b/chat/migrations/0004_auto_20160804_1806.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-04 15:06 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('chat', '0003_documents'), + ] + + operations = [ + migrations.AlterField( + model_name='documents', + name='order', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='projects.Order'), + ), + migrations.AlterField( + model_name='documents', + name='team', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='users.Team'), + ), + migrations.AlterField( + model_name='message', + name='order', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='projects.Order'), + ), + migrations.AlterField( + model_name='message', + name='team', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='messages', to='users.Team'), + ), + migrations.AlterField( + model_name='notes', + name='order', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='projects.Order'), + ), + ] diff --git a/chat/models.py b/chat/models.py index c82312e..4a52622 100644 --- a/chat/models.py +++ b/chat/models.py @@ -8,11 +8,11 @@ from users.models import User, Team class Message(models.Model): text = models.TextField() created = models.DateTimeField(default=timezone.now) - order = models.ForeignKey(Order, related_name='order_messages',null=True, blank=True) + order = models.ForeignKey(Order, related_name='messages',null=True, blank=True) sender = models.ForeignKey(User, related_name='sender_messages') recipent = models.ForeignKey(User, related_name='recipent_messages') private_type = models.BooleanField(default=False) - team = models.ForeignKey(Team, related_name='team_messages', null=True, blank=True) + team = models.ForeignKey(Team, related_name='messages', null=True, blank=True) def __str__(self): return self.text @@ -27,7 +27,7 @@ class Notes(models.Model): created = models.DateTimeField(default=timezone.now) sender = models.ForeignKey(User, related_name='sender_notes') recipent = models.ForeignKey(User, related_name='recipent_notes') - order = models.ForeignKey(Order, related_name='order_notes', null=True, blank=True) + order = models.ForeignKey(Order, related_name='notes', null=True, blank=True) def __str__(self): return self.text @@ -39,8 +39,8 @@ class Notes(models.Model): class Documents(models.Model): file = models.FileField(upload_to='chat/documents/') - order = models.ForeignKey(Order, related_name='order_documents',null=True, blank=True) - team = models.ForeignKey(Team, related_name='team_documents',null=True, blank=True) + order = models.ForeignKey(Order, related_name='documents', null=True, blank=True) + team = models.ForeignKey(Team, related_name='documents', null=True, blank=True) sender = models.ForeignKey(User, related_name='sender_documents') recipent = models.ForeignKey(User, related_name='recipent_documents') diff --git a/common/templatetags/common_tags.py b/common/templatetags/common_tags.py index d83c232..e006552 100644 --- a/common/templatetags/common_tags.py +++ b/common/templatetags/common_tags.py @@ -57,4 +57,12 @@ def lorem(*args, **kwargs): return util.lorem(*args, **kwargs) +@register.filter +def decap(val): + if isinstance(val, str): + return util.decap(val) + + return val + + # import code; code.interact(local=dict(globals(), **locals())) diff --git a/projects/migrations/0013_auto_20160804_1403.py b/projects/migrations/0013_auto_20160804_1403.py new file mode 100644 index 0000000..17a5f78 --- /dev/null +++ b/projects/migrations/0013_auto_20160804_1403.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-04 11:03 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0012_merge'), + ] + + operations = [ + migrations.RenameModel( + old_name='AnswerFiles', + new_name='AnswerFile', + ), + migrations.AlterField( + model_name='answer', + name='portfolios', + field=models.ManyToManyField(blank=True, related_name='portfolios_answers', to='projects.Portfolio'), + ), + ] diff --git a/projects/migrations/0014_auto_20160804_1754.py b/projects/migrations/0014_auto_20160804_1754.py new file mode 100644 index 0000000..380624b --- /dev/null +++ b/projects/migrations/0014_auto_20160804_1754.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.9.7 on 2016-08-04 14:54 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('projects', '0013_auto_20160804_1403'), + ] + + operations = [ + migrations.AlterField( + model_name='order', + name='team', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='orders', to='users.Team'), + ), + ] diff --git a/projects/models.py b/projects/models.py index d813492..4e3229a 100644 --- a/projects/models.py +++ b/projects/models.py @@ -141,7 +141,7 @@ class Answer(models.Model): ordering = ('-created',) -class AnswerFiles(models.Model): +class AnswerFile(models.Model): answer = models.ForeignKey(Answer, related_name='files', blank=True, null=True) name = models.CharField(max_length=255) file = models.FileField(upload_to='projects/answer_files') @@ -156,15 +156,15 @@ class AnswerFiles(models.Model): class Order(models.Model): contractor = models.ForeignKey(User, null=True, blank=True, related_name='orders') - team = models.ForeignKey(Team, null=True, blank=True, related_name='team_orders') + team = models.ForeignKey(Team, null=True, blank=True, related_name='orders') created = models.DateTimeField(default=timezone.now) project = models.OneToOneField(Project, related_name='order') secure = models.BooleanField(default=False) status = models.BooleanField(default=False) - + def __str__(self): return self.project.name - + class Meta: verbose_name = 'Заказ' verbose_name_plural = 'Заказы' diff --git a/projects/templates/customer_project_edit_test.html b/projects/templates/customer_project_edit_test.html deleted file mode 100644 index 095c30a..0000000 --- a/projects/templates/customer_project_edit_test.html +++ /dev/null @@ -1,41 +0,0 @@ -{% load staticfiles %} -{% load common_tags %} - - - - - - - - - -Archilance - - - - - - - -{% if messages %} - {% for message in messages %} -
{{ message | safe }}
- {% endfor %} -{% endif %} - -

"pk": {{ pk }}

- -
- {% csrf_token %} - - {{ form.as_p }} - - - - {% if back %}Назад{% endif %} -
- - - - - diff --git a/projects/templates/project_detail.html b/projects/templates/project_detail.html index c271964..7b251ea 100644 --- a/projects/templates/project_detail.html +++ b/projects/templates/project_detail.html @@ -78,6 +78,7 @@ +