Пример #1
0
def view(request, filter_id=None):
    filterapi = FilterAPI()
    fltr = filter_utils.get_filter(filter_id)
    if request.method == 'POST':
        form = FilterForm(request.POST, filter=fltr)
        if form.is_valid():
            orig = [p
                    for p in form.cleaned_data['orig_patterns'].splitlines()
                    if p]
            new = [p for p in form.cleaned_data['patterns'].splitlines() if p]
            to_remove = [p for p in orig if p not in new]
            success = True
            if to_remove:
                try:
                    filterapi.remove_packages(filter_id, to_remove)
                    messages.success(request,
                                     "Removed patterns from filter %s: %s" %
                                     (fltr['description'],
                                      ", ".join(to_remove)))
                except ServerRequestError, err:
                    success = False
                    messages.error(request,
                                   "Failed to remove %d patterns (%s) from "
                                   "filter %s: %s" %
                                   (len(to_remove), ", ".join(to_remove),
                                    fltr['description'], err[1]))
            to_add = [p for p in new if p not in orig]
            if to_add:
                try:
                    filterapi.add_packages(filter_id, to_add)
                    messages.success(request,
                                     "Added patterns to filter %s: %s" %
                                     (fltr['description'],
                                      ", ".join(to_add)))
                except ServerRequestError, err:
                    success = False
                    messages.error(request,
                                   "Failed to add %d patterns (%s) to filter "
                                   "%s: %s" %
                                   (len(to_add), ", ".join(to_add),
                                    fltr['description'], err[1]))

            if success:
                return \
                    HttpResponseRedirect(reverse('sponge.views.filters.list'))