Changeset 230

Show
Ignore:
Timestamp:
03/09/10 18:09:09 (3 years ago)
Author:
luciano.ramalho
Message:

added translation to assistance models (FAQ, FieldHelp?); refactored code from vocabulary.admin to polyglot.admin

Location:
trunk/clinicaltrials
Files:
1 added
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/clinicaltrials/assistance/admin.py

    r165 r230  
    33from utilities import safe_truncate 
    44 
    5 class FieldHelpAdmin(admin.ModelAdmin): 
    6     list_display = ('form','field','done','short_text') 
     5from polyglot.admin import TranslationInline, TranslationAdmin 
     6 
     7class FieldHelpTranslationInline(TranslationInline): 
     8    model = FieldHelpTranslation 
     9 
     10class FieldHelpAdmin(TranslationAdmin): 
     11    list_display = ('form','field','short_text', 
     12                    'translation_completed', 'missing_translations') 
    713    list_display_links = ('form','field') 
    814    search_fields = ('form','field') 
    915    list_filter = ('form',) 
    10      
    11     def done(self, obj): 
    12         return bool(obj.text.strip()) 
    13     done.boolean = True 
    14      
     16    inlines = [FieldHelpTranslationInline] 
     17 
    1518    def short_text(self, obj): 
    16         return safe_truncate(obj.text, 80) 
    17      
    18          
    19 admin.site.register(Category) 
    20 admin.site.register(Question) 
     19        return safe_truncate(obj.text) 
     20 
     21class CategoryTranslationInline(TranslationInline): 
     22    model = CategoryTranslation 
     23 
     24class CategoryAdmin(TranslationAdmin): 
     25    inlines = [CategoryTranslationInline] 
     26    list_display = ('label', 
     27                    'translation_completed', 'missing_translations') 
     28 
     29class QuestionTranslationInline(TranslationInline): 
     30    model = QuestionTranslation 
     31 
     32class QuestionAdmin(TranslationAdmin): 
     33    inlines = [QuestionTranslationInline] 
     34    list_display = ('title','short_text', 
     35                    'translation_completed', 'missing_translations') 
     36    def short_text(self, obj): 
     37        return safe_truncate(obj.answer) 
     38 
    2139admin.site.register(FieldHelp, FieldHelpAdmin) 
     40admin.site.register(Category, CategoryAdmin) 
     41admin.site.register(Question, QuestionAdmin) 
  • trunk/clinicaltrials/assistance/models.py

    r165 r230  
    11from django.db import models 
    22from django.utils.translation import ugettext_lazy as _ 
     3from django.contrib.contenttypes import generic 
     4 
     5from polyglot.models import Translation 
     6 
    37from datetime import datetime 
    48 
     
    812 
    913    label = models.CharField(_('Label'), max_length=255, unique=True) 
    10      
     14    translations = generic.GenericRelation('CategoryTranslation') 
     15 
    1116    def __unicode__(self): 
    1217        return self.label 
    1318 
     19class CategoryTranslation(Translation): 
     20    label = models.CharField(_('Label'), max_length=255, unique=True) 
    1421 
    1522class Question(models.Model): 
    16  
    1723    category = models.ForeignKey(Category) 
    18     title = models.TextField(_('Title'), max_length=2000) 
    19     answer = models.TextField(_('Answer'), max_length=2000) 
     24    title = models.TextField(_('Title'), max_length=255) 
     25    answer = models.TextField(_('Answer'), max_length=2048) 
    2026    order = models.PositiveIntegerField(default=0) 
    2127    created = models.DateTimeField(_('Date of Registration'), default=datetime.now, 
    2228        editable=False) 
     29    translations = generic.GenericRelation('QuestionTranslation') 
    2330 
    2431    def save(self): 
     
    3037    def __unicode__(self): 
    3138        return self.title 
    32      
     39 
     40class QuestionTranslation(Translation): 
     41    title = models.TextField(_('Title'), max_length=255) 
     42    answer = models.TextField(_('Answer'), max_length=2048) 
     43 
    3344class FieldHelp(models.Model): 
    3445    class Meta: 
     
    3647        unique_together = ('form', 'field') 
    3748        ordering = ('id',) 
    38          
     49 
    3950    form = models.CharField(max_length=255, db_index=True) 
    4051    field = models.CharField(max_length=255, db_index=True) 
    41     text = models.TextField(max_length=2000, blank=True) 
    42      
     52    text = models.TextField(max_length=2048, blank=True) 
     53    example = models.TextField(max_length=255, blank=True) 
     54 
     55    translations = generic.GenericRelation('FieldHelpTranslation') 
     56 
    4357    def __unicode__(self): 
    4458        return self.text 
    45          
     59 
     60class FieldHelpTranslation(Translation): 
     61    text = models.TextField(max_length=2048, blank=True) 
     62    example = models.TextField(max_length=255, blank=True) 
  • trunk/clinicaltrials/utilities.py

    r150 r230  
    2424        rows.append('<tr><th>%s</th><td>%s</td></tr>' % (k, request.POST[k])) 
    2525    return HttpResponse(template % ('\n'.join(rows))) 
    26      
     26 
    2727 
    2828ELLIPSIS = u'\u2026' 
    2929 
    30 def safe_truncate(text, max_length, ellipsis=ELLIPSIS, encoding='utf-8',  
     30def safe_truncate(text, max_length=60, ellipsis=ELLIPSIS, encoding='utf-8', 
    3131                  raise_exc=False): 
    32     u'''truncate a string without breaking words  
     32    u'''truncate a string without breaking words 
    3333 
    3434        >>> safe_truncate(u'the time has come', 9, u'>') 
     
    7575    return text[:pos] + ellipsis 
    7676 
    77      
     77 
    7878if __name__=='__main__': 
    7979    import doctest 
  • trunk/clinicaltrials/vocabulary/admin.py

    r229 r230  
    1 #!/usr/bin/env python 
    2  
    31from django.contrib import admin 
    42from django.contrib.contenttypes import generic 
     
    64 
    75from vocabulary.models import * 
     6from polyglot.admin import TranslationInline, TranslationAdmin 
    87 
    9 class VocabularyTranslationInline(generic.GenericStackedInline): 
     8class VocabularyTranslationInline(TranslationInline): 
    109    model = VocabularyTranslation 
    11     max_num = len(settings.TARGET_LANGUAGES) 
    12     radio_fields = {'language': admin.HORIZONTAL} 
    1310 
    14 class SimpleVocabularyAdmin(admin.ModelAdmin): 
     11class SimpleVocabularyAdmin(TranslationAdmin): 
    1512    list_display = ('label', 'description', 'translation_completed', 'missing_translations') 
    1613    inlines = [VocabularyTranslationInline] 
    1714 
    18     def translation_completed(self, obj): 
    19         return len(Translation.missing(obj)) == 0 
    20     translation_completed.boolean = True 
    21  
    22 class CountryCodeAdmin(SimpleVocabularyAdmin): 
     15class CountryCodeAdmin(TranslationAdmin): 
    2316    list_display = ('label', 'description', 'submission_language', 'translation_completed', 'missing_translations') 
    2417    search_fields = ('label', 'description') 
     18    list_filter = ('submission_language',) 
    2519    inlines = [VocabularyTranslationInline] 
    2620 
  • trunk/clinicaltrials/vocabulary/models.py

    r229 r230  
    1919    def __unicode__(self): 
    2020        return self.label 
    21  
    22     def missing_translations(self): 
    23         return ' '.join(sorted(Translation.missing(self))) 
    2421 
    2522    @classmethod