diff --git a/archilance/management/commands/generate_projects.py b/archilance/management/commands/generate_projects.py index febb7cd..66f6846 100644 --- a/archilance/management/commands/generate_projects.py +++ b/archilance/management/commands/generate_projects.py @@ -6,7 +6,7 @@ import pydash as _; _.map = _.map_; _.filter = _.filter_ import random from archilance import util -from projects.models import Project, CURRENCIES, TERMS, Specialization, Realty +from projects.models import Project, Order, CURRENCIES, TERMS, Specialization, Realty from users.models import User @@ -73,6 +73,9 @@ class Command(BaseCommand): project.customer = User.objects.filter(groups__name='Заказчики', is_active=True, is_superuser=False).order_by('?').first() project.save() + + Order.objects.create(project=project) + return project _.times(create_project, 1000) diff --git a/archilance/settings/base.py b/archilance/settings/base.py index 96d7bd5..aaabc4d 100644 --- a/archilance/settings/base.py +++ b/archilance/settings/base.py @@ -247,3 +247,5 @@ SHELL_PLUS_POST_IMPORTS = ( # Extra auto imports ('archilance', 'util'), ('pprint', ('pprint', 'pformat')), ) + +PAGE_SIZE = 10 # Pagination diff --git a/projects/forms.py b/projects/forms.py index f17c2f8..8d8b449 100644 --- a/projects/forms.py +++ b/projects/forms.py @@ -13,14 +13,25 @@ from users.models import User # RealtyFormSet = inlineformset_factory(Project, Realty) +PROJECT_ORDER_CHOICES = ( + ('name', 'Name'), + ('budget', 'Budget'), + ('created', 'Created'), + ('views', 'Views'), +) + class ProjectFilterForm(forms.ModelForm): + order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES) + last_order_by = forms.ChoiceField(required=False, choices=PROJECT_ORDER_CHOICES) + reverse_order = forms.BooleanField(required=False) + class Meta: model = Project fields = ( 'cro', - 'work_type', 'specialization', + 'work_type', ) widgets = { diff --git a/projects/templates/project_filter.html b/projects/templates/project_filter.html index 0508ae9..5118bb9 100644 --- a/projects/templates/project_filter.html +++ b/projects/templates/project_filter.html @@ -65,6 +65,9 @@ + + +
Расширенный поиск
@@ -175,84 +178,132 @@ {# #} {# #} - - - + + + + + + +- {{ proj }} -
-{{ proj.text }}
- - {% if TEMPLATE_DEBUG %} -{{ proj|inspect }}
Specialization: {{ proj.specialization }}
Realty location: {{ proj.realty.location }}
Constr. type: {{ proj.realty.construction_type }}
Build. classif.: {{ proj.realty.building_classification }}
- {% endif %}
-
- + {{ proj }} +
+{{ proj.text }}
+ + {% if TEMPLATE_DEBUG %} +{{ proj|inspect }}
Specialization: {{ proj.specialization }}
Realty location: {{ proj.realty.location }}
Constr. type: {{ proj.realty.construction_type }}
Build. classif.: {{ proj.realty.building_classification }}
+ {% endif %}
+
+ + {{ proj.budget }} +
+- {{ proj.budget }} -
-{realty_form}'
).format(realty_form=pformat(realty_form.errors)))
- order_by = request.GET.get('order_by') # TODO: Validate
- if order_by:
- projects = projects.order_by(order_by)
+ paginator = Paginator(projects.all(), settings.PAGE_SIZE)
+ page = request.GET.get('page')
- projects = projects[:10]
+ try:
+ projects = paginator.page(page)
+ except PageNotAnInteger:
+ projects = paginator.page(1)
+ except EmptyPage:
+ projects = paginator.page(paginator.num_pages)
context.update({
'form': form,
'realty_form': realty_form,
'projects': projects,
+ 'is_paginated': True,
'display_msg': display_msg,
})
@@ -157,6 +187,8 @@ class CustomerProjectCreateView(BaseMixin, View):
project.save()
form.save_m2m()
+ Order.objects.create(project=project)
+
for file in request.FILES.getlist('new_files'):
proj_file = ProjectFile.objects.create(file=file, project=project)
proj_file.save()
diff --git a/users/serializers.py b/users/serializers.py
index f7aff5d..41266be 100755
--- a/users/serializers.py
+++ b/users/serializers.py
@@ -24,7 +24,6 @@ class UserSerializer(ModelSerializer):
'last_name',
'last_time_visit',
'location',
- 'nickname',
'patronym',
'skype',
'website',
@@ -49,4 +48,5 @@ class UserSerializer(ModelSerializer):
#
# return inst
+
# import code; code.interact(local=dict(globals(), **locals()))
diff --git a/work_sell/templates/worksells_list.html b/work_sell/templates/worksells_list.html
index c5bcd1a..25d9702 100644
--- a/work_sell/templates/worksells_list.html
+++ b/work_sell/templates/worksells_list.html
@@ -143,36 +143,38 @@
{% endfor %}
- {% if is_paginated %}
-