Ejemplo n.º 1
0
	def remove(self, package_id, list_id, confirm=None):
		""" Create a command to remove a package from the repository """
		if not userinfo.is_admin():
			controller.http_error(403)
		package_id	= long(package_id)
		list_id = long(list_id)
		package = Package.query.filter_by(id = package_id).first()
		packagelist = PackageList.query.filter_by(id = list_id).first()
		if not package:
			return "Package %d not found" % package_id
		if not packagelist:
			return "List %d not found" % list_id
		if confirm != "Y":
			return template.render("package_remove.html" \
				, package = package, packagelist = packagelist)
		source_package = package.source or package.package
		user = userinfo.find_user()
		action = "%s %s %s %s %s" % (user.email, 'remove' \
			, packagelist.suite, source_package, package.version)

		time_now = time.strftime("%Y%m%d.%H%M%S", time.localtime())
		filename = "%s_%s_%s" % (source_package, package.version, time_now)
		full_repos_cmd_dir  = os.path.join(apt_portal.base_dir, '..', repos_commands_dir)
		if not os.path.isdir(full_repos_cmd_dir):
			return "%s directory is not available, " \
				"repository commands are not supported" % \
				full_repos_cmd_dir
		os.umask(002)
		f = open(os.path.join(full_repos_cmd_dir, filename), 'w')
		os.umask(022)
		f.write(action)
		f.close()
		return template.render("package_remove.html" \
			, ticket_name = filename, confirm='Y')
Ejemplo n.º 2
0
    def remove(self, package_id, list_id, confirm=None):
        """ Create a command to remove a package from the repository """
        if not userinfo.is_admin():
            controller.http_error(403)
        package_id = long(package_id)
        list_id = long(list_id)
        package = Package.query.filter_by(id=package_id).first()
        packagelist = PackageList.query.filter_by(id=list_id).first()
        if not package:
            return "Package %d not found" % package_id
        if not packagelist:
            return "List %d not found" % list_id
        if confirm != "Y":
            return template.render("package_remove.html" \
             , package = package, packagelist = packagelist)
        source_package = package.source or package.package
        user = userinfo.find_user()
        action = "%s %s %s %s %s" % (user.email, 'remove' \
         , packagelist.suite, source_package, package.version)

        time_now = time.strftime("%Y%m%d.%H%M%S", time.localtime())
        filename = "%s_%s_%s" % (source_package, package.version, time_now)
        full_repos_cmd_dir = os.path.join(apt_portal.base_dir, '..',
                                          repos_commands_dir)
        if not os.path.isdir(full_repos_cmd_dir):
            return "%s directory is not available, " \
             "repository commands are not supported" % \
             full_repos_cmd_dir
        os.umask(002)
        f = open(os.path.join(full_repos_cmd_dir, filename), 'w')
        os.umask(022)
        f.write(action)
        f.close()
        return template.render("package_remove.html" \
         , ticket_name = filename, confirm='Y')
Ejemplo n.º 3
0
    def copy(self, package_id, source_list_id, target_list):
        """ Create a command to copy a package to another repository """
        if not userinfo.is_admin():
            controller.http_error(403)

        package_id = long(package_id)
        source_list_id = long(source_list_id)
        package = Package.query.filter_by(id=package_id).first()
        source_packagelist = PackageList.query.filter_by(
            id=source_list_id).first()
        target_packagelist = PackageList.query.filter_by(
            suite=target_list).first()
        if not package:
            return "Package %d not found" % package_id
        if not source_packagelist:
            return "List %d not found" % list_id
        if target_list and not target_packagelist:
            return "Repository %s not found" % target_list
        repository_list = []
        for plist in PackageList.query.all():
            if plist.suite == source_packagelist.suite:
                continue
            if (plist.suite not in repository_list) and (plist.suite >= "t"):
                repository_list.append(plist.suite)
        if len(target_list) < 2:
            return template.render("package_copy.html" \
             , package = package \
             , source_packagelist = source_packagelist \
             , target_packagelist = target_packagelist \
             , repository_list = repository_list \
             , package_id = package_id \
             , source_list_id = source_list_id \
             , target_list = target_list \
             , asking = True \
             )
        source_package = package.source or package.package
        user = userinfo.find_user()
        action = "%s %s %s %s %s %s" % (user.email, 'copy' \
         , target_packagelist.suite, source_packagelist.suite, source_package, package.version)

        time_now = time.strftime("%Y%m%d.%H%M%S", time.localtime())
        filename = "%s_%s_%s" % (source_package, package.version, time_now)
        full_repos_cmd_dir = os.path.join(apt_portal.base_dir, '..',
                                          repos_commands_dir)
        if not os.path.isdir(full_repos_cmd_dir):
            return "%s directory is not available, " \
             "repository commands are not supported" % \
             full_repos_cmd_dir
        os.umask(002)
        f = open(os.path.join(full_repos_cmd_dir, filename), 'w')
        os.umask(022)
        f.write(action)
        f.close()
        return template.render("package_copy.html" \
         , ticket_name = filename \
         , asking = False \
         )
Ejemplo n.º 4
0
	def copy(self, package_id, source_list_id, target_list):
		""" Create a command to copy a package to another repository """
		if not userinfo.is_admin():
			controller.http_error(403)

		package_id	= long(package_id)
		source_list_id = long(source_list_id)
		package = Package.query.filter_by(id = package_id).first()
		source_packagelist = PackageList.query.filter_by(id = source_list_id).first()
		target_packagelist = PackageList.query.filter_by(suite = target_list).first()
		if not package:
			return "Package %d not found" % package_id
		if not source_packagelist:
			return "List %d not found" % list_id
		if target_list and not target_packagelist:
			return "Repository %s not found" % target_list
		repository_list = []
		for plist in PackageList.query.all():
			if plist.suite == source_packagelist.suite:
				continue
			if ( plist.suite not in repository_list ) and ( plist.suite >= "t" ):
				repository_list.append(plist.suite)
		if len(target_list) < 2:
			return template.render("package_copy.html" \
				, package = package \
				, source_packagelist = source_packagelist \
				, target_packagelist = target_packagelist \
				, repository_list = repository_list \
				, package_id = package_id \
				, source_list_id = source_list_id \
				, target_list = target_list \
				, asking = True \
				)
		source_package = package.source or package.package
		user = userinfo.find_user()
		action = "%s %s %s %s %s %s" % (user.email, 'copy' \
			, target_packagelist.suite, source_packagelist.suite, source_package, package.version)

		time_now = time.strftime("%Y%m%d.%H%M%S", time.localtime())
		filename = "%s_%s_%s" % (source_package, package.version, time_now)
		full_repos_cmd_dir  = os.path.join(apt_portal.base_dir, '..', repos_commands_dir)
		if not os.path.isdir(full_repos_cmd_dir):
			return "%s directory is not available, " \
				"repository commands are not supported" % \
				full_repos_cmd_dir
		os.umask(002)
		f = open(os.path.join(full_repos_cmd_dir, filename), 'w')
		os.umask(022)
		f.write(action)
		f.close()
		return template.render("package_copy.html" \
			, ticket_name = filename \
			, asking = False \
			)