コード例 #1
0
ファイル: TagQueriesTests.cs プロジェクト: lordofire/vocadb
        public void Update_Description()
        {
            var updated = new TagContract(tag);

            updated.Description = "mikumikudance.wikia.com/wiki/Miku_Hatsune_Appearance_(Mamama)";

            queries.Update(updated, null);

            Assert.AreEqual(updated.Description, tag.Description, "Description was updated");

            var archivedVersion = repository.List <ArchivedTagVersion>().FirstOrDefault(a => a.Tag.Id == tag.Id);

            Assert.IsNotNull(archivedVersion, "Archived version was created");
            Assert.AreEqual(TagEditableFields.Description, archivedVersion.Diff.ChangedFields, "Changed fields");
        }
コード例 #2
0
ファイル: TagQueriesTests.cs プロジェクト: lordofire/vocadb
        public void Update_Parent_IgnoreSelf()
        {
            var updated = new TagContract(tag);

            updated.Parent = tag.Name;

            queries.Update(updated, null);

            Assert.IsNull(tag.Parent, "Parent");

            var archivedVersion = GetArchivedVersion(tag);

            Assert.IsNotNull(archivedVersion, "Archived version was created");
            Assert.AreEqual(TagEditableFields.Nothing, archivedVersion.Diff.ChangedFields, "Changed fields");
        }
コード例 #3
0
ファイル: TagQueriesTests.cs プロジェクト: lordofire/vocadb
        public void Update_Parent()
        {
            var updated = new TagContract(tag);

            updated.Parent = tag2.Name;

            queries.Update(updated, null);

            Assert.AreEqual(tag2, tag.Parent, "Parent");
            Assert.IsTrue(tag2.Children.Contains(tag), "Parent contains child tag");

            var archivedVersion = GetArchivedVersion(tag);

            Assert.IsNotNull(archivedVersion, "Archived version was created");
            Assert.AreEqual(TagEditableFields.Parent, archivedVersion.Diff.ChangedFields, "Changed fields");
        }
コード例 #4
0
ファイル: TagQueriesTests.cs プロジェクト: lordofire/vocadb
        public void Update_Image()
        {
            var updated = new TagContract(tag);

            using (var stream = TestImage()) {
                queries.Update(updated, new UploadedFileContract {
                    Mime = MediaTypeNames.Image.Jpeg, Stream = stream
                });
            }

            var thumb = new EntryThumb(tag, MediaTypeNames.Image.Jpeg);

            Assert.IsTrue(imagePersister.HasImage(thumb, ImageSize.Original), "Original image was saved");
            Assert.IsTrue(imagePersister.HasImage(thumb, ImageSize.SmallThumb), "Small thumbnail was saved");

            var archivedVersion = GetArchivedVersion(tag);

            Assert.IsNotNull(archivedVersion, "Archived version was created");
            Assert.AreEqual(TagEditableFields.Picture, archivedVersion.Diff.ChangedFields, "Changed fields");
        }
コード例 #5
0
ファイル: TagService.cs プロジェクト: sethura/vocadb
        public void UpdateTag(TagContract contract)
        {
            ParamIs.NotNull(() => contract);

            PermissionContext.VerifyPermission(PermissionToken.ManageDatabase);

            HandleTransaction(session => {
                var tag  = session.Load <Tag>(contract.Name);
                var diff = new TagDiff();

                var oldAliasedTo = tag.AliasedTo != null ? tag.AliasedTo.Name : string.Empty;
                var newAliasedTo = contract.AliasedTo ?? string.Empty;
                if (oldAliasedTo != newAliasedTo)
                {
                    diff.AliasedTo = true;
                    tag.AliasedTo  = session.Query <Tag>().FirstOrDefault(t => t.AliasedTo == null && t.Name == newAliasedTo);
                }

                if (tag.CategoryName != contract.CategoryName)
                {
                    diff.CategoryName = true;
                }

                if (tag.Description != contract.Description)
                {
                    diff.Description = true;
                }

                tag.CategoryName = contract.CategoryName;
                tag.Description  = contract.Description;

                var logStr = string.Format("updated properties for {0} ({1})", tag, diff.ChangedFieldsString);
                AuditLog(logStr, session);
                Archive(session, tag, diff, EntryEditEvent.Updated);

                session.Update(tag);
            });
        }
コード例 #6
0
        public void Update(TagContract contract, UploadedFileContract uploadedImage)
        {
            ParamIs.NotNull(() => contract);

            PermissionContext.VerifyPermission(PermissionToken.ManageDatabase);

            repository.HandleTransaction(ctx => {
                var tag = ctx.Load(contract.Name);

                permissionContext.VerifyEntryEdit(tag);

                var diff = new TagDiff();

                var newAliasedTo = contract.AliasedTo ?? string.Empty;
                if (!Tag.Equals(tag.AliasedTo, contract.AliasedTo))
                {
                    diff.AliasedTo = true;
                    tag.AliasedTo  = GetRealTag(ctx, newAliasedTo, tag);
                }

                if (tag.CategoryName != contract.CategoryName)
                {
                    diff.CategoryName = true;
                }

                if (tag.Description != contract.Description)
                {
                    diff.Description = true;
                }

                if (!Tag.Equals(tag.Parent, contract.Parent))
                {
                    var newParent = GetRealTag(ctx, contract.Parent, tag);

                    if (!Equals(newParent, tag.Parent))
                    {
                        diff.Parent = true;
                        tag.SetParent(newParent);
                    }
                }

                if (tag.Status != contract.Status)
                {
                    diff.Status = true;
                }

                tag.CategoryName = contract.CategoryName;
                tag.Description  = contract.Description;
                tag.Status       = contract.Status;

                if (uploadedImage != null)
                {
                    diff.Picture = true;

                    var thumb          = new EntryThumb(tag, uploadedImage.Mime);
                    tag.Thumb          = thumb;
                    var thumbGenerator = new ImageThumbGenerator(imagePersister);
                    thumbGenerator.GenerateThumbsAndMoveImage(uploadedImage.Stream, thumb, ImageSizes.Original | ImageSizes.SmallThumb, originalSize: 500);
                }

                var logStr = string.Format("updated properties for tag {0} ({1})", entryLinkFactory.CreateEntryLink(tag), diff.ChangedFieldsString);
                ctx.AuditLogger.AuditLog(logStr);
                Archive(ctx, tag, diff, EntryEditEvent.Updated);

                ctx.Update(tag);
            });
        }