Mercurial > hg > savane-forge
changeset 308:006f6c019bc8
Field usage admin
author | Sylvain Beucler <beuc@beuc.net> |
---|---|
date | Sun, 15 Aug 2010 15:32:04 +0200 |
parents | b503430e963a |
children | 33a9bdcc4bdd |
files | migrate_old_savane.sql savane/tracker/admin.py savane/tracker/models.py templates/tracker/item_form.html |
diffstat | 4 files changed, 35 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/migrate_old_savane.sql +++ b/migrate_old_savane.sql @@ -592,4 +592,6 @@ IFNULL(custom_keep_history, 0), transition_default_auth FROM temp_bugs_field_usage JOIN conv_field_ids ON (bug_field_id = old AND tracker_id = 'bugs'); +-- Specify "default" differently +UPDATE tracker_fieldusage SET group_id=NULL WHERE group_id=100; DROP TABLE temp_bugs_field_usage;
--- a/savane/tracker/admin.py +++ b/savane/tracker/admin.py @@ -24,6 +24,9 @@ #class TrackerAdmin(admin.ModelAdmin): # list_display = ('name',) +class FieldUsageInline(admin.TabularInline): + model = FieldUsage + raw_id_fields = ('group',) class FieldAdmin(admin.ModelAdmin): search_fields = ('name', 'label', 'description', ) ordering = ('tracker', 'name', ) @@ -32,6 +35,15 @@ list_display_links = ('id', 'name', 'label') list_filter = ('tracker', 'display_type', 'scope', 'required', 'empty_ok', 'keep_history', 'special', 'custom', ) - #inlines = ( FieldUsage??, ) + inlines = ( FieldUsageInline, ) + +class FieldUsageAdmin(admin.ModelAdmin): + search_fields = ('group', 'custom_label', 'custom_description', ) + ordering = ('group', 'field',) + list_display = ('id', 'group', 'field', 'use_it', 'place', ) + list_display_links = ('id',) + list_filter = ('use_it', 'show_on_add', 'show_on_add_members', 'custom_empty_ok', 'custom_keep_history',) + raw_id_fields = ('group',) admin.site.register(Field, FieldAdmin) +admin.site.register(FieldUsage, FieldUsageAdmin)
--- a/savane/tracker/models.py +++ b/savane/tracker/models.py @@ -84,12 +84,6 @@ ) name = models.CharField(max_length=7, choices=NAME_CHOICES, primary_key=True) - ITEM_NAMES = (('bugs', _('bug')), - ('patch', _('patch')), - ('support', _('support')), - ('task', _('task')), - ) - def __unicode__(self): "Used in the admin interface fields list" return self.name @@ -178,12 +172,17 @@ special = models.BooleanField(help_text=_("field is not entered by the user but by the system")) custom = models.BooleanField(help_text=_("let the user change the label and description")) + def __unicode__(self): + return "%s.%s" % (self.tracker_id, self.name) + class FieldUsage(models.Model): """ Field configuration for each group """ class Meta: unique_together = (('field', 'group'),) + verbose_name = _("field usage") + verbose_name_plural = _("field usages") TRANSITION_DEFAULT_AUTH_CHOICES = (('', _('undefined')), ('A', _('allowed')), @@ -196,7 +195,7 @@ ('1', _('optional (empty values are accepted)')), ('3', _('mandatory')),) field = models.ForeignKey('Field') - group = models.ForeignKey(auth_models.Group) + group = models.ForeignKey(auth_models.Group, blank=True, null=True, help_text=_("NULL == default")) use_it = models.BooleanField(_("used")) show_on_add = models.CharField(max_length=1, choices=SHOW_ON_ADD_CHOICES, default='0', blank=True, null=True) @@ -204,7 +203,7 @@ # show_on_add_logged_in = models.BooleanField("show to logged in users") # show_on_add_anonymous = models.BooleanField("show to anonymous users") show_on_add_members = models.BooleanField(_("show to project members")) - place = models.IntegerField() # new:rank + place = models.IntegerField(help_text=_("display rank")) # new:rank transition_default_auth = models.CharField(max_length=1, choices=TRANSITION_DEFAULT_AUTH_CHOICES, default='A') custom_empty_ok = models.CharField(max_length=1, choices=CUSTOM_EMPTY_OK_CHOICES, @@ -390,10 +389,15 @@ elif self.tracker_id == 'task': return self.public_task_id - def get_item_name(self): - for (k,v) in Tracker.ITEM_NAMES: - if k == self.tracker_id: - return v + def get_shortcut(self): + if self.tracker_id == 'bugs': + return "bug #%d" % self.public_bugs_id + elif self.tracker_id == 'patch': + return "patch #%d" % self.public_bugs_id + elif self.tracker_id == 'support': + return "sr #%d" % self.public_bugs_id + elif self.tracker_id == 'task': + return "task #%d" % self.public_bugs_id def get_tracker_name(self): for (k,v) in Tracker.NAME_CHOICES: @@ -418,8 +422,8 @@ class ItemMsgId(models.Model): """ - Identifier for in 'Message-Id' and 'References' e-mail fields, - used to group messages by conversation + Identifier for 'Message-Id' and 'References' e-mail fields, used + to group messages by conversation """ item = models.ForeignKey('Item') msg_id = models.CharField(max_length=255)
--- a/templates/tracker/item_form.html +++ b/templates/tracker/item_form.html @@ -3,7 +3,7 @@ {% block title %} {{object.group.name}} - {{object.get_tracker_name}}{% trans ": " %} - {{object.get_item_name}} #{{object.get_public_id}}, + {{object.get_shortcut}}, {{object.get_summary|truncatewords:5}} {% endblock %} @@ -17,7 +17,7 @@ <h1 class="{{object.get_priority_css_class}}"> <em><a href="{% url savane:tracker:item_detail object.tracker_id object.get_public_id %}" - >{{object.get_item_name}} #{{object.get_public_id}}</a></em>{% trans ": " %} + >{{object.get_shortcut}}</a></em>{% trans ": " %} {{object.get_summary}} </h1>