def registration(req, pk=None): contact = None if pk is not None: contact = get_object_or_404( Contact, pk=pk) if req.method == "POST": if req.POST["submit"] == "Delete Contact": contact.delete() return HttpResponseRedirect( reverse(registration)) else: form = ContactForm( instance=contact, data=req.POST) if form.is_valid(): contact = form.save() return HttpResponseRedirect( reverse(registration)) else: form = ContactForm( instance=contact) return render_to_response( "registration/dashboard.html", { "contacts_table": ContactTable(Contact.objects.all(), request=req), "contact_form": form, "contact": contact }, context_instance=RequestContext(req) )
def registration(req, pk=None): contact = None if pk is not None: contact = get_object_or_404( Contact, pk=pk) if req.method == "POST": if req.POST["submit"] == "Delete Contact": contact.delete() return HttpResponseRedirect( reverse(registration)) elif "bulk" in req.FILES: # TODO use csv module #reader = csv.reader(open(req.FILES["bulk"].read(), "rb")) #for row in reader: for line in req.FILES["bulk"]: line_list = line.split(',') name = line_list[0].strip() backend_name = line_list[1].strip() identity = line_list[2].strip() contact = Contact(name=name) contact.save() # TODO deal with errors! backend = Backend.objects.get(name=backend_name) connection = Connection(backend=backend, identity=identity, contact=contact) connection.save() return HttpResponseRedirect( reverse(registration)) else: contact_form = ContactForm( instance=contact, data=req.POST) if contact_form.is_valid(): contact = contact_form.save() return HttpResponseRedirect( reverse(registration)) else: contact_form = ContactForm( instance=contact) bulk_form = BulkRegistrationForm() return render_to_response( "registration/dashboard.html", { "contacts_table": ContactTable(Contact.objects.all(), request=req), "contact_form": contact_form, "bulk_form": bulk_form, "contact": contact }, context_instance=RequestContext(req) )
def registration(req, pk=None): contact = None if pk is not None: contact = get_object_or_404( Contact, pk=pk) if req.method == "POST": if req.POST["submit"] == "Delete Contact": contact.delete() return HttpResponseRedirect( reverse(registration)) else: form = ContactForm( instance=contact, data=req.POST) if form.is_valid(): contact = form.save() return HttpResponseRedirect( reverse(registration)) else: form = ContactForm( instance=contact) class ContactRow(ModelRow): # add an 'url' attribute; a link to the edit page, with the same # GET parameters as the current view. this lets us persist the # pagination params (page=, per-page=), maintaining the current # state of the contacts list (on the left). def url(self): u = reverse(registration, args=[self.data.pk]) if req.GET: u += "?%s" % req.GET.urlencode() return u # add an 'is_active' attr, to highlight the row that we're # currently editing (if any) in the form to the right. def is_active(self): return self.data == contact return render_to_response(req, "registration/dashboard.html", { "contacts": ContactTable(request=req, row_class=ContactRow), "contact_form": form, "contact": contact })
def registration(req, pk=None, template="registration/dashboard.html"): contact = None connection = None bulk_form = None if pk is not None: contact = get_object_or_404(Contact, pk=pk) connection = get_object_or_404(Connection, contact__name=contact.name) if req.method == "POST": if req.POST["submit"] == "Delete Contact": contact.delete() return HttpResponseRedirect(reverse(registration)) elif "bulk" in req.FILES: # TODO use csv module #reader = csv.reader(open(req.FILES["bulk"].read(), "rb")) #for row in reader: for line in req.FILES["bulk"]: line_list = line.split(',') name = line_list[0].strip() backend_name = line_list[1].strip() identity = line_list[2].strip() contact = Contact(name=name) contact.save() # TODO deal with errors! backend = Backend.objects.get(name=backend_name) connection = Connection(backend=backend, identity=identity,\ contact=contact) connection.save() return HttpResponseRedirect(reverse(registration)) else: contact_form = ContactForm(instance=contact, data=req.POST) connection_form = ConnectionForm(req.POST, instance=connection) if contact_form.is_valid() and connection_form.is_valid(): contact = contact_form.save() connection = connection_form.save(commit=False) connection.contact = contact connection.save() return HttpResponseRedirect(reverse(registration)) else: contact_form = ContactForm(instance=contact) bulk_form = BulkRegistrationForm() connection_form = ConnectionForm(instance=connection) return render_to_response( template, { "contacts_table": ContactTable(Contact.objects.all(), request=req), "contact_form": contact_form, "connection_form": connection_form, "bulk_form": bulk_form, "contact": contact }, context_instance=RequestContext(req))