Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/configuration/update/__init__.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/configuration/update/__init__.py	(revision 2834)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/configuration/update/__init__.py	(working copy)
@@ -1,7 +1,7 @@
 import datetime
 
 from apscheduler.schedulers.background import BackgroundScheduler
-from django.db.models.query import QuerySet
+from hive.model.query import QuerySet, mark_expire_all
 from django.utils.translation import gettext_lazy as _
 
 from cm.lib.postgres_db import DB
@@ -88,13 +88,13 @@
             for item in result:
                 file_size = item['file_size']
                 if file_size < 1024:
-                    item['file_size'] = str(file_size)
+                    item['file_size'] = str(file_size) + 'B'
                 elif file_size < 1024 * 1024:
-                    item['file_size'] = str(file_size / 1024) + 'KB'
+                    item['file_size'] = "%.2f" % (file_size / 1024.0) + 'KB'
                 elif file_size < 1024 * 1024 * 1024:
-                    item['file_size'] = str(file_size / 1024 / 1024) + 'MB'
+                    item['file_size'] = "%.2f" % (file_size / 1024.0 / 1024.0) + 'MB'
                 else:
-                    item['file_size'] = str(file_size / 1024 / 1024 / 1024) + 'GB'
+                    item['file_size'] = "%.2f" % (file_size / 1024.0 / 1024.0 / 1024.0) + 'GB'
             return QuerySet(self._model, result)
 
         def _update_md5_value(self, instance):
@@ -168,7 +168,7 @@
             # print 'action update ', options, options['using'].values()[0], options['__pk_list'][0]['id']
             # print options['using']
             if 'local' in options['using']:
-                tmp_file = options['using'].values()[0]
+                tmp_file = list(options['using'].values())[0]
                 tmp_file = FILE_UPLOAD_DIR + os.path.basename(tmp_file)
                 file_size = os.path.getsize(tmp_file)
                 file_md5 = get_file_md5(tmp_file)
@@ -229,7 +229,7 @@
             # devices = options['devices']
             device_list = []
             if 'group' in options['devices']:
-                group_list = options['devices'].values()[0]
+                group_list = list(options['devices'].values())[0]
                 db = DB.get_connected_db()
                 for group in group_list:
                     select_sql = "SELECT name FROM device WHERE device_group = '%s'" % group
@@ -241,7 +241,7 @@
                         device_list += each_device_list
                 db.close()
             elif 'device' in options['devices']:
-                device_list = options['devices'].values()[0]
+                device_list = list(options['devices'].values())[0]
 
             for device in device_list:
                 time.sleep(1)
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.html	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.html	(working copy)
@@ -15,8 +15,7 @@
       </svg>
       }
     </div>
-    <span class="message">
-      {{ data.message }}
+    <span class="message" [innerHTML]="safeMessage">
     </span>
   </div>
   <button class="dismiss-btn" (click)="dismiss()" aria-label="Dismiss notification">
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.ts	(revision 2834)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/common/app-notification/app-notification.ts	(working copy)
@@ -1,6 +1,7 @@
-import {Component, Inject} from '@angular/core';
-import {MAT_SNACK_BAR_DATA, MatSnackBarRef} from '@angular/material/snack-bar';
-import {SharedModule} from '../../../shared/shared-module';
+import { Component, Inject } from '@angular/core';
+import { MAT_SNACK_BAR_DATA, MatSnackBarRef } from '@angular/material/snack-bar';
+import { DomSanitizer, SafeHtml } from '@angular/platform-browser';
+import { SharedModule } from '../../../shared/shared-module';
 
 @Component({
   selector: 'app-app-notification',
@@ -10,10 +11,14 @@
 })
 export class AppNotification {
 
+  safeMessage: SafeHtml;
 
   constructor(
     @Inject(MAT_SNACK_BAR_DATA) public data: { message: string; type: 'success' | 'error' },
-    private snackBarRef: MatSnackBarRef<AppNotification>) {
+    private snackBarRef: MatSnackBarRef<AppNotification>,
+    private sanitizer: DomSanitizer
+  ) {
+    this.safeMessage = this.sanitizer.bypassSecurityTrustHtml(this.data.message);
   }
 
   dismiss() {
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-devices/avx-devices.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-devices/avx-devices.scss	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-devices/avx-devices.scss	(working copy)
@@ -41,6 +41,17 @@
   }
 }
 
+// Table Container for Scroll
+.table-container {
+  overflow-x: auto;
+  width: 100%;
+  max-width: 100%; // Prevent expanding beyond parent
+
+  table {
+    min-width: 1000px; // Force scroll on small screens
+  }
+}
+
 // Modern Table Styles
 .modern-table {
   width: 100%;
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instances/avx-va-instances.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instances/avx-va-instances.scss	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/avx-va-instances/avx-va-instances.scss	(working copy)
@@ -41,6 +41,17 @@
     }
 }
 
+// Table Container for Scroll
+.table-container {
+    overflow-x: auto;
+    width: 100%;
+    max-width: 100%; // Prevent expanding beyond parent in flex layouts
+
+    table {
+        min-width: 1000px; // Force scroll on small screens
+    }
+}
+
 // Modern Table Styles
 .modern-table {
     width: 100%;
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/devices/devices.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/devices/devices.scss	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/sub-components/devices/devices.scss	(working copy)
@@ -49,8 +49,12 @@
   border: 1px solid #e0e0e0;
   border-radius: 4px;
   margin-top: 0;
+  overflow-x: auto; // Content scroll
+  width: 100%; // Ensure container takes correct width
+  max-width: 100%; // Prevent expanding beyond parent
 
   table.an-table {
+    min-width: 1000px; // Force scroll on small screens
     width: 100%;
 
     th.mat-header-cell {
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upgrade-centre.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upgrade-centre.html	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upgrade-centre.html	(working copy)
@@ -1,64 +1,87 @@
-<mat-card class="page-card-1" appearance="filled">
-  <mat-card-header>
-    <mat-card-title>Upgrade Centre</mat-card-title>
-    <div>
-      <button mat-raised-button (click)="addBuild()">Add</button>
-    </div>
-  </mat-card-header>
-</mat-card>
-<div class="table-container">
-  <table mat-table [dataSource]="dataSource" class="mat-elevation-z1">
-    <ng-container matColumnDef="serial">
-      <th mat-header-cell *matHeaderCellDef> No.</th>
-      <td mat-cell *matCellDef="let element; let i = index;"> {{ i | globalSerial }}</td>
-    </ng-container>
-    <ng-container matColumnDef="buildName">
-      <th mat-header-cell *matHeaderCellDef> Build Name</th>
-      <td mat-cell *matCellDef="let element">{{element?.app_name}}</td>
-    </ng-container>
-    <ng-container matColumnDef="version">
-      <th mat-header-cell *matHeaderCellDef> Version</th>
-      <td mat-cell *matCellDef="let element">{{element?.build_version}}</td>
-    </ng-container>
-    <ng-container matColumnDef="md5">
-      <th mat-header-cell *matHeaderCellDef> MD5</th>
-      <td mat-cell *matCellDef="let element">
-        <a class="details-page-link" (click)="updateMD5(element)">
-          {{ element?.md5_value }}
-        </a>
-      </td>
-    </ng-container>
-    <ng-container matColumnDef="size">
-      <th mat-header-cell *matHeaderCellDef> File size</th>
-      <td mat-cell *matCellDef="let element"> {{ element?.file_size }}</td>
-    </ng-container>
-    <ng-container matColumnDef="downLink">
-      <th mat-header-cell *matHeaderCellDef> Download Link</th>
-      <td mat-cell *matCellDef="let element"> {{ element?.download_link }}</td>
-    </ng-container>
-    <ng-container matColumnDef="action">
-      <th mat-header-cell *matHeaderCellDef> Action</th>
-      <td mat-cell *matCellDef="let element">
-        <div class="row-action a-link">
-          <fa-icon [icon]="['far', 'circle-up']" size="lg" matTooltip="Upload Build"
-            (click)="uploadBuild(element)"></fa-icon>
-          <fa-icon [icon]="['fas', 'gears']" size="lg" matTooltip="System Update"
-            (click)="systemUpdate(element)"></fa-icon>
-          <fa-icon [icon]="['far', 'trash-can']" size="lg" class="delete-icon" matTooltip="Remove Build"
-            (click)="deleteBuild(element)"></fa-icon>
-        </div>
-      </td>
-    </ng-container>
-    <tr mat-header-row *matHeaderRowDef="buildColumns"></tr>
-    <tr mat-row *matRowDef="let row; columns: buildColumns;"></tr>
-    <tr class="mat-row" *matNoDataRow>
-      <td class="mat-cell no-data-cell" colspan="10">
-        <div class="no-data-content">
-          <fa-icon [icon]="['far', 'chart-bar']"></fa-icon>
-          <span>No data available</span>
-        </div>
-      </td>
-    </tr>
-  </table>
-  <mat-paginator [pageSizeOptions]="[10, 15, 20, 25]" [length]="totalRecords" showFirstLastButtons></mat-paginator>
+<div class="avx-page-container">
+
+  <!-- Header Card with Title and Action -->
+  <mat-card class="page-card-1" appearance="outlined">
+    <mat-card-header>
+      <mat-card-title>Upgrade Centre</mat-card-title>
+      <div class="action-bar">
+        <button mat-flat-button color="primary" (click)="addBuild()">
+          <fa-icon [icon]="['fas', 'plus']"></fa-icon> Add Build
+        </button>
+      </div>
+    </mat-card-header>
+  </mat-card>
+
+  <!-- Table Card -->
+  <mat-card class="page-card-1" appearance="outlined">
+    <mat-card-content>
+      <div class="table-scroll-container">
+        <table mat-table [dataSource]="dataSource" class="mat-elevation-z0 modern-table">
+          <ng-container matColumnDef="serial">
+            <th mat-header-cell *matHeaderCellDef> No. </th>
+            <td mat-cell *matCellDef="let element; let i = index;"> {{ i | globalSerial }} </td>
+          </ng-container>
+
+          <ng-container matColumnDef="buildName">
+            <th mat-header-cell *matHeaderCellDef> Build Name </th>
+            <td mat-cell *matCellDef="let element"> {{element?.app_name}} </td>
+          </ng-container>
+
+          <ng-container matColumnDef="version">
+            <th mat-header-cell *matHeaderCellDef> Version </th>
+            <td mat-cell *matCellDef="let element"> {{element?.build_version}} </td>
+          </ng-container>
+
+          <ng-container matColumnDef="md5">
+            <th mat-header-cell *matHeaderCellDef> MD5 </th>
+            <td mat-cell *matCellDef="let element">
+              <a class="details-page-link" (click)="updateMD5(element)">
+                {{ element?.md5_value }}
+              </a>
+            </td>
+          </ng-container>
+
+          <ng-container matColumnDef="size">
+            <th mat-header-cell *matHeaderCellDef> File Size </th>
+            <td mat-cell *matCellDef="let element"> {{ element?.file_size }} </td>
+          </ng-container>
+
+          <ng-container matColumnDef="downLink">
+            <th mat-header-cell *matHeaderCellDef> Download Link </th>
+            <td mat-cell *matCellDef="let element"> {{ element?.download_link }} </td>
+          </ng-container>
+
+          <ng-container matColumnDef="action">
+            <th mat-header-cell *matHeaderCellDef> Action </th>
+            <td mat-cell *matCellDef="let element">
+              <div class="row-action">
+                <button mat-icon-button (click)="uploadBuild(element)" matTooltip="Upload Build">
+                  <fa-icon [icon]="['fas', 'cloud-arrow-up']" class="primary-icon"></fa-icon>
+                </button>
+                <button mat-icon-button (click)="systemUpdate(element)" matTooltip="System Update">
+                  <fa-icon [icon]="['fas', 'gears']" class="primary-icon"></fa-icon>
+                </button>
+                <button mat-icon-button (click)="deleteBuild(element)" matTooltip="Remove Build">
+                  <fa-icon [icon]="['far', 'trash-can']" class="delete-icon"></fa-icon>
+                </button>
+              </div>
+            </td>
+          </ng-container>
+
+          <tr mat-header-row *matHeaderRowDef="buildColumns"></tr>
+          <tr mat-row *matRowDef="let row; columns: buildColumns;"></tr>
+
+          <tr class="mat-row" *matNoDataRow>
+            <td class="mat-cell no-data-cell" colspan="7">
+              <div class="no-data-content">
+                <fa-icon [icon]="['far', 'chart-bar']"></fa-icon>
+                <span>No data available</span>
+              </div>
+            </td>
+          </tr>
+        </table>
+      </div>
+      <mat-paginator [pageSizeOptions]="[10, 15, 20, 25]" [length]="totalRecords" showFirstLastButtons></mat-paginator>
+    </mat-card-content>
+  </mat-card>
 </div>
\ No newline at end of file
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upgrade-centre.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upgrade-centre.scss	(revision 2834)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upgrade-centre.scss	(working copy)
@@ -0,0 +1,166 @@
+// Page Container
+.avx-page-container {
+    display: flex;
+    flex-direction: column;
+    gap: 16px;
+    padding: 16px;
+    background-color: transparent;
+}
+
+// Action Bar
+.action-bar {
+    display: flex;
+    justify-content: flex-end;
+
+    button {
+        font-weight: 500;
+        border-radius: 4px;
+        /* Slightly softer corners */
+    }
+}
+
+// Card Styles
+.page-card-1 {
+    width: 100%;
+    border-radius: 8px;
+    background-color: var(--surface-bg); // Theme-aware
+    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
+
+    mat-card-header {
+        background-color: transparent;
+        border-bottom: 1px solid var(--border-color);
+        padding: 16px;
+        display: flex;
+        justify-content: space-between;
+        align-items: center;
+
+        mat-card-title {
+            font-size: 16px;
+            font-weight: 600;
+            color: var(--primary-color);
+            margin-bottom: 0;
+        }
+    }
+
+    mat-card-content {
+        padding: 0;
+    }
+}
+
+// Modern Table Styles
+.modern-table {
+    width: 100%;
+
+    th.mat-header-cell {
+        font-size: 13px;
+        font-weight: 600;
+        color: var(--text-secondary);
+        background-color: var(--table-header-bg);
+        border-bottom: 1px solid var(--border-color);
+        padding: 16px;
+        text-transform: uppercase;
+        letter-spacing: 0.5px;
+    }
+
+    td.mat-cell {
+        font-size: 13px;
+        color: var(--text-primary);
+        padding: 12px 16px;
+        border-bottom: 1px solid var(--border-color);
+    }
+
+    tr.mat-row:hover {
+        background-color: var(--table-hover);
+    }
+
+    // Link styling
+    .details-page-link {
+        color: var(--primary-color);
+        font-weight: 500;
+        cursor: pointer;
+        text-decoration: none;
+        transition: color 0.2s ease;
+
+        &:hover {
+            text-decoration: underline;
+            color: var(--primary-dark);
+        }
+    }
+}
+
+
+// Action Buttons & Icons
+.row-action {
+    display: flex;
+    gap: 8px;
+    /* Consistent spacing */
+    align-items: center;
+
+    button {
+        width: 32px;
+        height: 32px;
+        line-height: 32px;
+
+        fa-icon {
+            font-size: 16px;
+        }
+    }
+}
+
+// Semantic Icon Classes
+.delete-icon {
+    color: var(--warn-color);
+}
+
+.success-icon {
+    color: var(--success-color);
+}
+
+.primary-icon {
+    color: var(--primary-color);
+}
+
+// No data row
+.table-no-data {
+    text-align: center;
+    font-style: italic;
+    color: var(--text-secondary);
+    height: 48px;
+}
+
+.no-data-cell {
+    text-align: center;
+    padding: 48px 0;
+    color: var(--text-secondary);
+    border-bottom: none;
+
+    .no-data-content {
+        display: flex;
+        flex-direction: column;
+        align-items: center;
+        gap: 12px;
+        opacity: 0.6;
+
+        fa-icon {
+            font-size: 48px;
+            margin-bottom: 8px;
+        }
+
+        span {
+            font-size: 16px;
+            font-weight: 500;
+        }
+    }
+}
+
+// Table Scroll Container
+.table-scroll-container {
+    overflow-x: auto;
+    width: 100%;
+    max-width: 100%;
+
+    // Ensure table behaves correctly inside
+    table {
+        min-width: 800px; // ensure it forces scroll on small screens
+    }
+}
\ No newline at end of file
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upload-device-build.html
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upload-device-build.html	(revision 2834)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/components/upgrade-centre/upload-device-build.html	(working copy)
@@ -1,9 +1,6 @@
 <h2 mat-dialog-title>Upload Device Build</h2>
 <mat-dialog-content>
-  <form
-    (ngSubmit)="onSubmit()"
-    [formGroup]="deviceForm"
-  >
+  <form (ngSubmit)="onSubmit()" [formGroup]="deviceForm">
     <div class="form-field-wrapper">
       <label for="using" class="form-label">Using *</label>
       <mat-radio-group formControlName="using">
@@ -12,55 +9,45 @@
       </mat-radio-group>
     </div>
     @if (deviceForm.value?.using === 'file') {
-      <div class="form-field-wrapper">
-        <label for="upload_file" class="form-label">Upload Build File *</label>
+    <div class="form-field-wrapper">
+      <label for="upload_file" class="form-label">Upload Build File *</label>
+      <div style="display: flex; flex-direction: column;">
         <input formControlName="upload_file" type="file" (change)="onFileUploadToServer($event)">
         @if (deviceForm.get('upload_file')?.invalid && deviceForm.get('upload_file')?.touched) {
-          <mat-error>
-            @if (deviceForm.get('upload_file')?.errors?.['required']) {
-              Build package is required.
-            } @else {
-              Invalid build package format.
-            }
-          </mat-error>
+        <mat-error>
+          @if (deviceForm.get('upload_file')?.errors?.['required']) {
+          Build package is required.
+          } @else {
+          Invalid build package format.
+          }
+        </mat-error>
         }
       </div>
+    </div>
     } @else if (deviceForm.value?.using === 'url') {
-      <div class="form-field-wrapper">
-        <label for="url" class="form-label">URL *</label>
-        <mat-form-field appearance="outline" subscriptSizing="dynamic">
-          <input
-            id="url"
-            formControlName="url"
-            matInput
-            placeholder="http://"
-            type="text"
-          />
-          @if (deviceForm.get('url')?.invalid && deviceForm.get('url')?.touched) {
-            <mat-error>
-              @if (deviceForm.get('url')?.errors?.['required']) {
-                URL is required.
-              } @else if (deviceForm.get('url')?.errors) {
-                Invalid URL format - Only support file with suffix .array and .click formats.
-              }
-            </mat-error>
+    <div class="form-field-wrapper">
+      <label for="url" class="form-label">URL *</label>
+      <mat-form-field appearance="outline" subscriptSizing="dynamic">
+        <input id="url" formControlName="url" matInput placeholder="http://" type="text" />
+        @if (deviceForm.get('url')?.invalid && deviceForm.get('url')?.touched) {
+        <mat-error>
+          @if (deviceForm.get('url')?.errors?.['required']) {
+          URL is required.
+          } @else if (deviceForm.get('url')?.errors) {
+          Invalid URL format - Only support file with suffix .array and .click formats.
           }
-        </mat-form-field>
-      </div>
+        </mat-error>
+        }
+      </mat-form-field>
+    </div>
     }
   </form>
 </mat-dialog-content>
 <mat-dialog-actions>
-  <button
-    mat-button
-    color="basic"
-    (click)="onCancel()">
+  <button mat-button color="basic" (click)="onCancel()">
     Cancel
   </button>
-  <button
-    mat-raised-button
-    color="primary"
-    (click)="onSubmit()">
+  <button mat-raised-button color="primary" (click)="onSubmit()">
     Submit
   </button>
-</mat-dialog-actions>
+</mat-dialog-actions>
\ No newline at end of file
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/notification.ts
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/notification.ts	(revision 2834)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/app/services/notification.ts	(working copy)
@@ -1,6 +1,6 @@
-import {Injectable} from '@angular/core';
-import {MatSnackBar} from '@angular/material/snack-bar';
-import {AppNotification} from '../components/common/app-notification/app-notification';
+import { Injectable } from '@angular/core';
+import { MatSnackBar } from '@angular/material/snack-bar';
+import { AppNotification } from '../components/common/app-notification/app-notification';
 
 @Injectable({
   providedIn: 'root'
@@ -14,7 +14,7 @@
 
   showSuccess(message: string) {
     this.snackBar.openFromComponent(AppNotification, {
-      data: {message, type: 'success'},
+      data: { message, type: 'success' },
       duration: 5000,
       horizontalPosition: 'right',
       verticalPosition: 'top'
@@ -22,8 +22,11 @@
   }
 
   showError(message: string) {
+    if (message && message.toLowerCase().includes('http failure during parsing')) {
+      message = 'The requested URL/Content not available at this moment...';
+    }
     this.snackBar.openFromComponent(AppNotification, {
-      data: {message, type: 'error'},
+      data: { message, type: 'error' },
       duration: 7000,
       horizontalPosition: 'right',
       verticalPosition: 'top'
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/styles.scss
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/styles.scss	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/gui/src/styles.scss	(working copy)
@@ -171,7 +171,8 @@
 
 
 .table-container {
-  padding: 3px;
+  // padding: 3px;
+  padding: 0; // Fix overlapping issue by removing padding
   position: relative;
   z-index: 20;
   --table-bg: transparent;
@@ -309,7 +310,7 @@
 
 .mat-column-serial {
   width: 32px;
-  border-right: 1px solid currentColor;
+  // border-right: 1px solid currentColor;
   padding-right: 24px;
   text-align: center;
 }
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/options.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/options.py	(revision 2834)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/model/options.py	(working copy)
@@ -37,7 +37,7 @@
                  'order_with_respect_to', 'app_label', 'help_text', 'field_group_sequence',
                  'abstract', 'managable', 'proxy', 'auto_created', 'show_im_export_button', 'hide_import_button',
                  'quantity', 'profile', 'path', 'repr_from_instance', 'repr_by_pk', 'button_submit_text',
-                 'addable', 'list_config_options', 'list_stats_options', '_verbose_name', '_help_text', 'generate_xml',
+                 'list_config_options', 'list_stats_options', '_verbose_name', '_help_text', 'generate_xml',
                  'cache_expire_time', 'meta_type', 'licenses', 'pk_to_id', 'id_to_pk', 'asso_ref_to_instance_id')
 
 
@@ -91,7 +91,6 @@
         self.meta = meta
         self.abstract = False
         self.managable = True
-        self.addable = True
         self.cache_expire_time = 0
         self.field_cache_expire = {}  # {<field_name>:True/False, ...}
         # this is for list widget
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/router.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/router.py	(revision 2835)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/router.py	(working copy)
@@ -480,7 +480,7 @@
 def upload(request):
     file_content_flag = False  # return file content flag, default is False.
 
-    request_uri = request.META["REQUEST_URI"]
+    request_uri = request.get_full_path()
     query = urlparse.parse_qs(urlparse.urlparse(request_uri).query)
     if query:
         if "content" in query and query["content"][0] == "true":
