def form_valid(self, form): contacts = common.get_selected_contacts_from_request(self.request) tag_ids = [] for tag in form.cleaned_data: if form.cleaned_data[tag]: tag_ids.append(tag.split('_')[1]) for contact in contacts: # Django's many-to-many add can take just ids, which saves us having # to pull the Tag objects from the DB. try: contact.tags.add(*tag_ids) contact.save() except IntegrityError: # If that contact already had the tag, step through tags to add # the missing ones for tag_id in tag_ids: try: contact.tags.add(tag_id) except IntegrityError: pass log = LogEntry.objects.create( contact=contact, kind='edit', notes='Added tags', logged_by=self.request.user, ) contact.update_last_contact_from_log(log) self.request.session['selected_contacts'] = None return super(AddTagView, self).form_valid(form)
def post(self, request, *args, **kwargs): contacts = common.get_selected_contacts_from_request(self.request) if contacts and len(contacts) > 1: contacts = list(contacts) primary_contact = contacts.pop(0) note_list = [] for contact in contacts: for field in contact.contactfields: field.preferred = False field.contact = primary_contact field.save() for log in LogEntry.objects.filter(contact=contact): log.contact = primary_contact log.save() note_list.append(contact.name) contact.delete() LogEntry.objects.create( contact = primary_contact, logged_by = self.request.user, kind = 'edit', notes = "Merged with {}".format(", ".join(note_list)), ) messages.success( self.request, "Successfully merged contacts.", ) self.request.session['selected_contacts'] = None return redirect(reverse( 'contacts-view', kwargs={'pk': primary_contact.id}, )) return redirect(reverse('contacts-list'))
def get_context_data(self, *args, **kwargs): context = super(MergeContactsView, self).get_context_data(*args, **kwargs) contacts = common.get_selected_contacts_from_request(self.request) context['contacts'] = contacts context['book'] = self.request.current_book return context
def address_csv_view(request): contacts = common.get_selected_contacts_from_request(request) response = HttpResponse(content_type='text/csv') response['Content-Disposition'] = 'attachment; filename="contact_addresses.csv"' writer = csv.writer(response) writer.writerow(['Name', 'Address']) for contact in contacts: writer.writerow([contact.name, contact.preferred_address]) request.session['selected_contacts'] = None return response
def address_csv_view(request): if request.user.is_authenticated(): contacts = common.get_selected_contacts_from_request(request) response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="contact_addresses.csv"' writer = csv.writer(response) writer.writerow(['Name', 'Address']) for contact in contacts: writer.writerow([contact.name, contact.preferred_address]) request.session['selected_contacts'] = None return response raise Http404()
def get_context_data(self, *args, **kwargs): context = super(ExportAddressView, self).get_context_data(*args, **kwargs) if kwargs.get('tag'): contacts = Contact.objects.for_user( user=self.request.user, book=self.request.current_book, ).filter(tags__id=self.kwargs.get('tag')) else: contacts = common.get_selected_contacts_from_request(self.request) context['contacts'] = contacts context['tag'] = Tag.objects.get(id=self.kwargs.get('tag')) return context
def post(self, request, *args, **kwargs): contacts = common.get_selected_contacts_from_request(self.request) if contacts and len(contacts) > 1: contacts = list(contacts) primary_contact = contacts.pop(0) note_list = [] for contact in contacts: for field in contact.contactfields: field.preferred = False field.contact = primary_contact field.save() for log in LogEntry.objects.filter(contact=contact): log.contact = primary_contact log.save() for tag in contact.tags.all(): primary_contact.tags.add(tag) if not primary_contact.photo_url and contact.photo_url: primary_contact.photo_url = contact.photo_url primary_contact.save() note_list.append(contact.name) contact.delete() log = LogEntry.objects.create( contact=primary_contact, logged_by=self.request.user, kind='edit', time=timezone.now(), notes="Merged with {}".format(", ".join(note_list)), ) primary_contact.update_last_contact_from_log(log) messages.success( self.request, "Successfully merged contacts.", ) self.request.session['selected_contacts'] = None return redirect( reverse( 'contacts-view', kwargs={ 'pk': primary_contact.id, 'book': self.request.current_book.id, }, )) return redirect( reverse('contacts-list', kwargs={ 'book': self.request.current_book.id, }))
def address_csv_view(request, book, tag=None): if request.user.is_authenticated(): if tag: contacts = Contact.objects.for_user( user=request.user, book=request.current_book, ).filter(tags__id=tag) else: contacts = common.get_selected_contacts_from_request(self.request) response = HttpResponse(content_type='text/csv') response[ 'Content-Disposition'] = 'attachment; filename="contact_addresses.csv"' writer = csv.writer(response) writer.writerow(['Name', 'Address']) for contact in contacts: writer.writerow([contact.name, contact.preferred_address]) request.session['selected_contacts'] = None return response raise Http404()
def get_context_data(self, *args, **kwargs): context = super(MergeContactsView, self).get_context_data(*args, **kwargs) contacts = common.get_selected_contacts_from_request(self.request) context['contacts'] = contacts return context
def get_context_data(self, *args, **kwargs): context = super(AddTagView, self).get_context_data(*args, **kwargs) context['contacts'] = common.get_selected_contacts_from_request( self.request, ) context['tags'] = self.get_tags() return context
def get_context_data(self, *args, **kwargs): context = super(ExportAddressView, self).get_context_data(*args, **kwargs) contacts = common.get_selected_contacts_from_request(self.request) context['contacts'] = contacts return context