George Notaras avatar George Notaras committed 275b7d2

Added support for forbidden database names

Comments (0)

Files changed (3)

src/PostgreSQL_manager/admin.py

 from django.db.utils import DatabaseError, IntegrityError
 from django.contrib import messages
 
-from PostgreSQL_manager.forms import PgUserModelForm
+from PostgreSQL_manager.forms import PgUserModelForm, PgDatabaseModelForm
 
 
 
 
 class PgDatabaseAdmin(admin.ModelAdmin):
 
-    readonly_fields = ['name', 'owner', 'date_created', 'date_modified']
+    form = PgDatabaseModelForm
     list_display = ('name', 'owner', 'connlimit', 'date_created')
     
     def get_form(self, request, obj=None, **kwargs):

src/PostgreSQL_manager/forms.py

         return password2
 
 
+
+class PgDatabaseModelForm(forms.ModelForm):
+
+    class Meta:
+        model = cache.get_model('PostgreSQL_manager', 'PgDatabase')
+    
+    def clean_name(self):
+        name = self.cleaned_data.get('name')
+        if name.lower() in settings.PGMANAGER_FORBIDDEN_DATABASE_NAMES:
+            self._errors['name'] = self.error_class(['This name is reserved for internal use.'])
+        return name
+
+

src/PostgreSQL_manager/settings.py

     )
 PGMANAGER_FORBIDDEN_USER_NAMES = getattr(settings, 'PGMANAGER_FORBIDDEN_USER_NAMES', _PGMANAGER_FORBIDDEN_USER_NAMES)
 
+_PGMANAGER_FORBIDDEN_DATABASE_NAMES = (
+    'postgres',
+    'template0',
+    'template1',
+    )
+PGMANAGER_FORBIDDEN_DATABASE_NAMES = getattr(settings, 'PGMANAGER_FORBIDDEN_DATABASE_NAMES', _PGMANAGER_FORBIDDEN_DATABASE_NAMES)
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.