Example #1
0
def save_search_form(request):
    search_id = request.POST.get('search_id')

    try:
        search_id = int(search_id)
        original = SavedSearch.objects.get(id=search_id, user=request.user)
    except (ValueError, TypeError):
        original = None

    if hasattr(original, 'partnersavedsearch'):
        form = PartnerSubSavedSearchForm(data=request.POST,
                                         instance=original.partnersavedsearch,
                                         request=request)
    else:
        form = SavedSearchForm(user=request.user, data=request.POST,
                               instance=original)

    if form.is_valid():
        form.save()

        if request.is_ajax():
            return HttpResponse(status=200)
        else:
            return HttpResponseRedirect(reverse('saved_search_main'))
    else:
        if request.is_ajax():
            return HttpResponse(json.dumps(form.errors))
        else:
            return render_to_response('mysearches/saved_search_edit.html',
                                      {'form': form,
                                       'search_id': search_id},
                                      RequestContext(request))
Example #2
0
 def pss_sub_form_last_action_time_updated_on_edit(self):
     """
         Verify saving partner saved search sub form causes last_action_time to update
     """
     original_time = self.instance.last_action_time
     new_form = PartnerSubSavedSearchForm(instance=self.instance, request=self.request,
                                          data=self.partner_search_data)
     self.assertTrue(new_form.is_valid())
     new_instance = new_form.save()
     self.assertEqual(self.instance.pk, new_instance.pk)
     self.assertNotEqual(new_instance.last_action_time, original_time)
Example #3
0
    def test_disable_partner_saved_search(self):
        pss = PartnerSavedSearch.objects.get()

        # Partner saved search can be activated/deactivated if unsubscriber
        # is not one of the recipient's email addresses.
        form = PartnerSavedSearchForm(instance=pss, request=self.request,
                                      data=self.partner_search_data)
        self.assertFalse(form.fields['is_active'].widget.attrs.get('disabled',
                                                                   False))

        pss.unsubscriber = pss.email
        pss.save()

        # PRM users can no longer toggle the state of this partner saved search
        # as the user has unsubscribed.
        form = PartnerSavedSearchForm(instance=pss, request=self.request,
                                      data=self.partner_search_data)
        self.assertTrue(form.fields['is_active'].widget.attrs.get('disabled',
                                                                  False))

        # Since the unsubscriber is also the recipient, the recipient can still
        # toggle the state of this partner saved search.
        self.request.user = pss.user
        form = PartnerSubSavedSearchForm(instance=pss, request=self.request,
                                         data=self.partner_search_data)
        self.assertFalse(form.fields['is_active'].widget.attrs.get('disabled',
                                                                   False))
        self.assertTrue(form.is_valid())
Example #4
0
def save_search_form(request):
    search_id = request.POST.get('search_id')

    try:
        search_id = int(search_id)
        original = SavedSearch.objects.get(id=search_id, user=request.user)
    except (ValueError, TypeError):
        original = None

    if hasattr(original, 'partnersavedsearch'):
        form = PartnerSubSavedSearchForm(data=request.POST,
                                         instance=original.partnersavedsearch,
                                         request=request)
    else:
        form = SavedSearchForm(user=request.user,
                               data=request.POST,
                               instance=original)

    if form.is_valid():
        form.save()

        if request.is_ajax():
            return HttpResponse(status=200)
        else:
            return HttpResponseRedirect(reverse('saved_search_main'))
    else:
        if request.is_ajax():
            return HttpResponse(json.dumps(form.errors))
        else:
            return render_to_response('mysearches/saved_search_edit.html', {
                'form': form,
                'search_id': search_id
            }, RequestContext(request))
Example #5
0
def edit_search(request):
    search_id = request.REQUEST.get('id')
    partner_saved_search = request.REQUEST.get('pss')
    if not partner_saved_search:
        if search_id:
            saved_search = get_object_or_404(SavedSearch,
                                             id=search_id,
                                             user=request.user)
            if hasattr(saved_search, 'partnersavedsearch'):
                raise Http404("mysearches.views.edit_search: trying to edit a "
                              "PartnerSavedSearch as a SavedSearch")
        else:
            saved_search = None

        is_pss = False
        form = SavedSearchForm(user=request.user,
                               instance=saved_search,
                               auto_id='id_edit_%s')
    else:
        if search_id:
            saved_search = get_object_or_404(SavedSearch,
                                             id=search_id,
                                             user=request.user)
            if hasattr(saved_search, 'partnersavedsearch'):
                is_pss = True
                form = PartnerSubSavedSearchForm(
                    instance=saved_search.partnersavedsearch,
                    auto_id=False,
                    request=request)
        else:
            raise Http404("mysearches.views.edit_search: no id provided")

    return render_to_response(
        'mysearches/saved_search_edit.html', {
            'form': form,
            'search_id': search_id,
            'view_name': 'Saved Searches',
            'search': saved_search,
            'is_pss': is_pss,
            'label': form.instance.label
        }, RequestContext(request))