def inspector_main(request): """Main entry point. Link it to URL whatever you like. :param request: """ xross_listener(http_method='POST') return render(request, 'issueinspector/index.html')
def get(self, request, obj_id): item = self.get_object_or_404(obj_id) if not request.user.is_superuser: if item.is_deleted(): # Запрещаем доступ к удалённым. raise Http404() elif item.is_draft() and hasattr( item, 'submitter') and item.submitter != request.user: # Закрываем доступ к чужим черновикам. raise PermissionDenied() item.has_discussions = False if isinstance(item, ModelWithDiscussions): item.has_discussions = True xross_listener(item=item) try: self._attach_data(item, request) except RedirectRequired: return redirect(item, permanent=True) item_rating_allowed = self._is_rating_allowed(request, item) try: self.check_edit_permissions(request, item) item_edit_allowed = True except PermissionDenied: item_edit_allowed = False if isinstance(item, ModelWithCategory): item.has_categories = True item.set_category_lists_init_kwargs({ 'show_title': True, 'cat_html_class': 'label label-default' }) # Нарочно передаём item под двумя разными именами. # Требуется для упрощения наслования шаблонов. context = { self.realm.name: item, 'item': item, 'item_edit_allowed': item_edit_allowed, 'item_rating_allowed': item_rating_allowed } self.update_context(context, request) return self.render(request, context)
def get(self, request: HttpRequest, obj_id: int) -> HttpResponse: item = self.get_object_or_404(obj_id) self.check_view_permissions(request, item) item.has_discussions = False if isinstance(item, ModelWithDiscussions): item.has_discussions = True xross_listener(item=item) try: self._attach_data(item, request) except RedirectRequired: return redirect(item, permanent=True) item_rating_allowed = self._is_rating_allowed(request, item) try: self.check_edit_permissions(request, item) item_edit_allowed = True except PermissionDenied: item_edit_allowed = False if isinstance(item, ModelWithCategory): item.has_categories = True item.set_category_lists_init_kwargs({ 'show_title': True, 'cat_html_class': 'label label-default' }) # Нарочно передаём item под двумя разными именами. # Требуется для упрощения наслования шаблонов. context = { self.realm.name: item, 'item': item, 'item_edit_allowed': item_edit_allowed, 'item_rating_allowed': item_rating_allowed } self.update_context(context, request) return self.render(request, context)
def get(self, request, obj_id=None): item = None if obj_id is not None: item = self.get_object_or_404(obj_id) data = request.POST or None form = self.realm.form(data, request.FILES or None, instance=item, user=request.user) if item is None: form.submit_title = self.realm.txt_form_add else: self.check_edit_permissions(request, item) form.submit_title = self.realm.txt_form_edit xross_listener(item=item) from sitecats.toolbox import get_category_aliases_under if isinstance(item, ModelWithCategory): item.has_categories = True category_handled = item.enable_category_lists_editor(request, additional_parents_aliases=get_category_aliases_under(), handler_init_kwargs={'error_messages_extra_tags': 'alert alert-danger'}, lists_init_kwargs={'show_title': True, 'cat_html_class': 'label label-default'}, editor_init_kwargs={'allow_add': True, 'allow_new': request.user.is_superuser, 'allow_remove': True,}) if category_handled: # Добавилась категория, перенаправим на эту же страницу. return redirect(self.realm.get_edit_urlname(), item.id, permanent=True) show_modetation_hint = self.realm.model not in (User, Article, Opinion, Community) if data is None: if show_modetation_hint: message_warning(request, 'Обратите внимание, что на данном этапе развития проекта добавляемые материалы проходят модерацию, прежде чем появиться на сайте.') if form.is_valid(): if item is None: form.instance.submitter = request.user item = form.save() message_success(request, 'Объект добавлен.') if show_modetation_hint: message_info(request, 'Данный объект появится на сайте после модерации.') return redirect(item, permanent=True) else: form.instance.last_editor = request.user form.save() message_success(request, 'Данные сохранены.') return redirect(self.realm.get_edit_urlname(), item.id, permanent=True) return self.render(request, {'form': form, self.realm.name: item, 'item': item})
def get(self, request, obj_id): item = self.get_object_or_404(obj_id) if not request.user.is_superuser: if item.is_deleted(): # Запрещаем доступ к удалённым. raise Http404() elif item.is_draft() and hasattr(item, 'submitter') and item.submitter != request.user: # Закрываем доступ к чужим черновикам. raise PermissionDenied() item.has_discussions = False if isinstance(item, ModelWithDiscussions): item.has_discussions = True xross_listener(item=item) try: self._attach_data(item, request) except RedirectRequired: return redirect(item, permanent=True) item_rating_allowed = self._is_rating_allowed(request, item) try: self.check_edit_permissions(request, item) item_edit_allowed = True except PermissionDenied: item_edit_allowed = False if isinstance(item, ModelWithCategory): item.has_categories = True item.set_category_lists_init_kwargs({'show_title': True, 'cat_html_class': 'label label-default'}) # Нарочно передаём item под двумя разными именами. # Требуется для упрощения наслования шаблонов. context = { self.realm.name: item, 'item': item, 'item_edit_allowed': item_edit_allowed, 'item_rating_allowed': item_rating_allowed } self.update_context(context, request) return self.render(request, context)
def inspector_main(request): """Main entry point. Link it to URL whatever you like. :param request: """ username = '' token = '' if os.path.exists(CONFIG_NAME): conf = ConfigParser() conf.read(CONFIG_NAME) username = conf['core']['username'] token = conf['core']['token'] xross_listener(http_method='POST') return render(request, 'issueinspector/index.html', { 'username': username, 'token': token, })
def get(self, request, obj_id): item = self.get_object_or_404(obj_id) self.check_view_permissions(request, item) item.has_discussions = False if isinstance(item, ModelWithDiscussions): item.has_discussions = True xross_listener(item=item) try: self._attach_data(item, request) except RedirectRequired: return redirect(item, permanent=True) item_rating_allowed = self._is_rating_allowed(request, item) try: self.check_edit_permissions(request, item) item_edit_allowed = True except PermissionDenied: item_edit_allowed = False if isinstance(item, ModelWithCategory): item.has_categories = True item.set_category_lists_init_kwargs({'show_title': True, 'cat_html_class': 'label label-default'}) # Нарочно передаём item под двумя разными именами. # Требуется для упрощения наслования шаблонов. context = { self.realm.name: item, 'item': item, 'item_edit_allowed': item_edit_allowed, 'item_rating_allowed': item_rating_allowed } self.update_context(context, request) return self.render(request, context)
def get(self, request, obj_id): item = self.get_object_or_404(obj_id) if not request.user.is_superuser: if item.status == RealmBaseModel.STATUS_DELETED: # Запрещаем доступ к удалённым. raise Http404() elif item.status == RealmBaseModel.STATUS_DRAFT and hasattr(item, 'submitter') and item.submitter != request.user: # Закрываем доступ к чужим черновикам. raise PermissionDenied() item.has_opinions = False if isinstance(item, ModelWithOpinions): item.has_opinions = True xross_listener(item=item) try: self._handle_opinion_form(item, request) self._attach_data(item, request) except RedirectRequired: return redirect(item, permanent=True) try: item_edit_allowed = (self.realm.is_allowed_edit() and (request.user.is_superuser or request.user == item.submitter)) except AttributeError: item_edit_allowed = (self.realm.is_allowed_edit() and request.user == item) if isinstance(item, ModelWithCategory): item.has_categories = True item.set_category_lists_init_kwargs({'show_title': True, 'cat_html_class': 'label label-default'}) # Нарочно передаём item под двумя разными именами. # Требуется для упрощения наслования шаблонов. context = {self.realm.name: item, 'item': item, 'item_edit_allowed': item_edit_allowed} self._update_context(context) return self.render(request, context)
def get(self, request: HttpRequest, obj_id: Optional[int] = None) -> HttpResponse: item = None if obj_id is not None: item = self.get_object_or_404(obj_id) data = None if 'pythonz_form' in request.POST: data = request.POST form = self.realm.form(data, request.FILES or None, instance=item, user=request.user) if item is None: form.submit_title = self.realm.txt_form_add else: self.check_edit_permissions(request, item) form.submit_title = self.realm.txt_form_edit xross_listener(http_method='POST', item=item) if isinstance(item, ModelWithCategory): item.has_categories = True category_handled = item.enable_category_lists_editor( request, additional_parents_aliases=get_category_aliases_under(), handler_init_kwargs={ 'error_messages_extra_tags': 'alert alert-danger' }, lists_init_kwargs={ 'show_title': True, 'cat_html_class': 'label label-default' }, editor_init_kwargs={ 'allow_add': True, 'allow_new': request.user.is_superuser, 'allow_remove': True, 'category_separator': ', ' }) if category_handled: # Добавилась категория, перенаправим на эту же страницу. return redirect(self.realm.get_edit_urlname(), item.id, permanent=True) show_modetation_hint = self.realm.model not in (User, Article, Discussion, Community, Event) if data is None: if show_modetation_hint: message_warning( request, 'Обратите внимание, что на данном этапе развития проекта добавляемые ' 'материалы проходят модерацию, прежде чем появиться на сайте.' ) if item is None: redirector = lambda: redirect(item, permanent=True) else: redirector = lambda: redirect( self.realm.get_edit_urlname(), item.id, permanent=True) if form.is_valid(): try: if item is None: form.instance.submitter = request.user item = form.save() message_success(request, 'Объект добавлен.') if show_modetation_hint: message_info( request, 'Данный объект появится на сайте после модерации.') else: form.instance.last_editor = request.user form.save() message_success(request, 'Данные сохранены.') return redirector() except PythonzException as e: message_error(request, e.message) context = {'form': form, self.realm.name: item, 'item': item} try: self.update_context(context, request) except RedirectRequired: return redirector() return self.render(request, context)