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')
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')
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 \ )
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 \ )