예제 #1
0
def detail(request, manifest_name):
    if request.method == 'POST':
        if not request.user.has_perm('reports.change_machine'):
            return HttpResponse(json.dumps('error'))
        if request.is_ajax():
            json_data = json.loads(request.raw_post_data)
            if json_data:
                manifest_detail = Manifest.read(manifest_name)
                for key in json_data.keys():
                    manifest_detail[key] = json_data[key]
                Manifest.write(manifest_name, manifest_detail,
                               request.user)
            return HttpResponse(json.dumps('success'))
    if request.method == 'GET':
        manifest = Manifest.read(manifest_name)
        valid_install_items = Manifest.getValidInstallItems(manifest_name)
        valid_catalogs = Catalog.list()
        valid_manifest_names = Manifest.list()
        manifest_user = manifest.get(MANIFEST_USERNAME_KEY, '')
        
        c = RequestContext(request, 
            {'manifest_name': manifest_name.replace(':', '/'),
            'manifest_user': manifest_user,
            'manifest_user_is_editable': MANIFEST_USERNAME_IS_EDITABLE,
            'manifest': manifest,
            'valid_install_items': valid_install_items,
            'valid_catalogs': valid_catalogs,
            'valid_manifest_names': valid_manifest_names,
            'user': request.user,
            'page': 'manifests'})
        c.update(csrf(request))
        return render_to_response('manifests/detail.html', c)
예제 #2
0
def index(request, manifest_name=None):
    if request.method == 'GET':
        manifest_names = Manifest.list()
        available_sections = [
            'catalogs', 'included_manifests', 'managed_installs',
            'managed_uninstalls', 'managed_updates', 'optional_installs'
        ]
        section = request.GET.get('section', 'manifest_name')
        findtext = request.GET.get('findtext', '')
        #sort = request.GET.get('sort', 'name')
        if findtext:
            filtered_names = []
            if section == 'manifest_name':
                for name in manifest_names:
                    basename = os.path.basename(name)
                    if fnmatch.fnmatch(basename, findtext):
                        filtered_names.append(name)
            elif section == 'user_name':
                for name in manifest_names:
                    manifest = Manifest.read(name)
                    if manifest:
                        username = manifest.get(MANIFEST_USERNAME_KEY, '')
                        if fnmatch.fnmatch(username, findtext):
                            filtered_names.append(name)
            else:
                for name in manifest_names:
                    manifest = Manifest.read(name)
                    if manifest:
                        for item in manifest.get(section, []):
                            if fnmatch.fnmatch(item, findtext):
                                filtered_names.append(name)
                                break

            manifest_names = filtered_names

        manifest_list = getManifestInfo(manifest_names)
        username = None
        manifest = None

        if manifest_name:
            manifest = Manifest.read(manifest_name)
            username = manifest.get(MANIFEST_USERNAME_KEY)
            manifest_name = manifest_name.replace(':', '/')
        c = RequestContext(
            request, {
                'manifest_list': manifest_list,
                'section': section,
                'findtext': findtext,
                'available_sections': available_sections,
                'manifest_name': manifest_name,
                'manifest_user': username,
                'manifest': manifest,
                'user': request.user,
                'page': 'manifests'
            })

        return render_to_response('manifests/index.html', c)
예제 #3
0
def index(request, manifest_name=None):
    if request.method == 'GET':
        manifest_names = Manifest.list()
        available_sections =   ['catalogs',
                                'included_manifests',
                                'managed_installs',
                                'managed_uninstalls',
                                'managed_updates',
                                'optional_installs']
        section = request.GET.get('section', 'manifest_name')
        findtext = request.GET.get('findtext', '')
        #sort = request.GET.get('sort', 'name')
        if findtext:
            filtered_names = []
            if section == 'manifest_name':
                for name in manifest_names:
                    basename = os.path.basename(name)
                    if fnmatch.fnmatch(basename, findtext):
                        filtered_names.append(name)
            elif section == 'user_name':
                for name in manifest_names:
                    manifest = Manifest.read(name)
                    if manifest:
                        username = manifest.get(MANIFEST_USERNAME_KEY, '')
                        if fnmatch.fnmatch(username, findtext):
                            filtered_names.append(name)
            else:
                for name in manifest_names:
                    manifest = Manifest.read(name)
                    if manifest:
                        for item in manifest.get(section, []):
                            if fnmatch.fnmatch(item, findtext):
                                filtered_names.append(name)
                                break
        
            manifest_names = filtered_names
        
        manifest_list = getManifestInfo(manifest_names)
        username = None
        manifest = None
        
        if manifest_name:
            manifest = Manifest.read(manifest_name)
            username = manifest.get(MANIFEST_USERNAME_KEY)
            manifest_name = manifest_name.replace(':', '/')
        c = RequestContext(request,     
            {'manifest_list': manifest_list,
             'section': section,
             'findtext': findtext,
             'available_sections': available_sections,
             'manifest_name': manifest_name,
             'manifest_user': username,
             'manifest': manifest,
             'user': request.user,
             'page': 'manifests'})
        
        return render_to_response('manifests/index.html', c)
예제 #4
0
def json_manifest_names(request):
    valid_manifest_names = Manifest.list()
    valid_manifest_names.sort()
    term = request.GET.get('term', '').lower()
    if term:
        suggestions = [ item for item in valid_manifest_names
                        if term in item.lower() ]
    else:
        suggestions = valid_manifest_names
    return HttpResponse(json.dumps(suggestions),
                        mimetype='application/json')
예제 #5
0
파일: views.py 프로젝트: wollardj/mwa2
def index(request):
    if request.is_ajax():
        print "Got json request for manifests"
        manifest_list = Manifest.list()
        # send it back in JSON format
        return HttpResponse(json.dumps(manifest_list),
                            content_type='application/json')
    else:
        print "Got index request for manifests"
        c = {'page': 'manifests'}
        return render(request, 'manifests/manifests.html', context=c)
예제 #6
0
def index(request):
    if request.is_ajax():
        print "Got json request for manifests"
        manifest_list = Manifest.list()
        # send it back in JSON format
        return HttpResponse(json.dumps(manifest_list),
                            content_type='application/json')
    else:
        print "Got index request for manifests"
        c = {'page': 'manifests'}
        return render(request, 'manifests/manifests.html', context=c)
예제 #7
0
def index(request, manifest_name=None):
    if request.method == 'GET':
        manifest_names = Manifest.list()
        available_sections =   ['catalogs',
                                'included_manifests',
                                'managed_installs',
                                'managed_uninstalls',
                                'managed_updates',
                                'optional_installs']
        section = request.GET.get('section', 'manifest_name')
        findtext = request.GET.get('findtext', '')
        sort = request.GET.get('sort', 'name')

        manifest_list = getManifestInfo(manifest_names)
        username = None
        manifest = None
        
        git_enabled = None
        if GIT:
            git_enabled = GIT

        git_branching_enabled = None
        if GIT_BRANCHING:
            git_branching_enabled = GIT_BRANCHING
            # option to show the actual branch. It takes a toll on loading speed though
            # git_branch = Manifest.getGitBranch()

        manifest_list_json = list()
        for item in manifest_list:
            manifest_list_json.append(item['name'])
        manifest_list_json = json.dumps(manifest_list_json)

        if manifest_name:
            manifest = Manifest.read(manifest_name)
            username = manifest.get(MANIFEST_USERNAME_KEY)
            manifest_name = manifest_name.replace(':', '/')
        c = RequestContext(request,     
            {'manifest_list': manifest_list,
             'manifest_list_json': manifest_list_json,
             'section': section,
             'findtext': findtext,
             'available_sections': available_sections,
             'manifest_name': manifest_name,
             'manifest_user': username,
             'manifest': manifest,
             'git_enabled': git_enabled,
             'git_branching_enabled': git_branching_enabled,
             'user': request.user,
             'page': 'manifests'})
        
        return render_to_response('manifests/index.html', c)
예제 #8
0
def detail(request, manifest_name):
    if request.method == 'POST':
        if not request.user.has_perm('manifests.change_manifests'):
            return HttpResponse(json.dumps('error'))
        if request.is_ajax():
            json_data = json.loads(request.body)
            if json_data:
                manifest_detail = Manifest.read(manifest_name)
                for key in json_data.keys():
                    manifest_detail[key] = json_data[key]
                Manifest.write(manifest_name, manifest_detail, request.user)
            return HttpResponse(json.dumps('success'))
    if request.method == 'GET':
        if not request.user.has_perm('manifests.can_view_manifests'):
            return HttpResponse(json.dumps('error'))
        manifest = Manifest.read(manifest_name)
        #valid_install_items = Manifest.getValidInstallItems(manifest_name)
        install_items = Manifest.getInstallItemNames(manifest_name)
        valid_install_items = (install_items['suggested'] +
                               install_items['updates'] +
                               install_items['with_version'])
        suggested_install_items = install_items['suggested']
        valid_catalogs = Catalog.list()
        valid_manifest_names = Manifest.list()
        autocomplete_data = json.dumps({
            'items': install_items['suggested'],
            'catalogs': valid_catalogs,
            'manifests': valid_manifest_names
        })
        manifest_user = manifest.get(MANIFEST_USERNAME_KEY, '')

        c = RequestContext(
            request, {
                'manifest_name': manifest_name.replace(':', '/'),
                'manifest_user': manifest_user,
                'manifest_user_is_editable': MANIFEST_USERNAME_IS_EDITABLE,
                'manifest': manifest,
                'valid_install_items': valid_install_items,
                'install_items': install_items,
                'valid_catalogs': valid_catalogs,
                'valid_manifest_names': valid_manifest_names,
                'autocomplete_data': autocomplete_data,
                'user': request.user,
                'page': 'manifests'
            })
        c.update(csrf(request))
        return render_to_response('manifests/detail.html', c)
예제 #9
0
def detail(request, manifest_name):
    if request.method == 'POST':
        if not request.user.has_perm('manifests.change_manifests'):
            return HttpResponse(json.dumps('error'))
        if request.is_ajax():
            json_data = json.loads(request.body)
            if json_data:
                manifest_detail = Manifest.read(manifest_name)
                for key in json_data.keys():
                    manifest_detail[key] = json_data[key]
                Manifest.write(manifest_name, manifest_detail,
                               request.user)
            return HttpResponse(json.dumps('success'))
    if request.method == 'GET':
        if not request.user.has_perm('manifests.can_view_manifests'):
            return HttpResponse(json.dumps('error'))
        manifest = Manifest.read(manifest_name)
        #valid_install_items = Manifest.getValidInstallItems(manifest_name)
        install_items = Manifest.getInstallItemNames(manifest_name)
        valid_install_items = (install_items['suggested'] + 
                               install_items['updates'] +
                                install_items['with_version'])
        suggested_install_items = install_items['suggested']
        valid_catalogs = Catalog.list()
        valid_manifest_names = Manifest.list()
        autocomplete_data = json.dumps({
            'items': install_items['suggested'],
            'catalogs': valid_catalogs,
            'manifests': valid_manifest_names
        })
        manifest_user = manifest.get(MANIFEST_USERNAME_KEY, '')
        
        c = RequestContext(request, 
            {'manifest_name': manifest_name.replace(':', '/'),
            'manifest_user': manifest_user,
            'manifest_user_is_editable': MANIFEST_USERNAME_IS_EDITABLE,
            'manifest': manifest,
            'valid_install_items': valid_install_items,
            'install_items': install_items,
            'valid_catalogs': valid_catalogs,
            'valid_manifest_names': valid_manifest_names,
            'autocomplete_data': autocomplete_data,
            'user': request.user,
            'page': 'manifests'})
        c.update(csrf(request))
        return render_to_response('manifests/detail.html', c)
예제 #10
0
def detail(request, manifest_name):
    if request.method == "POST":
        if not request.user.has_perm("reports.change_machine"):
            return HttpResponse(json.dumps("error"))
        if request.is_ajax():
            json_data = json.loads(request.body)
            if json_data:
                manifest_detail = Manifest.read(manifest_name)
                for key in json_data.keys():
                    manifest_detail[key] = json_data[key]
                Manifest.write(manifest_name, manifest_detail, request.user)
            return HttpResponse(json.dumps("success"))
    if request.method == "GET":
        manifest = Manifest.read(manifest_name)
        # valid_install_items = Manifest.getValidInstallItems(manifest_name)
        install_items = Manifest.getInstallItemNames(manifest_name)
        valid_install_items = install_items["suggested"] + install_items["updates"] + install_items["with_version"]
        suggested_install_items = install_items["suggested"]
        valid_catalogs = Catalog.list()
        valid_manifest_names = Manifest.list()
        autocomplete_data = json.dumps(
            {"items": install_items["suggested"], "catalogs": valid_catalogs, "manifests": valid_manifest_names}
        )
        manifest_user = manifest.get(MANIFEST_USERNAME_KEY, "")

        c = RequestContext(
            request,
            {
                "manifest_name": manifest_name.replace(":", "/"),
                "manifest_user": manifest_user,
                "manifest_user_is_editable": MANIFEST_USERNAME_IS_EDITABLE,
                "manifest": manifest,
                "valid_install_items": valid_install_items,
                "install_items": install_items,
                "valid_catalogs": valid_catalogs,
                "valid_manifest_names": valid_manifest_names,
                "autocomplete_data": autocomplete_data,
                "user": request.user,
                "page": "manifests",
            },
        )
        c.update(csrf(request))
        return render_to_response("manifests/detail.html", c)
예제 #11
0
def index(request, manifest_name=None):
    if request.method == 'GET':
        manifest_names = Manifest.list()
        available_sections = [
            'catalogs', 'included_manifests', 'managed_installs',
            'managed_uninstalls', 'managed_updates', 'optional_installs'
        ]
        section = request.GET.get('section', 'manifest_name')
        findtext = request.GET.get('findtext', '')
        sort = request.GET.get('sort', 'name')

        manifest_list = getManifestInfo(manifest_names)
        username = None
        manifest = None

        manifest_list_josn = list()
        for item in manifest_list:
            manifest_list_josn.append(item['name'])
        manifest_list_josn = json.dumps(manifest_list_josn)

        if manifest_name:
            manifest = Manifest.read(manifest_name)
            username = manifest.get(MANIFEST_USERNAME_KEY)
            manifest_name = manifest_name.replace(':', '/')
        c = RequestContext(
            request, {
                'manifest_list': manifest_list,
                'manifest_list_josn': manifest_list_josn,
                'section': section,
                'findtext': findtext,
                'available_sections': available_sections,
                'manifest_name': manifest_name,
                'manifest_user': username,
                'manifest': manifest,
                'user': request.user,
                'page': 'manifests'
            })

        return render_to_response('manifests/index.html', c)
예제 #12
0
def index(request, manifest_name=None):
    if request.method == 'GET':
        manifest_names = Manifest.list()
        available_sections =   ['catalogs',
                                'included_manifests',
                                'managed_installs',
                                'managed_uninstalls',
                                'managed_updates',
                                'optional_installs']
        section = request.GET.get('section', 'manifest_name')
        findtext = request.GET.get('findtext', '')
        sort = request.GET.get('sort', 'name')

        manifest_list = getManifestInfo(manifest_names)
        username = None
        manifest = None
        
        manifest_list_josn = list()
        for item in manifest_list:
            manifest_list_josn.append(item['name'])
        manifest_list_josn = json.dumps(manifest_list_josn)

        if manifest_name:
            manifest = Manifest.read(manifest_name)
            username = manifest.get(MANIFEST_USERNAME_KEY)
            manifest_name = manifest_name.replace(':', '/')
        c = RequestContext(request,     
            {'manifest_list': manifest_list,
             'manifest_list_josn': manifest_list_josn,
             'section': section,
             'findtext': findtext,
             'available_sections': available_sections,
             'manifest_name': manifest_name,
             'manifest_user': username,
             'manifest': manifest,
             'user': request.user,
             'page': 'manifests'})
        
        return render_to_response('manifests/index.html', c)
예제 #13
0
def index(request, manifest_name=None):
    if request.method == "GET":
        manifest_names = Manifest.list()
        available_sections = [
            "catalogs",
            "included_manifests",
            "managed_installs",
            "managed_uninstalls",
            "managed_updates",
            "optional_installs",
        ]
        section = request.GET.get("section", "manifest_name")
        findtext = request.GET.get("findtext", "")
        # sort = request.GET.get('sort', 'name')
        if findtext:
            filtered_names = []
            if section == "manifest_name":
                for name in manifest_names:
                    basename = os.path.basename(name)
                    if fnmatch.fnmatch(basename, findtext):
                        filtered_names.append(name)
            elif section == "user_name":
                for name in manifest_names:
                    manifest = Manifest.read(name)
                    if manifest:
                        username = manifest.get(MANIFEST_USERNAME_KEY, "")
                        if fnmatch.fnmatch(username, findtext):
                            filtered_names.append(name)
            else:
                for name in manifest_names:
                    manifest = Manifest.read(name)
                    if manifest:
                        for item in manifest.get(section, []):
                            if fnmatch.fnmatch(item, findtext):
                                filtered_names.append(name)
                                break

            manifest_names = filtered_names

        manifest_list = getManifestInfo(manifest_names)
        username = None
        manifest = None

        if manifest_name:
            manifest = Manifest.read(manifest_name)
            username = manifest.get(MANIFEST_USERNAME_KEY)
            manifest_name = manifest_name.replace(":", "/")
        c = RequestContext(
            request,
            {
                "manifest_list": manifest_list,
                "section": section,
                "findtext": findtext,
                "available_sections": available_sections,
                "manifest_name": manifest_name,
                "manifest_user": username,
                "manifest": manifest,
                "user": request.user,
                "page": "manifests",
            },
        )

        return render_to_response("manifests/index.html", c)
예제 #14
0
 def clean_manifest_name(self):
     manifest_names = Manifest.list()
     if self.cleaned_data['manifest_name'] in manifest_names:
         raise forms.ValidationError('Manifest name already exists!')
     return self.cleaned_data['manifest_name']
예제 #15
0
def detail(request, manifest_name):
    if request.method == 'POST':
        if not request.user.has_perm('manifests.change_manifests'):
            return HttpResponse(json.dumps('error'))
        if request.is_ajax():
            json_data = json.loads(request.body)
            if json_data:
                manifest_detail = Manifest.read(manifest_name)
                for key in json_data.keys():
                    manifest_detail[key] = json_data[key]
                Manifest.write(manifest_name, manifest_detail,
                               request.user)
            logger.info("ManifestWrite instigated.")
            return HttpResponse(json.dumps('success'))
    
    if request.method == 'GET':
        if not request.user.has_perm('manifests.can_view_manifests'):
            return HttpResponse(json.dumps('error'))
        manifest = Manifest.read(manifest_name)
        #valid_install_items = Manifest.getValidInstallItems(manifest_name)
        install_items = Manifest.getInstallItemNames(manifest_name)
        valid_install_items =  (install_items['suggested'] + 
                                install_items['updates'] +
                                install_items['with_version'])
        suggested_install_items = install_items['suggested']
        valid_catalogs = Catalog.list()
        valid_manifest_names = Manifest.list()
        autocomplete_data = json.dumps({
            'items': install_items['suggested'],
            'catalogs': valid_catalogs,
            'manifests': valid_manifest_names
        })
        manifest_user = manifest.get(MANIFEST_USERNAME_KEY, '')
        manifest_restriction = manifest.get(MANIFEST_RESTRICTION_KEY, '')
        user_groups = Group.objects.values_list('name', flat=True)
        
        if manifest_restriction:
            manifest_restriction_is_editable = None
            if request.user.is_superuser:
                manifest_restriction_is_editable = 'yes'
            elif request.user.is_staff and 'staff' in manifest_restriction:
                manifest_restriction_is_editable = 'yes'
            else:
                for item in manifest_restriction:
                    if Manifest.can_edit_restricted_manifest(request.user, item):
                        manifest_restriction_is_editable = 'yes'
        else:
            manifest_restriction_is_editable = 'unrestricted'
 
        git_branching_enabled = None
        if GIT_BRANCHING:
            git_branching_enabled = GIT_BRANCHING

        c = RequestContext(request, 
            {'manifest_name': manifest_name.replace(':', '/'),
            'manifest_user': manifest_user,
            'manifest_user_is_editable': MANIFEST_USERNAME_IS_EDITABLE,
            'manifest': manifest,
            'valid_install_items': valid_install_items,
            'install_items': install_items,
            'valid_catalogs': valid_catalogs,
            'valid_manifest_names': valid_manifest_names,
            'autocomplete_data': autocomplete_data,
            'git_branching_enabled': git_branching_enabled,
            'restriction_key': MANIFEST_RESTRICTION_KEY,
            'manifest_restriction': manifest_restriction,
            'manifest_restriction_is_editable': manifest_restriction_is_editable,
            'user_groups': user_groups,
            'user': request.user,
            'page': 'manifests'})
        c.update(csrf(request))
        return render_to_response('manifests/detail.html', c)
예제 #16
0
def old_json_manifest_names(request):
    valid_manifest_names = Manifest.list()
    valid_manifest_names.sort()
    return HttpResponse(json.dumps(valid_manifest_names),
                        mimetype='application/json')
예제 #17
0
 def clean_manifest_name(self):
     manifest_names = Manifest.list()
     if self.cleaned_data['manifest_name'] in manifest_names:
         raise forms.ValidationError('Manifest name already exists!')
     return self.cleaned_data['manifest_name']