Пример #1
0
    def enable_publish(self, request, queryset):
        result = None
        failed_objects = []
        for publish in queryset:
            #modify the table data
            if publish.status != EnabledStatus.instance().name:
                #status is changed
                publish.status = EnabledStatus.instance().name
                publish.pending_actions = PublishAction.publish_all_action
                try:
                    publish.save(update_fields=['status', 'pending_actions'])
                except:
                    error = sys.exc_info()
                    failed_objects.append(
                        ("{0}:{1}".format(publish.workspace.name,
                                          publish.name),
                         traceback.format_exception_only(error[0], error[1])))
                    #update table failed, continue to process the next publish
                    continue

        if failed_objects:
            messages.warning(
                request,
                mark_safe(
                    "Enable failed for some selected publishs:<ul>{0}</ul>".
                    format("".join([
                        "<li>{0} : {1}</li>".format(o[0], o[1])
                        for o in failed_objects
                    ]))))
        else:
            messages.success(request,
                             "Enable successfully for all selected publishs")
Пример #2
0
    def enable_publish(self,request,queryset):
        result = None
        failed_objects = []
        for publish in queryset:
            #modify the table data
            if publish.status != EnabledStatus.instance().name:
                #status is changed
                publish.status = EnabledStatus.instance().name
                publish.pending_actions = PublishAction.publish_all_action
                try:
                    publish.save(update_fields=['status','pending_actions'])
                except:
                    error = sys.exc_info()
                    failed_objects.append(("{0}:{1}".format(publish.workspace.name,publish.name),traceback.format_exception_only(error[0],error[1])))
                    #update table failed, continue to process the next publish
                    continue

        if failed_objects:
            messages.warning(request, mark_safe("Enable failed for some selected publishs:<ul>{0}</ul>".format("".join(["<li>{0} : {1}</li>".format(o[0],o[1]) for o in failed_objects]))))
        else:
            messages.success(request, "Enable successfully for all selected publishs")
Пример #3
0
    def edit(self,instance):
        existing_instance = None
        from tablemanager.models import Publish
        if instance.pk:
            existing_instance = Publish.objects.get(pk = instance.pk)

        self._action = 0
        if existing_instance:
            self._action = existing_instance.pending_actions or 0

            for f in  instance._meta.fields:
                rel1 = getattr(instance,f.name)
                rel2 = getattr(existing_instance,f.name)
                if isinstance(f,models.OneToOneField):
                    if (rel1 == None or rel1.is_empty):
                        if (rel2 == None or rel2.is_empty):
                            pass
                        else:
                            self.column_changed(f.name)
                    elif (rel2 == None or rel2.is_empty):
                        self.column_changed(f.name)
                    else:
                        index = 0
                        for t in rel1.normal_tables:
                            if t == rel2.normal_tables[index]:
                                pass
                            else:
                                self.column_changed(f.name)
                                break;
                            index += 1
                elif f.name == "status":
                    if rel1 != EnabledStatus.instance().name:
                        self._action = 0
                        break
                    elif rel1 != rel2:
                        self._action = self.publish_all_action
                        break
                else:
                    if rel1 != rel2:
                        self.column_changed(f.name)
        else:
            self._action = self.publish_all_action

        return self