Ejemplo n.º 1
0
def add(request):
    if request.method == 'POST':
        form = CredForm(request.user, request.POST, request.FILES)
        if form.is_valid():
            form.save()
            CredAudit(audittype=CredAudit.CREDADD, cred=form.instance, user=request.user).save()
            return HttpResponseRedirect(reverse('cred.views.list'))
    else:
        form = CredForm(request.user)

    return render(request, 'cred_edit.html', {'form': form, 'action':
      reverse('cred.views.add'), 'icons': get_icon_list()})
Ejemplo n.º 2
0
def add(request):
    if request.method == "POST":
        form = CredForm(request.user, request.POST, request.FILES)
        if form.is_valid():
            form.save()
            CredAudit(audittype=CredAudit.CREDADD, cred=form.instance, user=request.user).save()
            return HttpResponseRedirect(reverse("cred.views.list"))
    else:
        form = CredForm(request.user)

    return render(
        request, "cred_edit.html", {"form": form, "action": reverse("cred.views.add"), "icons": get_icon_list()}
    )
Ejemplo n.º 3
0
def edit(request, cred_id):
    cred = get_object_or_404(Cred, pk=cred_id)

    if cred.latest is not None:
        raise Http404

    next = request.GET.get('next', None)

    # Check user has perms
    if not cred.is_visible_by(request.user):
        raise Http404

    if request.method == 'POST':
        form = CredForm(request.user, request.POST, request.FILES, instance=cred)

        # Password change possible only for owner group
        if form.is_valid() and cred.group in request.user.groups.all():
            # Assume metedata change
            chgtype = CredAudit.CREDMETACHANGE

            # Unless something thats not metadata changes
            for c in form.changed_data:
                if c not in Cred.METADATA:
                    chgtype = CredAudit.CREDCHANGE

            # Clear pre-existing change queue items
            if chgtype == CredAudit.CREDCHANGE:
                CredChangeQ.objects.filter(cred=cred).delete()

            # Create audit log
            CredAudit(audittype=chgtype, cred=cred, user=request.user).save()
            form.save()

            # If we dont have anywhere to go, go to the details page
            if next is None:
                return HttpResponseRedirect(reverse('cred.views.detail', args=(cred.id,)))
            else:
                return HttpResponseRedirect(next)
    else:
        form = CredForm(request.user, instance=cred)
        CredAudit(audittype=CredAudit.CREDPASSVIEW, cred=cred, user=request.user).save()

    return render(request, 'cred_edit.html', {'form': form,
        'action': reverse('cred.views.edit', args=(cred.id,)),
        'next': next,
        'icons': get_icon_list(),
        'cred': cred,
    })
Ejemplo n.º 4
0
def edit(request, cred_id):
    cred = get_object_or_404(Cred, pk=cred_id)

    if cred.latest is not None:
        raise Http404

    next = request.GET.get("next", None)

    # Check user has perms
    if not cred.is_accessible_by(request.user):
        raise Http404

    if request.method == "POST":
        form = CredForm(request.user, request.POST, request.FILES, instance=cred)

        if form.is_valid():
            # Assume metedata change
            chgtype = CredAudit.CREDMETACHANGE

            # Unless something thats not metadata changes
            for c in form.changed_data:
                if c not in Cred.METADATA:
                    chgtype = CredAudit.CREDCHANGE

            # Clear pre-existing change queue items
            if chgtype == CredAudit.CREDCHANGE:
                CredChangeQ.objects.filter(cred=cred).delete()

            # Create audit log
            CredAudit(audittype=chgtype, cred=cred, user=request.user).save()
            form.save()

            # If we dont have anywhere to go, go to the details page
            if next is None:
                return HttpResponseRedirect(reverse("cred.views.detail", args=(cred.id,)))
            else:
                return HttpResponseRedirect(next)
    else:
        form = CredForm(request.user, instance=cred)
        CredAudit(audittype=CredAudit.CREDPASSVIEW, cred=cred, user=request.user).save()

    return render(
        request,
        "cred_edit.html",
        {"form": form, "action": reverse("cred.views.edit", args=(cred.id,)), "next": next, "icons": get_icon_list()},
    )
Ejemplo n.º 5
0
def add(request):
    if request.method == 'POST':
        form = CredForm(request.user, request.POST, request.FILES)
        if form.is_valid():
            form.save()
            cred = form.instance

            # add empty extra fields before saving
            tags = cred.tags.all()
            tag_extras = []
            for tag in tags:
                try:
                    tag_extras += Extra.objects.filter(tag=tag.id)
                except:
                    pass
            for ex in tag_extras:
                ef = ExtraField(value='', extra=ex)
                ef.save()
                cred.extrafields.add(ef)
                cred.save()

            CredAudit(audittype=CredAudit.CREDADD,
                      cred=cred,
                      user=request.user).save()
            return HttpResponseRedirect(reverse('detail', args=(cred.pk, )))
    else:
        form = CredForm(request.user)

    return render(request, 'cred_edit.html', {
        'form': form,
        'action': reverse('add'),
        'icons': get_icon_list()
    })
Ejemplo n.º 6
0
def edit(request, cred_id):
    cred = get_object_or_404(Cred, pk=cred_id)

    if cred.latest is not None:
        raise Http404

    next = request.GET.get('next', None)

    # Check user has perms
    if not cred.is_visible_by(request.user):
        raise Http404

    if request.method == 'POST':
        form = CredForm(request.user,
                        request.POST,
                        request.FILES,
                        instance=cred)

        # Password change possible only for owner group
        if form.is_valid() and cred.group in request.user.groups.all():
            # Assume metedata change
            chgtype = CredAudit.CREDMETACHANGE

            # Unless something thats not metadata changes
            for c in form.changed_data:
                if c not in Cred.METADATA:
                    chgtype = CredAudit.CREDCHANGE

            # Clear pre-existing change queue items
            if chgtype == CredAudit.CREDCHANGE:
                CredChangeQ.objects.filter(cred=cred).delete()

            # Create audit log
            CredAudit(audittype=chgtype, cred=cred, user=request.user).save()
            form.save()

            # If we dont have anywhere to go, go to the details page
            if next is None:
                return HttpResponseRedirect(
                    reverse('cred.views.detail', args=(cred.id, )))
            else:
                return HttpResponseRedirect(next)
    else:
        form = CredForm(request.user, instance=cred)
        CredAudit(audittype=CredAudit.CREDPASSVIEW,
                  cred=cred,
                  user=request.user).save()

    return render(
        request, 'cred_edit.html', {
            'form': form,
            'action': reverse('cred.views.edit', args=(cred.id, )),
            'next': next,
            'icons': get_icon_list(),
            'cred': cred,
        })
Ejemplo n.º 7
0
def add(request):
    if request.method == 'POST':
        form = CredForm(request.user, request.POST, request.FILES)
        if form.is_valid():
            form.save()
            CredAudit(audittype=CredAudit.CREDADD, cred=form.instance, user=request.user).save()
            return HttpResponseRedirect(reverse('cred:list'))
    else:
        form = CredForm(request.user)

    return render(request, 'cred_edit.html', {'form': form, 'action':
      reverse('cred:add'), 'icons': get_icon_list()})
Ejemplo n.º 8
0
def edit(request, cred_id):
    cred = get_object_or_404(Cred, pk=cred_id)

    if cred.latest is not None:
        raise Http404

    next = request.GET.get('next', None)

    # Check user has perms
    if not cred.is_visible_by(request.user):
        raise Http404

    # generate and save extra fields for all cred's tags if empty
    # First let's see what Extra fields this cred already has
    tags = cred.tags.all()
    cred_extras = []
    for exf in cred.extrafields.all():
        cred_extras.append(exf.extra)
    # Let's see now what Extra fields are coming with the tags this cred has
    tag_extras = []
    for tag in tags:
        try:
            tag_extras += Extra.objects.filter(tag=tag.id)
        except:
            pass
    for ex in tag_extras:
        if not ex in cred_extras:
            ef = ExtraField(value='', extra=ex)
            ef.save()
            cred.extrafields.add(ef)
            cred.save()

    # We are gonna pass this into templates
    cred_extra_fields = cred.extrafields.all()

    if request.method == 'POST':
        form = CredForm(request.user,
                        request.POST,
                        request.FILES,
                        instance=cred)

        # Password change possible only for owner group
        if form.is_valid() and cred.group in request.user.groups.all():
            # Assume metedata change
            chgtype = CredAudit.CREDMETACHANGE

            # Unless something thats not metadata changes
            for c in form.changed_data:
                if c not in Cred.METADATA:
                    chgtype = CredAudit.CREDCHANGE

            # Clear pre-existing change queue items
            if chgtype == CredAudit.CREDCHANGE:
                CredChangeQ.objects.filter(cred=cred).delete()

            # Save extra fields
            post_extra_keys = request.POST.keys()
            # Quite an ugly way: POST brings the <input> values with names "extra_<extra_id>"
            post_extra_keys = filter(lambda x: 'extra_' in x, post_extra_keys)
            new_tag_ids = map(int, request.POST.getlist('tags', default=[]))

            ex_changed = False
            for ex_key in post_extra_keys:
                ex_id = ex_key.split('_')[1]
                e = cred.extrafields.get(extra=int(ex_id))
                if not e.extra.tag.id in new_tag_ids:
                    # We need to make sure that if some tags were removed,
                    # their extra fields are not saved to this cred
                    e.delete()
                else:
                    new_value = request.POST.get(ex_key, default='')
                    if new_value != e.value:
                        ex_changed = True
                        e.value = new_value
                        e.save()

            # Create audit log
            # Record if extra foelds were changed
            if ex_changed:
                CredAudit(audittype=CredAudit.CREDEXTRACHANGE,
                          cred=cred,
                          user=request.user).save()
                if chgtype != CredAudit.CREDMETACHANGE:
                    CredAudit(audittype=chgtype, cred=cred,
                              user=request.user).save()
            else:
                CredAudit(audittype=chgtype, cred=cred,
                          user=request.user).save()
            form.save()

            # If we dont have anywhere to go, go to the details page
            if next is None:
                return HttpResponseRedirect(reverse('detail',
                                                    args=(cred.id, )))
            else:
                return HttpResponseRedirect(next)
    else:
        form = CredForm(request.user, instance=cred)
        CredAudit(audittype=CredAudit.CREDPASSVIEW,
                  cred=cred,
                  user=request.user).save()

    return render(
        request, 'cred_edit.html', {
            'form': form,
            'action': reverse('edit', args=(cred.id, )),
            'next': next,
            'icons': get_icon_list(),
            'cred': cred,
            'cred_extra_fields': cred_extra_fields,
        })