From a06c96b4a2bbd3fc14ffa97fadea172c521d8a05 Mon Sep 17 00:00:00 2001 From: ArturBaybulatov Date: Fri, 12 Aug 2016 18:21:02 +0300 Subject: [PATCH] #ARC-14 --- .../commands/generate_portfolios.py | 2 +- common/templatetags/common_tags.py | 5 +++ projects/forms.py | 12 +++++-- projects/views.py | 32 ++++++++----------- 4 files changed, 28 insertions(+), 23 deletions(-) diff --git a/archilance/management/commands/generate_portfolios.py b/archilance/management/commands/generate_portfolios.py index d33b3bf..abd307c 100644 --- a/archilance/management/commands/generate_portfolios.py +++ b/archilance/management/commands/generate_portfolios.py @@ -37,7 +37,7 @@ class Command(BaseCommand): def create_portfolio(i): portf = Portfolio( - name='Portforlio %s' % i, + name='Portfolio %s' % i, description=util.lorem(_.random(5, 30)), budget=util.random_amount(), currency=_.sample(CURRENCIES)[0], diff --git a/common/templatetags/common_tags.py b/common/templatetags/common_tags.py index e006552..fed04fa 100644 --- a/common/templatetags/common_tags.py +++ b/common/templatetags/common_tags.py @@ -37,6 +37,11 @@ def to_range(num): return range(num) +@register.filter('list') +def to_list(val): + return list(val) + + @register.filter def class_name(val): return type(val).__name__ diff --git a/projects/forms.py b/projects/forms.py index cfcfed0..c3ce34e 100644 --- a/projects/forms.py +++ b/projects/forms.py @@ -186,15 +186,21 @@ class ProjectAnswerForm(forms.ModelForm): def __init__(self, *args, **kwargs): self.request = kwargs.pop('request') - answer_as_team = kwargs.pop('answer_as_team', None) + answer_as_team = kwargs.pop('answer_as_team', None) # Optional kwarg super().__init__(*args, **kwargs) if answer_as_team: self.fields['secure_deal_only'].label = 'Работаем только по безопасной сделке' - self.fields['portfolios'].queryset = Portfolio.objects.all()[:2] # Tmp + + members = self.request.user.team.contractors.all() + + # portfolios = tuple(itertools.chain(*tuple(contr.portfolios.all() for contr in members))) + portfolios = Portfolio.objects.filter(user__pk__in=tuple(m.pk for m in members)) + + self.fields['portfolios'].queryset = portfolios else: self.fields['secure_deal_only'].label = 'Работаю только по безопасной сделке' - self.fields['portfolios'].queryset = self.request.user.portfolios + self.fields['portfolios'].queryset = self.request.user.portfolios.all() class StageForm(forms.ModelForm): diff --git a/projects/views.py b/projects/views.py index dba295b..5434cde 100644 --- a/projects/views.py +++ b/projects/views.py @@ -75,8 +75,6 @@ class ProjectDetailWithContractorAnswerView(BaseMixin, View): else: form = self.form_class(request=request) - # import code; code.interact(local=dict(globals(), **locals())) - context.update({'form': form}) return render(request, self.template_name, context) @@ -84,8 +82,12 @@ class ProjectDetailWithContractorAnswerView(BaseMixin, View): def post(self, request, *args, **kwargs): if request.user.is_authenticated() and request.user.is_contractor(): context = self.get_context_data(**kwargs) + answer_as_team = None + + if request.POST.get('answer_as_team') == 'on': # TODO: Check for actual possibility to answer as a team + answer_as_team = True - if request.POST.get('answer_as_team') == 'on': + if answer_as_team: form = self.form_class(request.POST, request=request, answer_as_team=True) else: form = self.form_class(request.POST, request=request) @@ -94,28 +96,20 @@ class ProjectDetailWithContractorAnswerView(BaseMixin, View): context.update({'project': project}) if form.is_valid(): - print('Form valid. "form.cleaned_data": ###############') - pprint(form.cleaned_data) - print('################################################') + answer = form.save(commit=False) + answer.project = project + answer.author = request.user.team if answer_as_team else request.user + answer.save() + form.save_m2m() - # answer = form.save(commit=False) - # answer.project = project - # answer.author = request.user - # answer.save() - # form.save_m2m() - # - # for file in request.FILES.getlist('new_files'): - # if len(file.name) <= 255: - # AnswerFile.objects.create(file=file, name=file.name, answer=answer) + for file in request.FILES.getlist('new_files'): + if len(file.name) <= 255: + AnswerFile.objects.create(file=file, name=file.name, answer=answer) messages.info(request, 'Отклик успешно размещён') redirect_to = request.POST.get('next') return redirect(redirect_to) else: - print('Form invalid. "form.data": #####################') - pprint(form.data) - print('################################################') - if form.errors: messages.info(request, ( '

Произошла ошибка (form)

'