예제 #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 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)
예제 #5
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)
예제 #6
0
def getManifestInfo(manifest_names):
    manifest_list = []
    for name in manifest_names:
        m_dict = {}
        m_dict['name'] = name
        manifest = Manifest.read(name)
        m_dict['user'] = manifest.get(MANIFEST_USERNAME_KEY, '')
        manifest_list.append(m_dict) 
    return manifest_list
예제 #7
0
def getManifestInfo(manifest_names):
    manifest_list = []
    for name in manifest_names:
        m_dict = {}
        m_dict['name'] = name
        manifest = Manifest.read(name)
        #m_dict['user'] = manifest.get(MANIFEST_USERNAME_KEY, '')
        manifest_list.append(m_dict)
    return manifest_list
예제 #8
0
파일: views.py 프로젝트: wollardj/mwa2
def detail(request, manifest_path):
    if request.method == 'GET':
        print "Got read request for %s" % manifest_path
        manifest = Manifest.read(manifest_path)
        #autocomplete_data = Manifest.getAutoCompleteData(manifest_path)
        if manifest is None:
            raise Http404("%s does not exist" % manifest_path)
        c = {'plist_text': manifest,
             'pathname': manifest_path}
        return render(request, 'manifests/detail.html', context=c)
    if request.method == 'POST':
        # could be PUT, POST, or DELETE
        if request.META.has_key('HTTP_X_METHODOVERRIDE'):
            http_method = request.META['HTTP_X_METHODOVERRIDE']
            if http_method.lower() == 'delete':
                print "Got delete request for %s" % manifest_path
                if not request.user.has_perm('manifest.delete_manifestfile'):
                    raise PermissionDenied
                Manifest.delete(manifest_path, request.user)
                return HttpResponse(
                    json.dumps('success'), content_type='application/json')
            elif http_method.lower() == 'put':
                # regular POST (update/change)
                print "Got write request for %s" % manifest_path
                if not request.user.has_perm('manifest.change_manifestfile'):
                    raise PermissionDenied
                if request.is_ajax():
                    json_data = json.loads(request.body)
                    if json_data and 'plist_data' in json_data:
                        plist_data = json_data['plist_data'].encode('utf-8')
                        Manifest.write(
                            json_data['plist_data'], manifest_path,
                            request.user)
                        return HttpResponse(
                            json.dumps('success'),
                            content_type='application/json')
            else:
                print "Got unknown HTTP_X_METHODOVERRIDE for %s: %s" % (
                    manifest_path, http_method)
        else:
            # true POST request; create new resource
            print "Got create request for %s" % manifest_path
            try:
                json_data = json.loads(request.body)
            except ValueError:
                json_data = None
            if json_data and 'plist_data' in json_data:
                plist_data = json_data['plist_data'].encode('utf-8')
                Manifest.write(
                    json_data['plist_data'], manifest_path,
                    request.user)
            else:
                plist_data = Manifest.new(manifest_path, request.user)
            c = {'plist_text': plist_data,
                 'pathname': manifest_path,}
            return render(request, 'manifests/detail.html', context=c)
예제 #9
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)
예제 #10
0
def detail(request, manifest_path):
    if request.method == 'GET':
        print "Got read request for %s" % manifest_path
        manifest = Manifest.read(manifest_path)
        #autocomplete_data = Manifest.getAutoCompleteData(manifest_path)
        if manifest is None:
            raise Http404("%s does not exist" % manifest_path)
        c = {'plist_text': manifest, 'pathname': manifest_path}
        return render(request, 'manifests/detail.html', context=c)
    if request.method == 'POST':
        # could be PUT, POST, or DELETE
        if request.META.has_key('HTTP_X_METHODOVERRIDE'):
            http_method = request.META['HTTP_X_METHODOVERRIDE']
            if http_method.lower() == 'delete':
                print "Got delete request for %s" % manifest_path
                if not request.user.has_perm('manifest.delete_manifestfile'):
                    raise PermissionDenied
                Manifest.delete(manifest_path, request.user)
                return HttpResponse(json.dumps('success'),
                                    content_type='application/json')
            elif http_method.lower() == 'put':
                # regular POST (update/change)
                print "Got write request for %s" % manifest_path
                if not request.user.has_perm('manifest.change_manifestfile'):
                    raise PermissionDenied
                if request.is_ajax():
                    json_data = json.loads(request.body)
                    if json_data and 'plist_data' in json_data:
                        plist_data = json_data['plist_data'].encode('utf-8')
                        Manifest.write(json_data['plist_data'], manifest_path,
                                       request.user)
                        return HttpResponse(json.dumps('success'),
                                            content_type='application/json')
            else:
                print "Got unknown HTTP_X_METHODOVERRIDE for %s: %s" % (
                    manifest_path, http_method)
        else:
            # true POST request; create new resource
            print "Got create request for %s" % manifest_path
            try:
                json_data = json.loads(request.body)
            except ValueError:
                json_data = None
            if json_data and 'plist_data' in json_data:
                plist_data = json_data['plist_data'].encode('utf-8')
                Manifest.write(json_data['plist_data'], manifest_path,
                               request.user)
            else:
                plist_data = Manifest.new(manifest_path, request.user)
            c = {
                'plist_text': plist_data,
                'pathname': manifest_path,
            }
            return render(request, 'manifests/detail.html', context=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
        
        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)
예제 #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')

        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)
예제 #14
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)
예제 #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)