From 6889de0f6c4857d8b1dd7fa4c2ac5264a2ce8e63 Mon Sep 17 00:00:00 2001
From: Stefano Alberto Russo <stefano.russo@gmail.com>
Date: Wed, 24 Nov 2021 00:08:06 +0100
Subject: [PATCH] Enabled the "save as" button in the admin for the Container
 objects to allow easily duplicate them. Fixed a bug in the populate. Minor
 fix.

---
 services/webapp/code/rosetta/core_app/admin.py              | 6 +++++-
 .../core_app/management/commands/core_app_populate.py       | 2 +-
 services/webapp/code/rosetta/core_app/models.py             | 5 +++--
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/services/webapp/code/rosetta/core_app/admin.py b/services/webapp/code/rosetta/core_app/admin.py
index b69c3b2..819a338 100644
--- a/services/webapp/code/rosetta/core_app/admin.py
+++ b/services/webapp/code/rosetta/core_app/admin.py
@@ -2,10 +2,14 @@ from django.contrib import admin
 
 from .models import Profile, LoginToken, Task, Container, Computing, Storage, KeyPair, Page
 
+# Define a extra "ModelAdmin" for the Container model to allow "save as" to easily duplicate containers
+class ContainerForAdmin(admin.ModelAdmin):
+    save_as = True
+
 admin.site.register(Profile)
 admin.site.register(LoginToken)
 admin.site.register(Task)
-admin.site.register(Container)
+admin.site.register(Container, ContainerForAdmin)
 admin.site.register(Computing)
 admin.site.register(Storage)
 admin.site.register(KeyPair)
diff --git a/services/webapp/code/rosetta/core_app/management/commands/core_app_populate.py b/services/webapp/code/rosetta/core_app/management/commands/core_app_populate.py
index a945d05..b3ac3be 100644
--- a/services/webapp/code/rosetta/core_app/management/commands/core_app_populate.py
+++ b/services/webapp/code/rosetta/core_app/management/commands/core_app_populate.py
@@ -129,7 +129,7 @@ to provide help, news and informations on your deployment. Or you can just ignor
             
             # Minimal Desktop
             Container.objects.create(user     = None,
-                                     name     = 'Minimal Desktop ',
+                                     name     = 'Minimal Desktop',
                                      description = 'A minimal desktop environment providing basic window management functionalities and a terminal.',
                                      registry = 'docker.io',
                                      image_name = 'sarusso/minimaldesktop',
diff --git a/services/webapp/code/rosetta/core_app/models.py b/services/webapp/code/rosetta/core_app/models.py
index c8eaa45..e675c1d 100644
--- a/services/webapp/code/rosetta/core_app/models.py
+++ b/services/webapp/code/rosetta/core_app/models.py
@@ -157,8 +157,9 @@ class Container(models.Model):
 
     @property
     def family_id(self):
-        return base64.b64encode('{}\t{}\t{}'.format(self.name, self.registry, self.image_name).encode('utf8')).decode('utf8')
-
+        id_as_str = '{}\t{}\t{}'.format(self.name, self.registry, self.image_name)
+        id_as_base64_str = base64.b64encode(id_as_str.encode('utf8')).decode('utf8')
+        return id_as_base64_str
 
     @property
     def color(self):
-- 
GitLab