Exemple #1
0
class SChTask( models.Model):
    
    class Meta:
        verbose_name = _("SChTask")
        verbose_name_plural = _("SChTask")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    code = models.TextField('Code', null=True, blank=True, editable=True, )
    doc = models.TextField('Doc', null=True, blank=True, editable=True, )
    

    def transform_template_name(self, request, template_name):
        if '/code/py/editor' in request.path:
            if template_name == 'schsys/db_field_edt.html':
                return 'schbuilder/db_field_edt_task.html'
        return template_name
Exemple #2
0
class EtapProjektuInw( models.Model):
    
    class Meta:
        verbose_name = _("Etap ")
        verbose_name_plural = _("Etapy projektu")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'projekty'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(ProjektInw, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    projektant = ext_models.ForeignKey(User, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Projektant', limit_choices_to = limit_users_change_etapprojektuinw)
    opis = models.CharField('Opis', null=False, blank=False, editable=True, max_length=64)
    status = models.CharField('Status', null=False, blank=False, editable=True, default='0',choices=StatusEtapu,max_length=64)
    data_od = models.DateField('Od', null=False, blank=False, editable=True, default=datetime.now,)
    data_do = models.DateField('Do', null=False, blank=False, editable=True, default=datetime.now,)
    

    def transform_form(self, request, form, is_new_form=False):
        if is_new_form:
            form.initial['projektant']=self.parent.projektant
Exemple #3
0
class SChChannelConsumer( models.Model):
    
    class Meta:
        verbose_name = _("Channel consumer")
        verbose_name_plural = _("Channel consumers")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    consumer_type = models.CharField('Consumer type', null=False, blank=False, editable=True, choices=Consumer_CHOICES,max_length=64)
    url = models.CharField('Url', null=True, blank=True, editable=True, max_length=255)
    consumer_code = models.TextField('Consumer code', null=True, blank=True, editable=False, )
    doc = models.TextField('Doc', null=True, blank=True, editable=False, )
    

    def init_new(self, request, view, param=None):
        if param:
            self.view_type=param
            defaults={}
            defaults['consumer_type'] = param
            return defaults
        else:
            return None
Exemple #4
0
class SChAppMenu( models.Model):
    
    class Meta:
        verbose_name = _("SChAppMenu")
        verbose_name_plural = _("SChAppMenu")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    url = models.CharField('Url', null=False, blank=False, editable=True, max_length=255)
    url_type = models.CharField('Url type', null=True, blank=True, editable=True, default='-',choices=Url_CHOICES,max_length=16)
    perms = models.CharField('Perms', null=True, blank=True, editable=True, max_length=255)
    icon = models.CharField('Icon', null=False, blank=False, editable=True, max_length=255)
    icon_size = models.CharField('Icon size', null=False, blank=False, editable=True, default='1',choices=IconSize_CHOICES,max_length=1)
    

    def not_standard_icon_size(self):
        if self.icon_size=='1':
            return False
        else:
            return True
    
    def get_perms(self):
        if self.perms and self.perms!=" ":
            return "'%s'" % self.perms
        else:
            return "None"
    
    def get_main_urls(self):
        return self.parent.get_urls(main=True)
    
    def get_urls(self):
        return self.parent.get_urls(main=False)
    
    def get_url_type_ext(self):
        if self.url_type in [None, '-']:
            return "?schtml=desktop"
        elif self.url_type == 'browser':
            return ''
        else:
            return '?schtml='+self.url_type
    
    def clean_url(self):
        return self.url.replace('$', '')
    
    def __str__(self):
        return self.name
Exemple #5
0
class SChLocale( models.Model):
    
    class Meta:
        verbose_name = _("Locale")
        verbose_name_plural = _("Locales")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChAppSet, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=16)
Exemple #6
0
class bookmarks( models.Model):
    
    class Meta:
        verbose_name = _("Bookmarks")
        verbose_name_plural = _("Bookmarks")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbrowser'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey('self', on_delete=models.CASCADE, null=True, blank=True, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=64)
    url = models.CharField('url', null=True, blank=True, editable=True, max_length=256)
Exemple #7
0
class SChTranslate( models.Model):
    
    class Meta:
        verbose_name = _("Translate")
        verbose_name_plural = _("Translate")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChLocale, on_delete=models.CASCADE, null=False, blank=False, editable=False, verbose_name='Parent', )
    description = models.CharField('Description', null=False, blank=False, editable=True, max_length=1024)
    translation = models.CharField('Translation', null=True, blank=True, editable=True, max_length=1024)
    status = models.CharField('Status', null=True, blank=True, editable=False, max_length=16)
Exemple #8
0
class SChFiles( models.Model):
    
    class Meta:
        verbose_name = _("SChFiles")
        verbose_name_plural = _("SChFiles")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    file_type = models.CharField('File  type', null=False, blank=False, editable=True, choices=FileType_CHOICES,max_length=3)
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=256)
    content = models.TextField('Content', null=True, blank=True, editable=False, )
Exemple #9
0
class Akcja( models.Model):
    
    class Meta:
        verbose_name = _("Akcja")
        verbose_name_plural = _("Akcje")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'projekty'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(EtapProjektuInw, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    typ_akcji = models.CharField('Typ akcji', null=False, blank=False, editable=True, choices=TypAkcji,max_length=64)
    opis = models.CharField('Opis', null=False, blank=False, editable=True, max_length=64)
    data = models.DateField('Data', null=False, blank=False, editable=True, default=datetime.now,)
    alert = models.BooleanField('Czy przypomnieć?', null=False, blank=False, editable=True, default=False,)
Exemple #10
0
class SChChoiceItem( models.Model):
    
    class Meta:
        verbose_name = _("SChChoiceItem")
        verbose_name_plural = _("SChChoiceItem")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChChoice, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    value = models.CharField('Value', null=False, blank=False, editable=True, max_length=255)
    

    def __str__(self):
        return self.name
Exemple #11
0
class SChForm( models.Model):
    
    class Meta:
        verbose_name = _("Form")
        verbose_name_plural = _("Form")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=64)
    module = models.CharField('Module', null=True, blank=True, editable=True, max_length=64)
    process_code = models.TextField('Process code', null=True, blank=True, editable=True, )
    end_class_code = models.TextField('End class code', null=True, blank=True, editable=True, )
    end_code = models.TextField('End code', null=True, blank=True, editable=True, )
    doc = models.TextField('Doc', null=True, blank=True, editable=True, )
Exemple #12
0
class SChTable( models.Model):
    
    class Meta:
        verbose_name = _("SChTable")
        verbose_name_plural = _("SChTable")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    base_table = models.CharField('Base table', null=True, blank=True, editable=True, max_length=255)
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    verbose_name = models.CharField('Verbose name', null=False, blank=False, editable=True, max_length=255)
    verbose_name_plural = models.CharField('Verbose name plural', null=False, blank=False, editable=True, max_length=255)
    metaclass_code = models.TextField('Metaclass code', null=True, blank=True, editable=False, )
    table_code = models.TextField('Table code', null=True, blank=True, editable=False, )
    ordering = models.CharField('Ordering', null=True, blank=True, editable=True, default="['id']",max_length=255)
    doc = models.TextField('Doc', null=True, blank=True, editable=False, )
    generic = models.BooleanField('Generic', null=False, blank=False, editable=True, default=False,)
    url_params = models.CharField('Url params', null=True, blank=True, editable=True, max_length=255)
    proxy_model = models.CharField('Proxy model', null=True, blank=True, editable=True, max_length=255)
    

    def get_models(self):
        return self.parent.get_models()
    
    def get_base_table(self):
        l = self.base_table.split('.')
        if len(l)>1 and l[-2]!='models':
            return l[-1]
        else:
            return self.base_table
    
    def __str__(self):
        return self.name
Exemple #13
0
class Audyt( models.Model):
    
    class Meta:
        verbose_name = _("Audyt")
        verbose_name_plural = _("Audyty")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'audyty'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(TypAudytu, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    data = models.DateField('Data', null=False, blank=False, editable=True, )
    data_sporz = models.DateTimeField('Data sporządzenia', null=True, blank=True, editable=True, )
    data_zatw = models.DateTimeField('Data zatwierdzenia', null=True, blank=True, editable=True, )
    status = models.CharField('Staus', null=True, blank=True, editable=True, default='0',choices=StatusChoices,max_length=1)
    opis1 = models.TextField('Opis 1', null=True, blank=True, editable=True, )
    opis2 = models.TextField('Opis 2', null=True, blank=True, editable=True, )
    opis3 = models.TextField('Opis 3', null=True, blank=True, editable=True, )
Exemple #14
0
class DocHeadStatus(JSONModel):
    class Meta:
        verbose_name = _("Document head status")
        verbose_name_plural = _("Documents head status")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schelements'

        ordering = ['id']

    parent = ext_models.HiddenForeignKey(
        DocHead,
        on_delete=models.CASCADE,
        null=False,
        blank=False,
        editable=True,
        verbose_name='Parent',
    )
    date = models.DateTimeField(
        'Date',
        null=False,
        blank=False,
        editable=True,
    )
    name = models.CharField('Name',
                            null=False,
                            blank=False,
                            editable=True,
                            max_length=16)
    description = models.CharField('Description',
                                   null=True,
                                   blank=True,
                                   editable=False,
                                   max_length=64)
    operator = models.CharField('Operator',
                                null=True,
                                blank=True,
                                editable=True,
                                max_length=32)
Exemple #15
0
class SChStatic( models.Model):
    
    class Meta:
        verbose_name = _("Static file")
        verbose_name_plural = _("Static files")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChAppSet, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    type = models.CharField('Type', null=False, blank=False, editable=True, choices=Static_CHOICES,max_length=1)
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=64)
    code = models.TextField('Code', null=True, blank=True, editable=False, )
    doc = models.TextField('Doc', null=True, blank=True, editable=False, )
    

    def __str__(self):
        return self.get_type_display() + "/" + self.name
Exemple #16
0
class SChTemplate( models.Model):
    
    class Meta:
        verbose_name = _("SChTemplate")
        verbose_name_plural = _("SChTemplate")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    direct_to_template = ext_models.NullBooleanField('Direct to template', null=True, blank=True, editable=True, )
    url = models.CharField('Url', null=True, blank=True, editable=True, max_length=64)
    url_parm = models.CharField('Parameters passed to the template', null=True, blank=True, editable=True, max_length=128)
    template_code = models.TextField('Template code', null=True, blank=True, editable=False, )
    static_files = models.ManyToManyField(SChStatic, null=True, blank=True, editable=True, verbose_name='Static files', )
    tags_mount = models.CharField('Mount component tags', null=True, blank=True, editable=True, max_length=256)
    

    def get_url_name(self):
        if self.url and self.url!="":
            return self.url
        else:
            return self.name
    
    def get_url(self):
        if self.direct_to_template:
            url_name = self.get_url_name()
            app_name = self.parent.name
            template_name = self.name.lower().replace(' ','_')+".html"
            if self.url_parm:
                param = self.url_parm
            else:
                param = ""
            return "url(r'^%s', TemplateView.as_view(template_name='%s/%s'), {%s})" % (url_name, app_name, template_name, param )
        else:
            return None
                
    def _get_table_fields(self, tables):
        ret=[]
        if len(tables)==1:
            table = tables[0]
            for pos in table.schfield_set.all():
                ret.append(pos.name)
            if table.base_table and table.base_table != None:
                ret2 = self._get_table_fields(SChTable.objects.filter(name=table.base_table))
                for pos in ret2:
                    ret.append(pos)
        return ret
    
    def get_table_fields(self):
        return self._get_table_fields(self.parent.schtable_set.filter(parent=self.parent).filter(name=self.name))
    
    def get_table_methods(self):
        ret=[]
        tables = self.parent.schtable_set.filter(parent=self.parent).filter(name=self.name)
        if len(tables)==1:
            table = tables[0]
            if table.table_code:
                for line in table.table_code.split('\n'):
                    if line.startswith('def'):
                        ret.append(line[4:])
        return ret
    
    def get_django_filters(self):
        ret = []
        django_engine = engines['django'].engine
        for pos in django_engine.template_builtins:
            for f in pos.filters:
                ret.append(f)
        return ret
    
    def get_django_tags(self):
        ret = []
        django_engine = engines['django'].engine
        for pos in django_engine.template_builtins:
            for f in pos.tags:
                ret.append(f)
        return ret
    
    def get_blocks(self):
        ret=[]
        form_path = os.path.join(os.path.dirname(__file__)+"/../../../templates_src/form.ihtml")
        f = open(form_path, "rt")
        buf = f.read()
        f.close()
        for line in buf.split('\n'):
            if "%%" in line:
                ret.append(superstrip(line).replace(' ',''))
        return ret
    
    def get_template_widgets(self):
        return widgets
    
    def transform_template_name(self, request, template_name):
        if 'template_code/py/editor' in request.path:
            if template_name == 'schsys/db_field_edt.html':
                return 'schbuilder/db_field_edt_template.html'
        return template_name
    
    def __str__(self):
        return self.name
Exemple #17
0
class DocRegStatus(models.Model):
    class Meta:
        verbose_name = _("Document status")
        verbose_name_plural = _("Document status")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schelements'

        ordering = ['id']

    parent = ext_models.HiddenForeignKey(
        DocReg,
        on_delete=models.CASCADE,
        null=False,
        blank=False,
        editable=True,
        verbose_name='Parent',
    )
    order = models.IntegerField(
        'Order',
        null=False,
        blank=False,
        editable=True,
    )
    name = models.CharField('Name',
                            null=False,
                            blank=False,
                            editable=True,
                            max_length=16)
    description = models.CharField('Description',
                                   null=True,
                                   blank=True,
                                   editable=True,
                                   max_length=64)
    icon = models.CharField('Icon',
                            null=True,
                            blank=True,
                            editable=True,
                            max_length=64)
    accept_proc = models.TextField(
        'Accept status procedure',
        null=True,
        blank=True,
        editable=False,
    )
    undo_proc = models.TextField(
        'Undo status procedure',
        null=True,
        blank=True,
        editable=False,
    )
    can_set_proc = models.TextField(
        'Check if status can be set',
        null=True,
        blank=True,
        editable=False,
    )
    can_undo_proc = models.TextField(
        'Check if status can be removed',
        null=True,
        blank=True,
        editable=False,
    )
Exemple #18
0
class DocItem(JSONModel):
    class Meta:
        verbose_name = _("Document item")
        verbose_name_plural = _("Document items")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schelements'

        ordering = ['id']

    parent = ext_models.HiddenForeignKey(
        DocHead,
        on_delete=models.CASCADE,
        null=False,
        blank=False,
        editable=False,
        verbose_name='Parent',
    )
    parent_item = ext_models.HiddenForeignKey(
        'self',
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        editable=False,
        verbose_name='Parent item',
    )
    order = models.IntegerField(
        'Order',
        null=False,
        blank=False,
        editable=False,
        default=1,
    )
    date = models.DateField(
        'Date',
        null=False,
        blank=False,
        editable=False,
    )
    description = models.CharField('Description',
                                   null=True,
                                   blank=True,
                                   editable=True,
                                   max_length=255)
    amount = models.DecimalField('Amount',
                                 null=True,
                                 blank=True,
                                 editable=True,
                                 max_digits=16,
                                 decimal_places=2)
    element = models.ForeignKey(
        Element,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        editable=True,
        verbose_name='Element',
    )
    level = models.IntegerField(
        'Level',
        null=False,
        blank=False,
        editable=False,
        default=0,
    )
    param1 = models.CharField('Parameter 1',
                              null=True,
                              blank=True,
                              editable=False,
                              max_length=16)
    param2 = models.CharField('Parameter 2',
                              null=True,
                              blank=True,
                              editable=False,
                              max_length=16)
    param3 = models.CharField('Parameter 3',
                              null=True,
                              blank=True,
                              editable=False,
                              max_length=16)

    @staticmethod
    def template_for_list(context, doc_type):
        if doc_type in ('html', 'json'):
            if 'parent_pk' in context['view'].kwargs:
                parent_pk = int(context['view'].kwargs['parent_pk'])
                dochead = DocHead.objects.get(pk=parent_pk)
                reg = dochead.doc_type_parent.parent
                names = []
                names.append((reg.app + "/" + dochead.doc_type_parent.name +
                              "_docitem_list.html").lower())
                names.append((reg.app + "/" + reg.name.replace('/', '_') +
                              "_docitem_list.html").lower())

                x = reg.get_parent()
                while x:
                    names.append(x.app + "/" + x.name.replace('/', '_') +
                                 "_docitem_list.html")
                    x = x.get_parent()

                template = select_template(names)
                if template:
                    return template

        return None

    def template_for_object(self, context, doc_type):
        if doc_type in ('html', 'json'):
            try:
                obj = DocItem.objects.get(pk=self.id)
                dochead = obj.parent
                reg = dochead.doc_type_parent.parent
                names = []
                names.append((reg.app + "/" + dochead.doc_type_parent.name +
                              "_docitem_edit.html").lower())
                names.append((reg.app + "/" + reg.name.replace('/', '_') +
                              "_docitem_edit.html").lower())

                x = reg.get_parent()
                while x:
                    names.append(x.app + "/" + x.name.replace('/', '_') +
                                 "_docitem_edit.html")
                    x = x.get_parent()

                template = select_template(names)
                if template:
                    return template
            except:
                return None

        return None

    def get_form_source(self):
        #obj = DocItem.objects.get(pk=self.id)
        obj = self
        if obj.parent.doc_type_parent.item_form:
            return obj.parent.doc_type_parent.item_form

        x = obj.parent.doc_type_parent.parent
        while x:
            if x.item_form:
                return x.item_form
            x = x.get_parent()

        return None

    def init_new(self, request, view, param=None):
        if 'parent_pk' in view.kwargs:
            parent_pk = view.kwargs['parent_pk']
            parent = DocHead.objects.get(pk=parent_pk)
            items = DocItem.objects.filter(parent=parent).order_by('-order')
            if len(items) > 0:
                max_nr = int(items[0].order) + 1
            else:
                max_nr = 1

            if request.POST:
                return {
                    'parent': str(parent.id),
                    'order': max_nr,
                    'date': datetime.datetime.now(),
                    'level': 0
                }

        return None

    def save(self, *args, **kwargs):
        if self.id:
            obj = DocItem.objects.get(pk=self.id).parent
            save_fun_src = None
            if obj.doc_type_parent.save_head_fun:
                save_fun_src = obj.doc_type_parent.save_item_fun
            else:
                x = obj.doc_type_parent.parent
                while x:
                    if x.save_head_fun:
                        save_fun_src = x.save_item_fun
                        break
                    x = x.get_parent()
            if save_fun_src:
                exec(save_fun_src)

        super().save(*args, **kwargs)
Exemple #19
0
class DocHead(JSONModel):
    class Meta:
        verbose_name = _("Document header")
        verbose_name_plural = _("Document headers")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schelements'

        ordering = ['id']

    parents = models.ManyToManyField(
        'self',
        null=False,
        blank=False,
        editable=False,
        verbose_name='Parents',
    )
    doc_type_parent = ext_models.HiddenForeignKey(
        DocType,
        on_delete=models.CASCADE,
        null=False,
        blank=False,
        editable=False,
        verbose_name='Document type parent',
    )
    org_chart_parent = ext_models.HiddenForeignKey(
        OrgChartElem,
        on_delete=models.CASCADE,
        null=True,
        blank=True,
        editable=False,
        verbose_name='Organization chart parent',
    )
    number = models.CharField('Document number',
                              null=True,
                              blank=True,
                              editable=True,
                              max_length=32)
    description = models.CharField('Description',
                                   null=True,
                                   blank=True,
                                   editable=True,
                                   max_length=64)
    date = models.DateTimeField(
        'Date',
        null=False,
        blank=False,
        editable=False,
    )
    status = models.CharField('Status',
                              null=True,
                              blank=True,
                              editable=False,
                              max_length=16)
    operator = models.CharField('Operator',
                                null=True,
                                blank=True,
                                editable=False,
                                max_length=32)
    param1 = models.CharField('Parameter 1',
                              null=True,
                              blank=True,
                              editable=True,
                              max_length=16)
    param2 = models.CharField('Parameter 2',
                              null=True,
                              blank=True,
                              editable=True,
                              max_length=16)
    param3 = models.CharField('Parameter 3',
                              null=True,
                              blank=True,
                              editable=True,
                              max_length=16)

    @classmethod
    def get_documents_for_reg(cls, value):
        reg = DocReg.objects.filter(name=value.replace('_', '/'))
        ret = []
        if len(reg) == 1:
            docs = DocType.objects.filter(parent=reg[0])
            for doc in docs:
                ret.append(doc)
        return ret

    @classmethod
    def filter(cls, value):
        if value:
            rej = value.replace('_', '/')
            return cls.objects.filter(doc_type_parent__parent__name=rej)
        else:
            return cls.objects.all()

    def init_new(self, request, view, add_param=None):
        if add_param:
            docs = DocType.objects.filter(name=add_param)
            if len(docs) == 1:
                self.doc_type_parent = docs[0]
                self.date = datetime.datetime.now()
                self.status = 'edit'
                self.operator = request.user.username

        return None

    @staticmethod
    def template_for_list(context, doc_type):
        if doc_type in ('html', 'json') and 'filter' in context:
            tmp = DocReg.objects.filter(
                name=context['filter'].replace('_', '/'))
            if len(tmp) == 1:
                names = []
                x = tmp[0]
                while x:
                    names.append((x.app + "/" + x.name.replace('/', '_') +
                                  "_dochead_list.html").lower())
                    x = x.get_parent()

                template = select_template(names)
                if template:
                    return template

        return None

    def template_for_object(self, context, doc_type):
        if self.id and doc_type in ('html', 'json'):
            try:
                obj = DocHead.objects.get(pk=self.id)
                reg = obj.doc_type_parent.parent
                names = []
                names.append((reg.app + "/" + obj.doc_type_parent.name +
                              "_dochead_edit.html").lower())
                names.append((reg.app + "/" + reg.name.replace('/', '_') +
                              "_dochead_edit.html").lower())
                x = reg.get_parent()
                while x:
                    names.append((x.app + "/" + x.name.replace('/', '_') +
                                  "_dochead_edit.html").lower())
                    x = x.get_parent()

                template = select_template(names)
                if template:
                    return template
            except:
                return None
        return None

    def get_form_source(self):
        if self.id:
            obj = DocHead.objects.get(pk=self.id)
            if obj.doc_type_parent.head_form:
                return obj.doc_type_parent.head_form

            x = obj.doc_type_parent.parent
            while x:
                if x.head_form:
                    return x.head_form
                x = x.get_parent()

        return None

    def save(self, *args, **kwargs):
        if self.id:
            obj = DocHead.objects.get(pk=self.id)
            save_fun_src = None
            if obj.doc_type_parent.save_head_fun:
                save_fun_src = obj.doc_type_parent.save_head_fun
            else:
                x = obj.doc_type_parent.parent
                while x:
                    if x.save_head_fun:
                        save_fun_src = x.save_head_fun
                        break
                    x = x.get_parent()
            if save_fun_src:
                exec(save_fun_src)

        super().save(*args, **kwargs)

    def get_visible_statuses(self, request=None):
        if self.id:
            obj = DocHead.objects.get(pk=self.id)
            reg = obj.doc_type_parent.parent
            while reg:
                statuses = reg.docregstatus_set.all().order_by('order')
                if len(statuses) > 0:
                    ret = []
                    for status in statuses:
                        if status.can_set_proc:
                            exec(status.can_set_proc)
                            data = locals()['can_set_proc'](request, self)
                            if data:
                                ret.append(status)
                        else:
                            ret.append(status)

                    return ret

                reg = reg.get_parent()

        return []

    def status_can_be_undo(self, request=None):
        if self.id:
            obj = DocHead.objects.get(pk=self.id)
            reg = obj.doc_type_parent.parent
            statuses = reg.docregstatus_set.filter(name=obj.status)
            if len(statuses) == 1:
                status = statuses[0]
                if status.can_undo_proc:
                    exec(status.can_undo_proc)
                    data = locals()['can_undo_proc'](request, self)
                    if data:
                        return True
                    else:
                        return False
            if obj.status == "" or obj.status == "edit":
                return False
            else:
                return True

        return False
Exemple #20
0
class DocType(models.Model):
    class Meta:
        verbose_name = _("Type of document")
        verbose_name_plural = _("Types of documents")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schelements'

        ordering = ['id']

    parent = ext_models.HiddenForeignKey(
        DocReg,
        on_delete=models.CASCADE,
        null=False,
        blank=False,
        editable=True,
        verbose_name='Parent',
    )
    name = models.CharField('Name',
                            null=False,
                            blank=False,
                            editable=True,
                            max_length=16)
    description = models.CharField('Description',
                                   null=False,
                                   blank=False,
                                   editable=True,
                                   max_length=64)
    correction = ext_models.NullBooleanField(
        'Correction',
        null=True,
        blank=True,
        editable=True,
    )
    head_form = models.TextField(
        'Head form',
        null=True,
        blank=True,
        editable=False,
    )
    item_form = models.TextField(
        'Item form',
        null=True,
        blank=True,
        editable=False,
    )
    save_head_fun = models.TextField(
        'Save head function',
        null=True,
        blank=True,
        editable=False,
    )
    save_item_fun = models.TextField(
        'Save item function',
        null=True,
        blank=True,
        editable=False,
    )
    doctype_status = models.CharField('Status of document type',
                                      null=True,
                                      blank=True,
                                      editable=True,
                                      choices=doctype_status,
                                      max_length=1)
Exemple #21
0
class AccountOperation(models.Model):
    class Meta:
        verbose_name = _("Account operation")
        verbose_name_plural = _("Account operations")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schelements'

        ordering = ['id']

    parent = ext_models.HiddenForeignKey(
        DocItem,
        on_delete=models.CASCADE,
        null=False,
        blank=False,
        editable=True,
        verbose_name='Parent',
    )
    date = models.DateTimeField(
        'Date',
        null=False,
        blank=False,
        editable=False,
        default=datetime.datetime.now,
    )
    description = models.CharField('Description',
                                   null=False,
                                   blank=False,
                                   editable=True,
                                   max_length=255)
    payment = models.CharField('Name of payment',
                               null=True,
                               blank=True,
                               editable=True,
                               max_length=64)
    account_state = ext_models.ForeignKey(AccountState,
                                          on_delete=models.CASCADE,
                                          null=True,
                                          blank=True,
                                          editable=True,
                                          verbose_name='Account state',
                                          related_name='accountoper_set')
    sign = models.IntegerField(
        'Sign - debit or credit',
        null=False,
        blank=False,
        editable=True,
    )
    amount = models.DecimalField('Amount',
                                 null=False,
                                 blank=False,
                                 editable=True,
                                 max_digits=16,
                                 decimal_places=2)
    enabled = ext_models.NullBooleanField(
        'Enabled',
        null=True,
        blank=True,
        editable=False,
        default=False,
    )

    def get_account_state(self,
                          account,
                          element,
                          period,
                          target,
                          classifier1=None,
                          classifier2=None,
                          classifier3=None,
                          subcode="",
                          aggregate=False):
        if type(account) == str:
            _account = Account.objects.filter(name=account)[0]
        else:
            _account = account

        if type(element) == str:
            _element = Element.objects.filter(name=element)[0]
        else:
            _element = element

        if type(target) == str:
            _target = OrgChartElem.objects.filter(code=target)[0]
        else:
            _target = target

        objs = AccountState.objects.filter(parent=_account,
                                           target=_target,
                                           classifier1value=classifier1,
                                           classifier2value=classifier2,
                                           classifier3value=classifier3,
                                           period=period,
                                           subcode=subcode,
                                           element=_element)
        if objs.count() > 0:
            return objs[0]
        else:
            obj = AccountState()
            obj.parent = _account
            obj.target = _target
            obj.classifier1value = classifier1
            obj.classifier2value = classifier2
            obj.classifier3value = classifier3
            obj.period = period
            obj.subcode = subcode
            obj.element = _element
            obj.aggregate = aggregate
            obj.debit = 0
            obj.credit = 0
            obj.save()
            return obj

    def update_account_state(self, debit, credit):
        s = self.account_state
        account = s.parent
        for period in [s.period, '*']:
            for target in [s.target, None]:
                for subcode in [s.subcode, "*"]:
                    state = self.get_account_state(account,
                                                   s.element,
                                                   period,
                                                   target,
                                                   subcode=subcode,
                                                   aggregate=True)
                    state.debit += debit
                    state.credit += credit
                    state.save()
        account = account.parent
        subcode = "*"
        while account:
            for period in [s.period, '*']:
                for target in [s.target, None]:
                    state = self.get_account_state(account,
                                                   s.element,
                                                   period,
                                                   target,
                                                   subcode=subcode,
                                                   aggregate=True)
                    state.debit += debit
                    state.credit += credit
                    state.save()
            account = account.parent

    def confirm(self):
        ret = False
        with transaction.atomic():
            self.refresh_from_db()
            if not self.enabled:
                self.enabled = True
                if self.sign > 0:
                    self.update_account_state(0, self.amount)
                else:
                    self.update_account_state(self.amount, 0)
                self.save()
                ret = True
        return ret

    def cancel_confirmation(self):
        ret = False
        with transaction.atomic():
            self.refresh_from_db()
            if self.enabled:
                self.enabled = False
                if self.sign > 0:
                    self.update_account_state(0, -1 * self.amount)
                else:
                    self.update_account_state(-1 * self.amount, 0)
                self.save()
                ret = True
        return ret
Exemple #22
0
class SChField( models.Model):
    
    class Meta:
        verbose_name = _("SChField")
        verbose_name_plural = _("SChField")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChTable, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=True, blank=True, editable=True, max_length=255)
    description = models.CharField('Description', null=True, blank=True, editable=True, max_length=255)
    type = models.CharField('Type', null=False, blank=False, editable=True, choices=Field_CHOICES,max_length=64)
    null = models.BooleanField('Null', null=False, blank=False, editable=True, default=False,)
    blank = models.BooleanField('Blank', null=False, blank=False, editable=True, default=False,)
    editable = models.BooleanField('Editable', null=False, blank=False, editable=True, default=False,)
    unique = models.BooleanField('Unique', null=False, blank=False, editable=True, default=False,)
    db_index = models.BooleanField('DB index', null=False, blank=False, editable=True, default=False,)
    default = models.CharField('Default', null=True, blank=True, editable=True, max_length=255)
    help_text = models.CharField('Help text', null=True, blank=True, editable=True, max_length=255)
    choices = models.CharField('Choices', null=True, blank=True, editable=True, max_length=255)
    rel_to = models.CharField('Relation to', null=True, blank=True, editable=True, max_length=255)
    param = models.CharField('Param', null=True, blank=True, editable=True, max_length=255)
    url_params = models.CharField('Url params', null=True, blank=True, editable=True, max_length=255)
    

    def init_new(self, request, view, param=None):
        if param:
            self.type=param
    
            defaults=self.get_field_defaults()
            defaults['type'] = param
    
            for key in defaults:
                value = getattr(self, key)
                if not value:
                    setattr(self, key, defaults[key])
            return defaults
        else:
            return None
    
    def save(self, force_insert=False, force_update=False):
        super(SChField, self).save(force_insert, force_update)
    
    def __str__(self):
        return self.name
    
    def is_rel(self):
        if 'Key' in self.type or 'Many' in self.type:
            return True
        else:
            return False
    
    def is_generic_rel(self):
        if self.is_rel() and self.type[0]=='G':
            return True
        else:
            return False
     
    def has_choices(self):
        if self.type in ('CharField',):
            return True
        else:
            return False
    
    def get_models(self):
        return self.parent.get_models()
    
    def as_declaration(self):
        #if 'TreeForeignKey' in self.type:
        #    if not self.parent.base_table in ("", "models.Model"):
        #        return ""
        
        if self.type == 'UserField':
            return self.param
        type_desc = dict(Field_CHOICES)[self.type]
        if type_desc.endswith('!'):
            module = "ext_models."
        else:
            module = 'models.'
        if self.is_rel():
            rel_model =self.rel_to.split('.')[-1]
    
            if self.type[0]=='G':
                if 'ForeignKey' in self.type:
                    ret = "%s = %s%s(%s, on_delete=models.CASCADE, null=%s, blank=%s, editable=%s, verbose_name='%s', " % \
                        (self.name, module, self.type[1:], rel_model, self.null, self.blank, self.editable, self.description)
                else:
                    ret = "%s = %s%s(%s, null=%s, blank=%s, editable=%s, verbose_name='%s', " % \
                        (self.name, module, self.type[1:], rel_model, self.null, self.blank, self.editable, self.description)
            else:
                if 'ForeignKey' in self.type:
                    ret = "%s = %s%s(%s, on_delete=models.CASCADE, null=%s, blank=%s, editable=%s, verbose_name='%s', " % \
                        (self.name, module, self.type, rel_model, self.null, self.blank, self.editable, self.description)
                else:
                    ret = "%s = %s%s(%s, null=%s, blank=%s, editable=%s, verbose_name='%s', " % \
                        (self.name, module, self.type, rel_model, self.null, self.blank, self.editable, self.description)
        else:
            ret = "%s = %s%s('%s', null=%s, blank=%s, editable=%s, " % \
                (self.name, module, self.type, self.description, self.null, self.blank, self.editable)
        if self.unique:
            ret+= "unique=%s," % self.unique
        if self.default and len(self.default)>0:
            ret+= "default=%s," % self.default
        if self.help_text and len(self.help_text)>0:
            ret+= "help_text=%s," % self.help_text
        if self.choices:
            ret+="choices=%s," % self.choices
        if self.param and len(self.param)>0:
            ret+= self.param
            #.replace(':','=')
        ret += ")"
        return ret
    
    def get_field_defaults(self):
        ret = field_default.copy()
        if self.type in field_defaults:
            for key, value in field_defaults[self.type].items():
                ret[key]=value
        return ret
    
    def get_rel_to(self):
        if self.rel_to == "'self'":
            return self.parent.name
        else:
            return self.rel_to
            
    def get_relate_set_name(self):
        if self.param and 'related_name' in self.param:
            for pos in self.param.split(','):
                rec=pos.split('=')
                if rec[0].strip()=='related_name':
                    return rec[1].replace("'","").replace("\"","").strip()
        return self.parent.name.lower()+'_set'
        
    @classmethod
    def table_action(cls, list_view, request, data):
        return standard_table_action(cls, list_view, request, data, ['copy', 'paste'])
Exemple #23
0
class SChView( models.Model):
    
    class Meta:
        verbose_name = _("SChView")
        verbose_name_plural = _("SChView")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChApp, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=255)
    view_type = models.CharField('View type', null=False, blank=False, editable=True, choices=View_CHOICES,max_length=1)
    param = models.CharField('Param', null=True, blank=True, editable=True, max_length=255)
    url = models.CharField('Url', null=True, blank=True, editable=True, max_length=255)
    view_code = models.TextField('View code', null=True, blank=True, editable=False, )
    doc = models.TextField('Doc', null=True, blank=True, editable=False, )
    url_params = models.CharField('Url params', null=True, blank=True, editable=True, max_length=255)
    ret_type = models.CharField('Return value type', null=False, blank=False, editable=True, default='U',choices=ViewRetType_CHOICES,max_length=1)
    

    def init_new(self, request, view, param=None):
        if param:
            self.view_type=param
            defaults={}
            defaults['view_type'] = param
            if param=='r':
                self.param = 'pk'
                defaults['param'] = self.param
            if param=='t':
                pass
            if param=='u':
                defaults['param'] = '**argv'
                defaults['url_params'] = '{}'
                defaults['url'] = 'fun/(?P<parm>\d+)/$'
            return defaults
        else:
            return None
    
    def get_name(self):
        if '/' in self.name:
            return self.name.split('/')[-1]
        else:
            return self.name
    
    def get_url(self):
        name = self.get_name()
        if self.view_type == 'u':
            if self.url_params and self.url_params!="":
                return "url('%s', views.%s, %s)" % (self.url, name, self.url_params)
            else:
                return "url('%s', views.%s)" % (self.url, name)
        else:
            if self.view_type == 'r':
                bname='gen_row_action'
            else:
                bname='gen_tab_action'
        
            if self.url_params and self.url_params!="":
                if '#' in self.name:
                    x = self.name.split('#')
                    return "%s('%s', '%s', views.%s, %s)" % (bname, self.url, x[0], x[1], self.url_params)
                else:
                    return "%s('%s', '%s', views.%s, %s)" % (bname, self.url, self.name, name,self.url_params)
            else:
                if '#' in self.name:
                    x = self.name.split('#')
                    return "%s('%s', '%s', views.%s)" % (bname, self.url, x[0], x[1])
                else:
                    return "%s('%s', '%s', views.%s)" % (bname, self.url, self.name, name)
    
    def __str__(self):
        return self.name
    
    def transform_template_name(self, request, template_name):
        if '/view_code/py/editor' in request.path:
            if template_name == 'schsys/db_field_edt.html':
                return 'schbuilder/db_field_edt_mod.html'
        return template_name
    
    def get_models(self):
        return self.parent.get_models()
    
    def clean_url(self):
        return self.url.replace('$', '')
Exemple #24
0
class SChFormField( models.Model):
    
    class Meta:
        verbose_name = _("Form field")
        verbose_name_plural = _("Form field")
        default_permissions = ('add', 'change', 'delete', 'list')
        app_label = 'schbuilder'


        ordering = ['id']
        
        
    

    parent = ext_models.HiddenForeignKey(SChForm, on_delete=models.CASCADE, null=False, blank=False, editable=True, verbose_name='Parent', )
    name = models.CharField('Name', null=False, blank=False, editable=True, max_length=64)
    type = models.CharField('Type', null=False, blank=False, editable=True, choices=FormField_CHOICES,max_length=64)
    required = ext_models.NullBooleanField('Required', null=True, blank=True, editable=True, )
    label = models.CharField('Label', null=False, blank=False, editable=True, max_length=64)
    initial = models.CharField('Initial', null=True, blank=True, editable=True, max_length=256)
    widget = models.CharField('Widget', null=True, blank=True, editable=True, max_length=64)
    help_text = models.CharField('Help text', null=True, blank=True, editable=True, max_length=256)
    error_messages = models.CharField('Error messages', null=True, blank=True, editable=True, max_length=64)
    param = models.CharField('Param', null=True, blank=True, editable=True, max_length=64)
    

    def init_new(self, request, view, param=None):
        if param:
            self.type=param
    
            defaults=self.get_field_defaults()
            defaults['type'] = param
    
            for key in defaults:
                setattr(self, key, defaults[key])
            return defaults
        else:
            return None
    
    def as_declaration(self):
        if self.type == 'UserField':
            return self.param        
        ret = "%s = forms.%s(label=_('%s'), required=%s, " % \
                (self.name, self.type, self.label, self.required)
        if self.initial:
            ret+= "initial=%s," % self.initial
        if self.widget and len(self.widget)>0:
            ret+= "widget=%s," % self.widget
        if self.help_text and len(self.help_text)>0:
            ret+= "help_text=%s," % self.help_text
        if self.error_messages:
            ret+="error_messages=%s," % self.error_messages
        if self.param and len(self.param)>0:
            ret+= self.param
        ret += ")"
        return ret
    
    def get_field_defaults(self):
        ret = formfield_default.copy()
        if self.type in formfield_defaults:
            for key, value in formfield_defaults[self.type].items():
                ret[key]=value
        return ret