Restricting large attachments in Quality Center

Once your Quality Center users discover that they can add attachments to defects (and test cases, and test sets etc etc), your storage requirements increase dramatically. Here is a neat way to prevent your users from attaching files over a certain size anywhere in Quality Center.

A client had a requirement to reduce the use of QC attachment storage as a lot of users are using up a lot of space unnecessarily. In one instance I found over 80GB of file space taken up with a 100MB file endlessly repeated. The attachment was on a “template” test and the users had duplicated it whenever they copied and pasted the “template”

I had to get this working today so investigated the attachment object and found it has some hooks so we could get it working quite simply.

The “Attachment” object available in the sub can give you access to the “CR_ENTITY” it is linked to. This gives us ALL the areas where a user can create an attachment. From there it was simply trial and error until I had the attachment record (attRec) described correctly for each “CR_ENTITY”.

The code goes directly into the QC workflow Common scripts area and replaces the existing Sub “Attachment_New”.


Sub Attachment_New(Attachment)   'Use ActiveModule and ActiveDialogName to get the current context.   On Error Resume Next       'Remove new attachment if file size is too big     If Attachment.Type = 1 then 'Attachment is of type TDATT_FILE - a file.        MaxFileSize = 3145728 'Set the maximum attachment size in Bytes <<- 3mb is our limit!        If Attachment.FileSize > MaxFileSize then           Select Case Attachment.Field("CR_ENTITY")                  'Requirement                  Case "REQ"                       Set attRec = ReqFactory.Item(Attachment.Field("CR_KEY_1"))                  'TestPlan                  Case "ALL_LISTS" 'Folder                       Set attRec = TreeManager.NodeByID(Attachment.Field("CR_KEY_1"))                       msgbox attRec.ID                  Case "TEST" ' Test                       Set attRec = TestFactory.Item(Attachment.Field("CR_KEY_1"))                  Case "DESSTEPS" 'Test step                       Set attTest = TestFactory.Item(Test_Fields("DS_TEST_ID").Value)                       Set attRec = attTest.DesignStepFactory.Item(Attachment.Field("CR_KEY_1"))                  'TestLab                  Case "CYCL_FOLD" 'Folder                       Set attRec = TestSetTreeManager.NodeById(Attachment.Field("CR_KEY_1"))                  Case "CYCLE" 'Test Set                       Set attRec = TestSetFactory.Item(Attachment.Field("CR_KEY_1"))                  Case "TESTCYCL" 'TestInstance                       Set attRec = TSTestFactory.Item(Attachment.Field("CR_KEY_1"))                  Case "RUN" 'Run                       Set attRec = RunFactory.Item(Attachment.Field("CR_KEY_1"))                  Case "STEP"  'Run Step                       Set attRun = RunFactory.Item(Step_Fields("ST_RUN_ID").Value)                       Set attRec = attRun.StepFactory.Item(Attachment.Field("CR_KEY_1"))                  'Defects                  Case "BUG"                       Set attRec = BugFactory.Item(Attachment.Field("CR_KEY_1"))           End Select           set AttFac = attRec.Attachments           Msgbox "Please exit this record and refresh the QC page. The file: " & vbLF & _                  Attachment.Name & vbLf & " has been removed as it exceeds the required file size of 3mb."           AttFac.RemoveItem(Attachment.ID)        End If     End If     On Error GoTo 0 End Sub



SOURCE : JDS Australia Website

Comments

Popular Posts