AIRAVATA-3694 Basic unarchive_user_data command
diff --git a/django_airavata/apps/admin/management/commands/archive_user_data.py b/django_airavata/apps/admin/management/commands/archive_user_data.py
index 0d45e93..4eae090 100644
--- a/django_airavata/apps/admin/management/commands/archive_user_data.py
+++ b/django_airavata/apps/admin/management/commands/archive_user_data.py
@@ -68,7 +68,7 @@
         with transaction.atomic():
             user_data_archive = models.UserDataArchive(
                 archive_name=archive_tarball_filename,
-                archive_path=os.fspath(archive_directory / archive_list_filename),
+                archive_path=os.fspath(archive_directory / archive_tarball_filename),
                 max_modification_time=max_age)
             user_data_archive.save()
             # delete archived entries
diff --git a/django_airavata/apps/admin/management/commands/unarchive_user_data.py b/django_airavata/apps/admin/management/commands/unarchive_user_data.py
new file mode 100644
index 0000000..d1d817d
--- /dev/null
+++ b/django_airavata/apps/admin/management/commands/unarchive_user_data.py
@@ -0,0 +1,28 @@
+
+import os
+import tarfile
+
+from django.core.management.base import BaseCommand
+
+from django_airavata.apps.admin import models
+
+
+class Command(BaseCommand):
+    help = "Unarchive a user data archive"
+
+    def add_arguments(self, parser):
+        parser.add_argument('archive_file',
+                            help="Archive file (ending in .tgz) that was created by the archive_user_data")
+
+    def handle(self, *args, **options):
+        with tarfile.open(options["archive_file"]) as tf:
+            tf.extractall(path="/")
+
+        # mark archive as rolled back
+        archive_name = os.path.basename(options["archive_file"])
+        try:
+            archive = models.UserDataArchive.objects.get(archive_name=archive_name)
+            archive.rolled_back = True
+            archive.save()
+        except models.UserDataArchive.DoesNotExist:
+            self.stdout.write(self.style.ERROR(f"Could not find UserDataArchive database record for {archive_name}"))