public DeletePackageViewModel(Package package, ReportPackageReason[] reportOtherPackageReasons)
     : base(package)
 {
     DeletePackagesRequest = new DeletePackagesRequest
     {
         Packages = new List<string> { string.Format(CultureInfo.InvariantCulture, "{0}|{1}", package.PackageRegistration.Id, package.Version) },
         ReasonChoices = reportOtherPackageReasons
     };
 }
 public DeletePackageViewModel(Package package, ReportPackageReason[] reportOtherPackageReasons)
     : base(package)
 {
     DeletePackagesRequest = new DeletePackagesRequest
     {
         Packages = new List <string> {
             string.Format(CultureInfo.InvariantCulture, "{0}|{1}", package.PackageRegistration.Id, package.Version)
         },
         ReasonChoices = reportOtherPackageReasons
     };
 }
Ejemplo n.º 3
0
        public virtual async Task <ActionResult> Delete(DeletePackagesRequest deletePackagesRequest)
        {
            var packagesToDelete = new List <Package>();

            if (ModelState.IsValid)
            {
                // Get the packages to delete
                foreach (var package in deletePackagesRequest.Packages)
                {
                    var split = package.Split(new[] { '|' }, StringSplitOptions.RemoveEmptyEntries);
                    if (split.Length == 2)
                    {
                        var packageToDelete = _packageService.FindPackageByIdAndVersion(split[0], split[1], allowPrerelease: true);
                        if (packageToDelete != null)
                        {
                            packagesToDelete.Add(packageToDelete);
                        }
                    }
                }

                // Perform delete
                if (deletePackagesRequest.SoftDelete)
                {
                    await _packageDeleteService.SoftDeletePackagesAsync(
                        packagesToDelete, GetCurrentUser(), EnumHelper.GetDescription(deletePackagesRequest.Reason.Value),
                        deletePackagesRequest.Signature);
                }
                else
                {
                    await _packageDeleteService.HardDeletePackagesAsync(
                        packagesToDelete, GetCurrentUser(), EnumHelper.GetDescription(deletePackagesRequest.Reason.Value),
                        deletePackagesRequest.Signature,
                        deletePackagesRequest.DeleteEmptyPackageRegistration);
                }

                // Redirect out
                TempData["Message"] =
                    "We're performing the package delete right now. It may take a while for this change to propagate through our system.";

                return(Redirect("/"));
            }

            if (!deletePackagesRequest.Packages.Any())
            {
                return(HttpNotFound());
            }

            var firstPackage = packagesToDelete.First();

            return(Delete(firstPackage.PackageRegistration.Id, firstPackage.Version));
        }
Ejemplo n.º 4
0
 public DeletePackageViewModel(Package package, IReadOnlyList <ReportPackageReason> reasons)
     : base(package, package.PackageRegistration.Packages.OrderByDescending(p => new NuGetVersion(p.Version)))
 {
     DeletePackagesRequest = new DeletePackagesRequest
     {
         Packages = new List <string>
         {
             string.Format(
                 CultureInfo.InvariantCulture,
                 "{0}|{1}",
                 package.PackageRegistration.Id,
                 package.Version)
         },
         ReasonChoices = reasons
     };
 }
        public DeletePackageViewModel(Package package, User currentUser, IReadOnlyList <ReportPackageReason> reasons)
            : base(package, currentUser, null)
        {
            DeletePackagesRequest = new DeletePackagesRequest
            {
                Packages = new List <string>
                {
                    string.Format(
                        CultureInfo.InvariantCulture,
                        "{0}|{1}",
                        package.PackageRegistration.Id,
                        package.Version)
                },
                ReasonChoices = reasons
            };

            IsLocked = package.PackageRegistration.IsLocked;
        }
Ejemplo n.º 6
0
        public ManagePackageViewModel(Package package, User currentUser, IReadOnlyList <ReportPackageReason> reasons, UrlHelper url, string readMe, bool isManageDeprecationEnabled)
            : base(package, currentUser)
        {
            IsCurrentUserAnAdmin = currentUser != null && currentUser.IsAdministrator;

            DeletePackagesRequest = new DeletePackagesRequest
            {
                Packages = new List <string>
                {
                    string.Format(
                        CultureInfo.InvariantCulture,
                        "{0}|{1}",
                        package.PackageRegistration.Id,
                        package.Version)
                },
                ReasonChoices = reasons
            };

            IsLocked = package.PackageRegistration.IsLocked;

            IsManageDeprecationEnabled = isManageDeprecationEnabled;

            var versionSelectPackages = package.PackageRegistration.Packages
                                        .Where(p => p.PackageStatusKey == PackageStatus.Available || p.PackageStatusKey == PackageStatus.Validating)
                                        .OrderByDescending(p => new NuGetVersion(p.Version))
                                        .ToList();

            VersionSelectList                 = new List <SelectListItem>();
            VersionListedStateDictionary      = new Dictionary <string, VersionListedState>();
            VersionReadMeStateDictionary      = new Dictionary <string, VersionReadMeState>();
            VersionDeprecationStateDictionary = new Dictionary <string, VersionDeprecationState>();

            var submitUrlTemplate    = url.PackageVersionActionTemplate("Edit");
            var getReadMeUrlTemplate = url.PackageVersionActionTemplate("GetReadMeMd");

            foreach (var versionSelectPackage in versionSelectPackages)
            {
                var text  = PackageHelper.GetSelectListText(versionSelectPackage);
                var value = NuGetVersionFormatter.Normalize(versionSelectPackage.Version);
                VersionSelectList.Add(new SelectListItem
                {
                    Text     = text,
                    Value    = value,
                    Selected = package == versionSelectPackage
                });

                VersionListedStateDictionary.Add(
                    value,
                    new VersionListedState(versionSelectPackage));

                var model = new TrivialPackageVersionModel(versionSelectPackage);
                VersionReadMeStateDictionary.Add(
                    value,
                    new VersionReadMeState(
                        submitUrlTemplate.Resolve(model),
                        getReadMeUrlTemplate.Resolve(model),
                        null));

                VersionDeprecationStateDictionary.Add(
                    value,
                    new VersionDeprecationState(versionSelectPackage, text));
            }

            // Update edit model with the readme.md data.
            ReadMe = new EditPackageVersionReadMeRequest();
            if (package.HasReadMe)
            {
                ReadMe.ReadMe.SourceType = ReadMeService.TypeWritten;
                ReadMe.ReadMe.SourceText = readMe;
            }
        }
Ejemplo n.º 7
0
        public virtual async Task<ActionResult> Delete(DeletePackagesRequest deletePackagesRequest)
        {
            var packagesToDelete = new List<Package>();

            if (ModelState.IsValid)
            {
                // Get the packages to delete
                foreach (var package in deletePackagesRequest.Packages)
                {
                    var split = package.Split(new[] {'|'}, StringSplitOptions.RemoveEmptyEntries);
                    if (split.Length == 2)
                    {
                        var packageToDelete = _packageService.FindPackageByIdAndVersion(split[0], split[1], allowPrerelease: true);
                        if (packageToDelete != null)
                        {
                            packagesToDelete.Add(packageToDelete);
                        }
                    }
                }

                // Perform delete
                if (deletePackagesRequest.SoftDelete)
                {
                    await _packageDeleteService.SoftDeletePackagesAsync(
                        packagesToDelete, GetCurrentUser(), EnumHelper.GetDescription(deletePackagesRequest.Reason.Value),
                        deletePackagesRequest.Signature);
                }
                else
                {
                    await _packageDeleteService.HardDeletePackagesAsync(
                        packagesToDelete, GetCurrentUser(), EnumHelper.GetDescription(deletePackagesRequest.Reason.Value),
                        deletePackagesRequest.Signature,
                        deletePackagesRequest.DeleteEmptyPackageRegistration);
                }

                // Redirect out
                TempData["Message"] = 
                    "We're performing the package delete right now. It may take a while for this change to propagate through our system.";
                
                return Redirect("/");
            }

            if (!deletePackagesRequest.Packages.Any())
            {
                return HttpNotFound();
            }

            var firstPackage = packagesToDelete.First();
            return Delete(firstPackage.PackageRegistration.Id, firstPackage.Version);
        }