

class MlinDirectory(KeyedDirectory):
    ObjClass = Mlin
    title="Linea comanda Proveidor"

    fields='mcab data datae pro \n art des quant preu ser '
    lookup_fields='art'
    required_fields='art quant'
    session_object=True

    def new(self):
        self.require_obj('art')
        if not self.get_field('quant'):
            self.redirect('edit')

        self.add_obj()
        self.clear_session_objects()
        redirection('./../')

    def edit(self):
        self.edit_obj( fields='quant preu des')
        self.retorna()


class McabDirectory(MasterDetailDirectory):
    ObjClass = Mcab
    title="Comanda Proveidor"

    fields='numero pro \n data datae ref'
    required_fields='pro data envio'
    lookup_fields='pro'
    composite_fields='envio'

    detail_field = 'mlins'
    ObjectDirectory= MlinDirectory
    search_fields='art quant qser preu ser'

    def get_exports(self):
        for export in super(McabDirectory, self).get_exports():
            yield export

        if not self.is_new:
            yield ('impres', 'impres', "Impres", '')
            yield ('email', 'email', "E-mail", '')

    def new(self):
        self.require_obj('pro')
        if not self.get_field('data'):
            self.redirect('edit')

        if not len(self.obj.mlins ):
            self.redirect('new_item')
            
        return self.view()

    def get_actions(self):
        if self.is_new and len(self.obj.mlins):
            yield ( 'confirm', 'Confirma Alta Comanda' ) 

    def confirm(self):
        self.add_obj()
        self.clear_session_objects()
        self.redirect(obj=self.obj)

    def edit(self):
        self.edit_obj(fields='data datae ref')
        self.retorna()


# Mcab
 

class McabDBDirectory( KeyedDBDirectory):
    ObjectDirectory = McabDirectory
    title="Comandes Proveidors"

    key_fields='numero'
    param_fields='numero data datae ref'
    search_fields='numero data datae pro ref'
    lookup_fields='pro'

    permissions=[
        ('all', 'taller'),
        ('all', 'tecnica'),
        ('read', 'all'),
    ]
