def form_valid(self, form): response = super().form_valid(form) if hasattr(form, 'multiple_objects_created') and form.multiple_objects_created > 1: msg = '%d "%s" were created/updated successfully' % ( form.multiple_objects_created, cap_words(self.object._meta.verbose_name_plural)) else: msg = base_success_msg % ( cap_words(self.object._meta.verbose_name), self.object.__str__(), self.success_message) messages.success(self.request, msg) return response
def post(self, request, *args, **kwargs): message = 'Success' status = 'success' if 'new_task_queue' not in request.POST: tq_form = TaskQueueChoiceForm(request.POST) if not tq_form.is_valid(): status = 'error' message = 'Please choose Task Queue' else: tq_form = TaskQueueForm(request.POST) project_form_class = ProjectForm if 'new_project' in request.POST else ProjectChoiceForm project_form = project_form_class(request.POST) if not tq_form.is_valid(): status = 'error' message = 'Task Queue: %s' % '; '.join( '{} - {}'.format(cap_words(field), ' ,'.join(errors)) for field, errors in tq_form.errors.items()) elif 'new_project' in request.POST and not project_form.is_valid(): status = 'error' message = 'Project: %s' % '; '.join( '{} - {}'.format(cap_words(field), ' ,'.join(errors)) for field, errors in project_form.errors.items()) if status == 'success': document_pks = DocumentCluster.objects.get(pk=request.GET['cluster_pk']) \ .documents.values_list('pk', flat=True) if 'new_task_queue' in request.POST: task_queue = TaskQueue.objects.create( description=request.POST['description']) if 'reviewers' in request.POST: task_queue.reviewers.set(request.POST.getlist('reviewers')) else: task_queue = TaskQueue.objects.get( pk=request.POST['task_queue']) task_queue.documents.add(*document_pks) project = None if 'new_project' in request.POST: project = Project.objects.create( name=request.POST['name'], description=request.POST['project_description']) elif 'project' in request.POST: project = Project.objects.get(pk=request.POST['project']) if project: project.task_queues.add(task_queue) return JsonResponse({ 'message': message, 'status': status }, encoder=DjangoJSONEncoder, safe=False)
def post(self, request, *args, **kwargs): obj = self.get_object() msg = base_success_msg % (cap_words( obj._meta.verbose_name), obj.__str__(), 'deleted') if request.is_ajax(): obj.delete() data = {'message': msg, 'level': 'success'} return JsonResponse(data, encoder=DjangoJSONEncoder, safe=False) messages.success(request, msg) return super().post(request, *args, **kwargs)
def get_deleted_objects(objs, request, admin_site): """ Patched django/contrib/admin/utils.py to skip collecting links for related nested objects """ try: obj = objs[0] except IndexError: return [], {}, set(), [] else: using = router.db_for_write(obj._meta.model) collector = NestedObjects(using=using) collector.collect(objs) model_count = {model._meta.verbose_name_plural: len(objs) for model, objs in collector.model_objs.items()} to_delete = ['{}: {}'.format(cap_words(k), v) for k, v in model_count.items()] return to_delete, model_count, None, None
def process(self, request): if not self.owner: return self.failure() defaults = { self.owner_field: self.owner, 'key': request.POST['key'], 'value': request.POST['value'] } if self.request.POST.get('property_pk'): _, created = self.property_class.objects.update_or_create( pk=self.request.POST['property_pk'], defaults=defaults) else: self.property_class.objects.create(**defaults) created = True action = 'created' if created else 'updated' self.success_message = '%s Property was successfully %s' \ % (cap_words(self.owner_class._meta.verbose_name), action) return self.success()
def process(self, request): if not self.owner: return self.failure() defaults = { self.owner_field: self.owner, 'tag': request.POST['tag'], 'user': request.user, 'timestamp': datetime.datetime.now() } if self.request.POST.get('tag_pk'): obj, created = self.tag_class.objects.update_or_create( pk=self.request.POST['tag_pk'], defaults=defaults) else: obj = self.tag_class.objects.create(**defaults) created = True action = 'created' if created else 'updated' self.success_message = '%s Tag %s was successfully %s' \ % (cap_words(self.owner_class._meta.verbose_name), str(obj), action) return self.success()
def capwords(value): """ Capitalizes the first character of every word in the value. Use except_words dict for exceptions. """ return cap_words(value)