Changeset 1608:bb54faf30816 in peach3-core
- Timestamp:
- 01/24/2012 03:48:38 PM (4 months ago)
- Branch:
- core-split
- Location:
- src/peach3
- Files:
-
- 2 added
- 2 edited
-
admin/cluster.py (modified) (3 diffs)
-
migrations/0005_convert_cluster_ranges.py (added)
-
migrations/0006_auto__del_field_cluster_joinable__del_field_cluster_active.py (added)
-
models/cluster.py (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/peach3/admin/cluster.py
r1606 r1608 7 7 from django.forms.formsets import DELETION_FIELD_NAME 8 8 from django.forms.models import BaseInlineFormSet 9 from django.utils.translation import ugettext_lazy as _9 from django.utils.translation import ugettext_lazy, ugettext as _ 10 10 11 11 from peach3.admin.course import CourseEditionListFilter 12 12 from peach3.admin.forms import AdminImmutableUserModelForm, BaseInlineFormSetWithParentInstance, I18NModelForm 13 from peach3.admin.forms.widgets import AdminTimeRange 13 14 from peach3.admin.news import NewsItemInline 14 15 from peach3.admin.realm import CourseEditionRealmsListFilter 16 17 from peach3.forms import TimeRangeField 15 18 16 19 from peach3.models.cluster import * #@UnusedWildImport … … 75 78 # TODO: Figure out a way to completely hide the realms field for admin clusters 76 79 80 active_range = TimeRangeField(widget=AdminTimeRange, label=ugettext_lazy("Active")) 81 joinable_range = TimeRangeField(widget=AdminTimeRange, label=ugettext_lazy("Joinable")) 82 77 83 def __init__(self, *arg, **kwargs): 78 84 super(ClusterAdminModelForm, self).__init__(*arg, **kwargs) 79 85 self.fields['realms'].required = not self.instance.admin_cluster 86 self.fields['active_range'].initial = self.instance.active_range 87 self.fields['joinable_range'].initial = self.instance.joinable_range 88 89 def _post_clean(self): 90 if 'active_range' in self.cleaned_data: 91 self.instance.active_range = self.cleaned_data['active_range'] 92 if 'joinable_range' in self.cleaned_data: 93 self.instance.joinable_range = self.cleaned_data['joinable_range'] 94 super(ClusterAdminModelForm, self)._post_clean() 80 95 81 96 def clean_realms(self): … … 91 106 class ClusterAdmin(admin.ModelAdmin): 92 107 form = ClusterAdminModelForm 93 fieldsets = (94 (None, {95 'fields' : ('courseedition', 'i18n_names', 'admin_cluster',96 'realms',)97 }),98 (_("Availability"), {99 'classes' : ('collapse',),100 'fields' : ( 'order',101 'joinable', 'joinable_from', 'joinable_until',102 'active', 'active_from', 'active_until',)103 })104 105 )106 108 readonly_fields = 'admin_cluster', 'courseedition', 109 fields = ('courseedition', 'i18n_names', 'admin_cluster', 110 'realms', 'order', 'joinable_range', 'active_range',) 107 111 filter_horizontal = 'realms', 108 inlines = ClusterMembersInline, ClusterStaffInline , NewsItemInline,112 inlines = ClusterMembersInline, ClusterStaffInline#, NewsItemInline, 109 113 110 114 list_display = 'courseedition', 'default_name', 'admin_cluster', 'order', -
src/peach3/models/cluster.py
r1600 r1608 25 25 courseedition = models.ForeignKey("CourseEdition") 26 26 27 joinable = models.NullBooleanField(default=False, 28 help_text=ugettext_lazy("Unknown means to use the from and until fields")) 29 joinable_from = models.DateTimeField(null=True, blank=True) 30 joinable_until = models.DateTimeField(null=True, blank=True) 31 32 active = models.NullBooleanField(default=False, 33 help_text=ugettext_lazy("Unknown means to use the from and until fields")) 34 active_from = models.DateTimeField(null=True, blank=True) 35 active_until = models.DateTimeField(null=True, blank=True) 27 _joinable_from = models.DateTimeField(null=True, blank=True, db_column='joinable_from') 28 _joinable_until = models.DateTimeField(null=True, blank=True, db_column='joinable_until') 29 30 _active_from = models.DateTimeField(null=True, blank=True, db_column='active_from') 31 _active_until = models.DateTimeField(null=True, blank=True, db_column='active_until') 36 32 37 33 realms = models.ManyToManyField(Realm, null=True, blank=True) … … 108 104 ### Model methods 109 105 def set_joinable_range(self, range=None): #@ReservedAssignment 110 if range is None or range.is_closed(): 111 self.joinable = False 112 self.joinable_from = None 113 self.joinable_until = None 114 elif range.is_open(): 115 self.joinable = True 116 self.joinable_from = None 117 self.joinable_until = None 118 else: 119 self.joinable = None 120 self.joinable_from = range.begin if range.has_begin() else None 121 self.joinable_until = range.end if range.has_end() else None 106 self._joinable_from = range.begin 107 self._joinable_until = range.end 122 108 123 109 def get_joinable_range(self): 124 return TimeRange(open=self.joinable is not None and self.joinable, 125 closed=self.joinable is not None and not self.joinable, 126 begin=self.joinable_from, 127 end=self.joinable_until) 110 return TimeRange(begin=self._joinable_from, end=self._joinable_until) 128 111 129 112 joinable_range = property(get_joinable_range, set_joinable_range, set_joinable_range) … … 133 116 134 117 def set_active_range(self, range=None): #@ReservedAssignment 135 if range is None or range.is_closed(): 136 self.active = False 137 self.active_from = None 138 self.active_until = None 139 elif range.is_open(): 140 self.active = True 141 self.active_from = None 142 self.active_until = None 143 else: 144 self.active = None 145 self.active_from = range.begin if range.has_begin() else None 146 self.active_until = range.end if range.has_end() else None 147 118 self._active_from = range.begin 119 self._active_until = range.end 148 120 self._active_updated = True 149 121 150 122 def get_active_range(self): 151 return TimeRange(open=self.active is not None and self.active, 152 closed=self.active is not None and not self.active, 153 begin=self.active_from, 154 end=self.active_until) 123 return TimeRange(begin=self._active_from, end=self._active_until) 155 124 156 125 active_range = property(get_active_range, set_active_range, set_active_range)
Note: See TracChangeset
for help on using the changeset viewer.

