Beispiel #1
0
def event_edit(request, event_pk=None):
    instance = None
    if event_pk is not None:
        instance = Event.objects.select_related().get(pk=event_pk)

    if request.method == 'POST':
        form = EventForm(request.POST, instance=instance)

        authors = [a.split(' - ') for a in request.POST.getlist('authors') if ' - ' in a]

        if form.is_valid():
            new_event = form.save(commit=False)
            old_sodelovanja = set()
            if instance is not None:
                old_sodelovanja = set(instance.sodelovanje_set.all())

            sodelovanja = set()
            for author, tip in authors:
                tip = TipSodelovanja.objects.get(name=tip)
                # ensure the Person actually exists
                try:
                    person = Person.objects.get(name=author)
                except Person.DoesNotExist:
                    person = Person(name=author)
                    person.save()

                try:
                    s = Sodelovanje.objects.get(event=new_event, tip=tip, person=person)
                except Sodelovanje.DoesNotExist:
                    s = Sodelovanje(event=new_event, tip=tip, person=person)
                    s.save()
                sodelovanja.add(s)
            new_event.save()
            # somehow this causes event.technician to become empty??
            #form.save_m2m()

            # remove old objects, that were not POSTed
            for i in old_sodelovanja & sodelovanja ^ old_sodelovanja:
                i.delete()

            return HttpResponseRedirect(new_event.get_absolute_url())
    else:
        form = EventForm(instance=instance)

    context = {
        'form': form,
        'tipi': TipSodelovanja.objects.all(),
        'sodelovanja': instance and instance.sodelovanje_set.all() or None,
        # TODO: remove duplicates
        'prev_sodelovanja': Sodelovanje.objects.values('tip__name', 'person__name').distinct().order_by('-person__name'),
        'image': (instance and instance.event_image and instance.event_image.image) or None
        }
    return render_to_response('org/event_edit.html', RequestContext(request, context))
Beispiel #2
0
def person(request):
    if request.method == 'POST':
        form = PersonForm(request.POST)
        if form.is_valid():
            person = Person(name=form.cleaned_data['name'])
            person.save()
            for key, value in form.cleaned_data.items():
                if not value or key == 'name':
                    continue

                clas = key[0].capitalize() + key[1:]
                exec 'from intranet.org.models import ' + clas
                for k in request.POST.getlist(key):
                    new_var = locals()[clas](**{key: k})
                    new_var.save()
                    Person.__dict__[key].__get__(person, clas).add(new_var)

    return HttpResponseRedirect('../')
Beispiel #3
0
def event_edit(request, event_pk=None):
    instance = None
    authors = None

    if event_pk is not None:
        instance = get_object_or_404(Event.objects.select_related(), pk=event_pk)

    if request.method == "POST":
        form = EventForm(request.POST, instance=instance)

        authors = [a.split(" - ") for a in request.POST.getlist("authors") if " - " in a]

        if form.is_valid():
            new_event = form.save(commit=False)
            old_sodelovanja = set()
            if instance is not None:
                old_sodelovanja = set(instance.sodelovanje_set.all())

            sodelovanja = set()
            for author, tip in authors:
                tip = TipSodelovanja.objects.get(name=tip)
                # ensure the Person actually exists
                try:
                    person = Person.objects.get(name=author)
                except Person.DoesNotExist:
                    person = Person(name=author)
                    person.save()

                try:
                    s = Sodelovanje.objects.get(event=new_event, tip=tip, person=person)
                except Sodelovanje.DoesNotExist:
                    s = Sodelovanje(event=new_event, tip=tip, person=person)
                    s.save()
                sodelovanja.add(s)
            new_event.save()
            # somehow this causes event.technician to become empty??
            # form.save_m2m()

            # remove old objects, that were not POSTed
            for i in old_sodelovanja & sodelovanja ^ old_sodelovanja:
                i.delete()

            return redirect("event_list")
            # changed redirect after successful add/edit
            # keeping the old version here just in case we change our mind
            # return HttpResponseRedirect(reverse('intranet.org.views.event_edit', args=[new_event.id]))
        else:
            authors = request.POST.getlist("authors")
    else:
        form = EventForm(instance=instance)

    context = {
        "form": form,
        "tipi": TipSodelovanja.objects.all(),
        "sodelovanja": instance and instance.sodelovanje_set.all() or None,
        "authors": authors,
        # TODO: remove duplicates
        "prev_sodelovanja": Sodelovanje.objects.values("tip__name", "person__name")
        .distinct()
        .order_by("-person__name"),
        "image": (instance and instance.event_image and instance.event_image.image) or None,
    }
    return render_to_response("org/event_edit.html", RequestContext(request, context))