Polls

Wichtige Umfrage

Log in to vote!

Latest Posts

Topic: Bilder in datenbank und als Datei

kaputtnik
Avatar
Topic Opener
Joined: 2016-06-18, 13:48
Posts: 137
Ranking
At home in WL-forums
Posted at: 2025-02-19, 13:37

https://github.com/widelands/widelands-website/pull/452


Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: 2025-02-19, 13:39

kaputtnik wrote:

ich habe da jetzt n django management commando von gemacht

wunderbar, schaue ich mir gegen 15 uhr an


Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: 2025-02-19, 16:30
> ./manage.py broken_images
Logging enabled
These files have no wlimage object:
/var/www/media_alpha/wlimages/WL_barbarian_tribe_1024x769middle2.png
/var/www/media_alpha/wlimages/shot0000.png
/var/www/media_alpha/wlimages/profile192.jpg
/var/www/media_alpha/wlimages/pc.png
/var/www/media_alpha/wlimages/Vertex-triangles.png
/var/www/media_alpha/wlimages/atlantean recruitment center_trans.png
/var/www/media_alpha/wlimages/water_lily_anim.gif
/var/www/media_alpha/wlimages/WL Menus schematical tables.tiff
/var/www/media_alpha/wlimages/widelands_by_night_mit_ganz_langem_namen.jpg
/var/www/media_alpha/wlimages/widelands_org_2.png
/var/www/media_alpha/wlimages/HomePage.png
/var/www/media_alpha/wlimages/coast.jpg
/var/www/media_alpha/wlimages/Fuß_Brücke.png
/var/www/media_alpha/wlimages/atlanteans_neu.png
/var/www/media_alpha/wlimages/WL_atlantean_tribe_1280x800middle.png
/var/www/media_alpha/wlimages/transifex-all-resources-1.png
/var/www/media_alpha/wlimages/WL_barbarian_tribe_1024x765middle2.png
/var/www/media_alpha/wlimages/strange__.__.png
/var/www/media_alpha/wlimages/widelands_by_night_01.jpg
These wlimage objects have no file:
flag_es.png
flag_fr.png
(wlwebsite)

Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: 2025-02-19, 16:48
> ./manage.py broken_images
Logging enabled
These files have no wlimage object:
/var/www/media_alpha/wlimages/WL_barbarian_tribe_1024x769middle2.png
/var/www/media_alpha/wlimages/shot0000.png
/var/www/media_alpha/wlimages/profile192.jpg
/var/www/media_alpha/wlimages/pc.png
/var/www/media_alpha/wlimages/Vertex-triangles.png
  Used in article: BlueprintSoldiersNotFromWarehouse, ˇ-sowas
/var/www/media_alpha/wlimages/atlantean recruitment center_trans.png
/var/www/media_alpha/wlimages/water_lily_anim.gif
/var/www/media_alpha/wlimages/WL Menus schematical tables.tiff
/var/www/media_alpha/wlimages/widelands_by_night_mit_ganz_langem_namen.jpg
/var/www/media_alpha/wlimages/widelands_org_2.png
/var/www/media_alpha/wlimages/HomePage.png
/var/www/media_alpha/wlimages/coast.jpg
  Used in article: images 2
/var/www/media_alpha/wlimages/Fuß_Brücke.png
/var/www/media_alpha/wlimages/atlanteans_neu.png
/var/www/media_alpha/wlimages/WL_atlantean_tribe_1280x800middle.png
/var/www/media_alpha/wlimages/transifex-all-resources-1.png
/var/www/media_alpha/wlimages/WL_barbarian_tribe_1024x765middle2.png
/var/www/media_alpha/wlimages/strange__.__.png
/var/www/media_alpha/wlimages/widelands_by_night_01.jpg
These wlimage objects have no file:
flag_es.png
flag_fr.png
(wlwebsite)

Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: Yesterday 11:15

hmmmm, django will nicht ganz wie ich das will schnief

> git diff
diff --git a/media/wlprofile/anonymous.png b/media/wlprofile/anonymous.png
deleted file mode 100644
index d68316e..0000000
Binary files a/media/wlprofile/anonymous.png and /dev/null differ
diff --git a/wlimages/management/commands/broken_images.py b/wlimages/management/commands/broken_images.py
index ea7b16b..78f16f9 100644
--- a/wlimages/management/commands/broken_images.py
+++ b/wlimages/management/commands/broken_images.py
@@ -76,6 +76,11 @@ class Command(BaseCommand):
                 except Exception as e:
                     errors.append(e)
         else:
+            ask_delete = 0
+            while ask_delete > 0:
+                self.stdout.write(self.style.WARNING("Chose one: \n[1] Only Show\n[2] Ask Delete\n[3] Force Delete and Show"))
+                ask_delete = int(input("(1/2/3)?:"))
+            self.stdout.write(self.style.SUCCESS(f"Your Chose {ask_delete}"))
             self.stdout.write(self.style.ERROR("These files have no wlimage object:"))
             for f_path, articles in files_wo_wlimage_used.items():
                 self.stdout.write(f_path)
(wlwebsite)

Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: Yesterday 12:11

janus wrote:

hmmmm, django will nicht ganz wie ich das will schnief

einmal mit Profis, ein mal nur face-grin.png (das kommt davon wenn man mal eben schnell und so face-smile-big.png )


Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: Yesterday 14:44
> git diff
diff --git a/media/wlprofile/anonymous.png b/media/wlprofile/anonymous.png
deleted file mode 100644
index d68316e..0000000
Binary files a/media/wlprofile/anonymous.png and /dev/null differ
diff --git a/wlimages/management/commands/broken_images.py b/wlimages/management/commands/broken_images.py
index ea7b16b..b348891 100644
--- a/wlimages/management/commands/broken_images.py
+++ b/wlimages/management/commands/broken_images.py
@@ -76,6 +76,14 @@ class Command(BaseCommand):
                 except Exception as e:
                     errors.append(e)
         else:
+            ask_delete = 0
+            while ask_delete == 0 or ask_delete > 3:
+                self.stdout.write(self.style.WARNING("Chose one: \n[1] Only Show\n[2] Ask Delete\n[3] Force Delete and Show"))
+                try:
+                    ask_delete = int(input("(1/2/3)?: "))
+                except:
+                    self.stdout.write(self.style.ERROR("Please use 1, 2 or 3"))
+            self.stdout.write(self.style.SUCCESS(f"Your Chose {ask_delete}"))
             self.stdout.write(self.style.ERROR("These files have no wlimage object:"))
             for f_path, articles in files_wo_wlimage_used.items():
                 self.stdout.write(f_path)
@@ -83,10 +91,40 @@ class Command(BaseCommand):
                     self.stdout.write(
                         "  Used in article: {}".format(", ".join(articles))
                     )
+                if ask_delete == 2:
+                    self.stdout.write(self.style.WARNING("You want to delete that file?"))
+                    chose = input("Yes / No?: ").lower()
+                    if chose == "yes" or chose == "y":
+                        try:
+                            os.remove(f_path)
+                        except Exception as e:
+                            self.stdout.write(self.style.ERROR(e))
+                elif ask_delete == 3:
+                    self.stdout.write(self.style.WARNING(f"delete File: \"{f_path}\""))
+                    try:
+                        os.remove(f_path)
+                    except Exception as e:
+                        self.stdout.write(self.style.ERROR(e))

             self.stdout.write(self.style.ERROR("These wlimage objects have no file:"))
             for x in wlimage_wo_file:
                 self.stdout.write(x)
+                if ask_delete == 2:
+                    self.stdout.write(self.style.WARNING("You want to delete that Objekt?"))
+                    chose = input("Yes / No?: ").lower()
+                    if chose == "yes" or chose == "y":
+                        try:
+                            obj = Image.objects.get(name=x)
+                            obj.delete()
+                        except Exception as e:
+                            self.stdout.write(self.style.ERROR(e))
+                elif ask_delete == 3:
+                    self.stdout.write(self.style.WARNING(f"delete objekt: \"{x}\""))
+                    obj = Image.objects.get(name=x)
+                    try:
+                        obj.delete()
+                    except Exception as e:
+                        self.stdout.write(self.style.ERROR(e))

         if errors:
             message = ""
(wlwebsite)

Top Quote
kaputtnik
Avatar
Topic Opener
Joined: 2016-06-18, 13:48
Posts: 137
Ranking
At home in WL-forums
Posted at: Yesterday 16:25

mag funktionieren face-smile.png

dann sollte man:

  1. os.remove() und obj.delete() jeweils in eine eigene Funktion auslagern
  2. eine neue Option --delete-interactive hinzufügen, und die Option --delete_all in --delete-auto oder so umbenennen

Wenn es funktioniert und du das haben möchtest kannst du es ja einfach comitten. Ich persönlich finde es überflüssig. Falls Angst besteht zu viel zu löschen kann man ja noch code für eine Sicherung der Bilddateien einbauen.

Für wlimage objekte könnte man noch außer dem Namen auch einen Link zum entsprechenden Eintrag im admin interface hinzufügen, braucht ja kein html

Was mir an meinem eigenen code noch nicht gefällt ist das bei --delete_all die Schleifen durchlaufen werden und ohne --delete_all die Schleifen in einem anderen codeblock ebenfalls durchlaufen werden

Edited: Yesterday 16:46

Top Quote
kaputtnik
Avatar
Topic Opener
Joined: 2016-06-18, 13:48
Posts: 137
Ranking
At home in WL-forums
Posted at: Yesterday 16:28

achso, und ich werde die Datei in cleanup_images umbenennen. Entsprechend wird das management commando dann heißen.


Top Quote
janus
Avatar
Joined: 2016-06-22, 20:26
Posts: 61
OS: Haiku R1/Beta3
Version: Build 42
Ranking
Likes to be here
Location: some where over the rainbow
Posted at: Yesterday 20:58

kaputtnik wrote: dann sollte man:

  1. os.remove() und obj.delete() jeweils in eine eigene Funktion auslagern
  2. eine neue Option --delete-interactive hinzufügen, und die Option --delete_all in --delete-auto oder so umbenennen

jop, sollte man. ist mir bei schnellen zusammen frickeln auch in den sin gekommen da sich viele sachen wie .delete() und .remove(*) bzw einzelne abfragen wiederholen. ich tat erstmal nur zusammenschustern, der feinschliff kommt eh zum schluss face-smile.png


Top Quote