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()})
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()} )
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, })
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()}, )
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() })
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, })
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()})
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, })