def get_base_dataset(self): nav_role = Task.get_nav_role(self.config.app) if nav_role and (nav_role != self.config.get_cur_role()): if (self.config.group_entity in self.request.GET): active_nav_item_id = self.request.GET[self.config.group_entity] Task.set_active_nav_item(self.request.user.id, self.config.app, active_nav_item_id) self.config.set_view(self.request) query = None if (self.request.method == 'GET'): query = self.request.GET.get('q') nav_item = None nav_role = Task.get_nav_role(self.config.app) cur_role = self.config.get_cur_role() if nav_role and (nav_role != cur_role): if (self.config.group_entity in self.request.GET): active_nav_item_id = self.request.GET[self.config.group_entity] nav_item = Task.set_active_nav_item(self.request.user.id, self.config.app, active_nav_item_id) else: nav_item = Task.get_active_nav_item(self.request.user.id, self.config.app) if nav_role and (nav_role != self.config.get_cur_role()): nav_item = Task.get_active_nav_item(self.request.user.id, self.config.app) return self.get_dataset(self.config.cur_view_group, query, nav_item)
def get_nav_items(self): nav_role = Task.get_nav_role(self.config.app) if (not nav_role) or (nav_role == self.config.cur_view_group.view_id): return None href = self.request.path if ('pk' in self.kwargs): pk = str(self.kwargs['pk']) + '/' if (pk in href): href = href.split(pk)[0] sort = 'name' nav_item_group = detect_group(self.request.user, self.config.app, 'role', nav_role, '') if nav_item_group and nav_item_group.items_sort: sort = nav_item_group.items_sort ret = [] for item in Task.get_role_tasks(self.request.user.id, self.config.app, nav_role).order_by(sort): ret.append({ 'id': item.id, 'name': item.name, 'qty': len( Task.get_role_tasks(self.request.user.id, self.config.app, self.config.cur_view_group.view_id, item)), 'href': href, }) return ret
def get_app_context(self, user_id, search_qty=None, icon=None, nav_items=None, **kwargs): context = {} if hasattr(self, 'object') and self.object: title = self.object.name else: if 'title' in kwargs: title = kwargs['title'] else: title = _(self.config.title).capitalize() nav_item = None if (Task.get_nav_role(self.config.app) != self.config.get_cur_role()): nav_item = Task.get_active_nav_item(user_id, self.config.app) if nav_item: title = (title, nav_item.name) context['nav_item'] = nav_item context.update( get_base_context(self.request, self.config.app, self.config.get_cur_role(), self.config.cur_view_group, (hasattr(self, 'object') and self.object != None), title, icon=icon)) context['fix_list'] = self.get_fixes(self.config.views, search_qty) context['group_form'] = CreateGroupForm() context['config'] = self.config context['params'] = extract_get_params(self.request, self.config.group_entity) if nav_items: context['nav_items'] = nav_items context['add_item_placeholder'] = '{} {}'.format( _('add').capitalize(), self.config.item_name if self.config.item_name else self.config.get_cur_role()) if self.config.add_button: context['add_item_template'] = 'base/add_item_button.html' else: context['add_item_template'] = 'base/add_item_input.html' if (self.config.group_entity in self.request.GET): context['current_group'] = self.request.GET[ self.config.group_entity] elif ('ret' in self.request.GET): context['current_group'] = self.request.GET['ret'] return context
def get(self, request, *args, **kwargs): if not request.user.is_authenticated: raise Http404 ret = super().get(request, *args, **kwargs) nav_role = Task.get_nav_role(self.config.app) cur_role = self.config.get_cur_role() if nav_role and (nav_role != cur_role): if (self.config.group_entity not in request.GET): nav_item = Task.get_active_nav_item(request.user.id, self.config.app) if nav_item: return HttpResponseRedirect(request.path + '?' + self.config.group_entity + '=' + str(nav_item.id)) return ret
def set_view(self, request, detail=False): if not self.app: return self.cur_view_group = None self.nav_item = None determinator = 'view' view_id = '' if (self.app == APP_ALL): common_url = reverse('index') view_id = 'search' else: common_url = reverse(self.app + ':list') if self.main_view: view_id = self.main_view if (request.path != common_url): view_id = request.path.split(common_url)[1].split('?')[0].split( '/')[0] if detail and self.is_num(view_id): view_id = request.path.split(common_url)[1].split( '?')[0].split(view_id)[0] if view_id and (view_id in self.views): if ('page_url' in self.views[view_id]) and ( self.views[view_id]['page_url'] == view_id): determinator = 'view' else: determinator = 'role' if (not view_id): view_id = self.main_view if ('view' in request.GET): view_name = request.GET.get('view') if view_name: view_id = view_name nav_role = Task.get_nav_role(self.app) if (not nav_role) and (self.group_entity in request.GET): group_id = request.GET.get(self.group_entity) if group_id and int(group_id) and Group.objects.filter( user=request.user.id, id=int(group_id)).exists(): determinator = 'group' view_id = group_id self.title = Group.objects.filter(user=request.user.id, id=int(group_id)).get().name self.role_icon = self.app_icon self.view_icon = self.app_icon self.view_sorts = None if (determinator != 'group') and (view_id in self.views): if (determinator == 'role') and ('role' in self.views[view_id]): self.role_icon = self.check_property(self.views[view_id], 'icon', self.role_icon) self.view_icon = self.check_property(self.views[view_id], 'icon', self.view_icon) else: self.role_icon = self.app_icon if (determinator == 'view'): self.view_icon = self.check_property(self.views[view_id], 'icon', self.view_icon) self.title = self.check_property(self.views[view_id], 'title', self.title) self.use_selector = self.check_property(self.views[view_id], 'use_selector', self.use_selector) self.use_important = self.check_property(self.views[view_id], 'use_important', self.use_important) self.add_button = self.check_property(self.views[view_id], 'add_button', self.add_button) self.item_name = self.check_property(self.views[view_id], 'item_name', self.item_name) self.event_in_name = self.check_property(self.views[view_id], 'event_in_name', self.event_in_name) self.use_sub_groups = self.check_property(self.views[view_id], 'use_sub_groups', self.use_sub_groups) self.limit_list = self.check_property(self.views[view_id], 'limit_list', self.limit_list) if 'sort' in self.views[view_id]: self.view_sorts = self.views[view_id]['sort'] if (determinator == 'group'): self.use_sub_groups = (self.app in (APP_TODO, APP_STORE)) if determinator and view_id: self.cur_view_group = detect_group(request.user, self.app, determinator, view_id, _(self.title).capitalize())