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 ee718a5..572c777 100644 --- a/archilance/settings/base.py +++ b/archilance/settings/base.py @@ -251,3 +251,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..a7580c3 100644 --- a/projects/forms.py +++ b/projects/forms.py @@ -13,14 +13,28 @@ from users.models import User # RealtyFormSet = inlineformset_factory(Project, Realty) + + class ProjectFilterForm(forms.ModelForm): + PROJECT_ORDER_CHOICES = ( # "Упорядочить по"... + ('name', 'названию'), + ('budget', 'цене'), + ('created', 'дате размещения'), + ('views', 'просмотрам'), + ) + + 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) + keywords = forms.CharField(required=False, max_length=255) + 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..e921393 100644 --- a/projects/templates/project_filter.html +++ b/projects/templates/project_filter.html @@ -49,10 +49,15 @@ -
+ + +Расширенный поиск
@@ -150,109 +158,119 @@Сортировать по:
-{# #} -{# цене#} -{# #} -{# #} -{# #} -{# cорту#} -{# #} -{# #} -{# #} -{# рейтингу#} -{# #} -{# #} -{# #} -{# дате размещения#} -{# #} -{# #} -{# #} -{# ответам#} -{# #} -{# #} -{# #} -{# просмотрам#} -{# #} -{# #} + {% for val, text in form.order_by.field.choices %} + + {% endfor %} - - - + +- {{ 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)
+
+ # import code; code.interact(local=dict(globals(), **locals()))
context.update({
'form': form,
'realty_form': realty_form,
'projects': projects,
+ 'is_paginated': True,
'display_msg': display_msg,
})
@@ -157,6 +198,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 0d9710a..cdd4327 100755
--- a/users/serializers.py
+++ b/users/serializers.py
@@ -49,4 +49,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 @@