Esempio n. 1
0
 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)
Esempio n. 2
0
 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'))
Esempio n. 3
0
 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
Esempio n. 4
0
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
Esempio n. 5
0
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()
Esempio n. 6
0
 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
Esempio n. 7
0
 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,
                 }))
Esempio n. 8
0
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()
Esempio n. 9
0
 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
Esempio n. 10
0
 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
Esempio n. 11
0
 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