aboutsummaryrefslogtreecommitdiffstats
path: root/gitrefinery/admin.py
diff options
context:
space:
mode:
Diffstat (limited to 'gitrefinery/admin.py')
-rw-r--r--gitrefinery/admin.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/gitrefinery/admin.py b/gitrefinery/admin.py
new file mode 100644
index 0000000..af4f57a
--- /dev/null
+++ b/gitrefinery/admin.py
@@ -0,0 +1,85 @@
+# git-refinery-web - admin interface definitions
+#
+# Copyright (C) 2017 Intel Corporation
+#
+# Licensed under the MIT license, see COPYING.MIT for details
+
+from gitrefinery.models import *
+from django.contrib import admin
+from django import forms
+from django.core.exceptions import ValidationError
+
+class CommitCategoryAdminForm(forms.ModelForm):
+ def clean_category(self):
+ cat = self.cleaned_data['category']
+ if not cat:
+ raise ValidationError('You must select a category')
+ commit = self.cleaned_data['commit']
+ if cat.repository != commit.release.repository:
+ raise ValidationError('Category is from a different repository than the commit')
+ return cat
+
+class CommitCategoryAdmin(admin.ModelAdmin):
+ search_fields = ['commit__revision']
+ list_filter = ['category', 'commit__release']
+ form = CommitCategoryAdminForm
+
+class CommitAdmin(admin.ModelAdmin):
+ list_filter = ['release']
+
+class AuthorAdmin(admin.ModelAdmin):
+ search_fields = ['name', 'email']
+
+class AuthorGroupMembershipAdmin(admin.ModelAdmin):
+ search_fields = ['author__name', 'author__email']
+ list_filter = ['group']
+
+class CategoryAdmin(admin.ModelAdmin):
+ search_fields = ['name', 'title']
+ list_filter = ['repository', 'hidden']
+ actions = ['hide', 'show']
+
+ def hide(self, request, queryset):
+ rows_updated = queryset.update(hidden=True)
+ if rows_updated == 1:
+ msg = "1 category was successfully hidden."
+ else:
+ msg = "%s categories were successfully hidden." % rows_updated
+ self.message_user(request, msg)
+
+ def show(self, request, queryset):
+ rows_updated = queryset.update(hidden=False)
+ if rows_updated == 1:
+ msg = "1 category was successfully shown."
+ else:
+ msg = "%s categories were successfully shown." % rows_updated
+ self.message_user(request, msg)
+
+class CategorisationRuleAdminForm(forms.ModelForm):
+ def clean_category(self):
+ cat = self.cleaned_data['category']
+ if cat:
+ repo = self.cleaned_data['repository']
+ if cat.repository != repo:
+ raise ValidationError('Category is from a different repository than this rule')
+ return cat
+
+class CategorisationRuleAdmin(admin.ModelAdmin):
+ form = CategorisationRuleAdminForm
+
+
+admin.site.register(Author, AuthorAdmin)
+admin.site.register(AuthorGroup)
+admin.site.register(AuthorGroupMatchRule)
+admin.site.register(AuthorGroupMembership, AuthorGroupMembershipAdmin)
+admin.site.register(Repository)
+admin.site.register(Release)
+admin.site.register(Category, CategoryAdmin)
+admin.site.register(CategorisationRule, CategorisationRuleAdmin)
+admin.site.register(Commit, CommitAdmin)
+admin.site.register(CommitCategory, CommitCategoryAdmin)
+admin.site.register(StatsChart)
+admin.site.register(StatsChartRelease)
+admin.site.register(SecurityQuestion)
+admin.site.register(SecurityQuestionAnswer)
+admin.site.register(UserProfile)