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))
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)
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())
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))
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))