def download(request, cfilter="special", value="all"): if request.method == 'POST': # If the form has been submitted... form = ExportForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass # Get the creds to export (search_object, creds) = cred_search(request.user, cfilter, value) filename = 'RatticExport.kdb' # Decide on the filename if cfilter == 'tag': filename = 'RatticExportTag-%s.kdb' % search_object.name elif cfilter == 'group': filename = 'RatticExportGroup-%s.kdb' % search_object.name elif cfilter == 'search': filename = 'RatticExportSearch-%s.kdb' % search_object elif cfilter == 'special' and value == 'all': filename = 'RatticExportAll.kdb' elif cfilter == 'special' and value == 'trash': filename = 'RatticExportTrash.kdb' else: raise Http404 # Make the Audit logs auditlogs = [] for c in creds: auditlogs.append( CredAudit( audittype=CredAudit.CREDEXPORT, cred=c, user=request.user, )) # Create all Audit logs at once CredAudit.objects.bulk_create(auditlogs) # Give the Keepass file to the user return export_keepass(creds, form.cleaned_data['password'], filename) else: form = ExportForm() # An unbound form return render(request, 'cred_export.html', { 'form': form, })
def download(request, cfilter="special", value="all"): if request.method == 'POST': # If the form has been submitted... form = ExportForm(request.POST) # A form bound to the POST data if form.is_valid(): # All validation rules pass # Get the creds to export (search_object, creds) = cred_search(request.user, cfilter, value) filename = 'RatticExport.kdb' # Decide on the filename if cfilter == 'tag': filename = 'RatticExportTag-%s.kdb' % search_object.name elif cfilter == 'group': filename = 'RatticExportGroup-%s.kdb' % search_object.name elif cfilter == 'search': filename = 'RatticExportSearch-%s.kdb' % search_object elif cfilter == 'special' and value == 'all': filename = 'RatticExportAll.kdb' elif cfilter == 'special' and value == 'trash': filename = 'RatticExportTrash.kdb' else: raise Http404 # Make the Audit logs auditlogs = [] for c in creds: auditlogs.append(CredAudit( audittype=CredAudit.CREDEXPORT, cred=c, user=request.user, )) # Create all Audit logs at once CredAudit.objects.bulk_create(auditlogs) # Give the Keepass file to the user return export_keepass(creds, form.cleaned_data['password'], filename) else: form = ExportForm() # An unbound form return render(request, 'cred_export.html', { 'form': form, })
def list(request, cfilter='special', value='all', sortdir='ascending', sort='title', page=1): # Setup basic stuff viewdict = { 'credtitle': _('All passwords'), 'alerts': [], 'filter': unicode(cfilter).lower(), 'value': unicode(value).lower(), 'sort': unicode(sort).lower(), 'sortdir': unicode(sortdir).lower(), 'page': unicode(page).lower(), 'groups': request.user.groups, # Default buttons 'buttons': { 'add': True, 'delete': True, 'changeq': True, 'tagger': True, 'export': False, } } # Get groups if required get_groups = request.GET.getlist('group') if len(get_groups) > 0: groups = Group.objects.filter(id__in=get_groups) else: groups = Group.objects.all() # Perform the search (search_object, cred_list) = cred_search(request.user, cfilter, value, sortdir, sort, groups) # Apply the filters if cfilter == 'tag': viewdict['credtitle'] = _('Passwords tagged with %(tagname)s') % {'tagname': search_object.name, } viewdict['buttons']['export'] = True elif cfilter == 'group': viewdict['credtitle'] = _('Passwords in group %(groupname)s') % {'groupname': search_object.name, } viewdict['buttons']['export'] = True elif cfilter == 'search': viewdict['credtitle'] = _('Passwords for search "%(searchstring)s"') % {'searchstring': search_object, } viewdict['buttons']['export'] = True elif cfilter == 'history': viewdict['credtitle'] = _('Versions of: "%(credtitle)s"') % {'credtitle': search_object.title, } viewdict['buttons']['add'] = False viewdict['buttons']['delete'] = False viewdict['buttons']['changeq'] = False viewdict['buttons']['tagger'] = False elif cfilter == 'changeadvice': alert = {} alert['message'] = _("That user is now disabled. Here is a list of passwords that they have viewed that have not since been changed. You probably want to add them all to the change queue.") alert['type'] = 'info' viewdict['credtitle'] = _('Changes required for "%(username)s"') % {'username': search_object.username} viewdict['buttons']['add'] = False viewdict['buttons']['delete'] = True viewdict['buttons']['changeq'] = True viewdict['buttons']['tagger'] = False viewdict['alerts'].append(alert) elif cfilter == 'special' and value == 'all': viewdict['buttons']['export'] = True elif cfilter == 'special' and value == 'trash': viewdict['credtitle'] = _('Passwords in the trash') viewdict['buttons']['add'] = False viewdict['buttons']['undelete'] = True viewdict['buttons']['changeq'] = False viewdict['buttons']['tagger'] = False viewdict['buttons']['export'] = True elif cfilter == 'special' and value == 'changeq': viewdict['credtitle'] = _('Passwords on the Change Queue') viewdict['buttons']['add'] = False viewdict['buttons']['delete'] = False viewdict['buttons']['changeq'] = False viewdict['buttons']['tagger'] = False else: raise Http404 # Apply the sorting rules if sortdir == 'ascending': viewdict['revsortdir'] = 'descending' elif sortdir == 'descending': viewdict['revsortdir'] = 'ascending' else: raise Http404 # Get the page paginator = Paginator(cred_list, request.user.profile.items_per_page) try: cred = paginator.page(page) except PageNotAnInteger: cred = paginator.page(1) except EmptyPage: cred = paginator.page(paginator.num_pages) # Get variables to give the template viewdict['credlist'] = cred # Create the form for exporting viewdict['exportform'] = ExportForm() return render(request, 'cred_list.html', viewdict)