class ResurseFinanciare(Entity):
    __tablename__ = 'resurse_financiare'

    tip = Column('type', String(10))
    valoare = Column(Integer, nullable=False, default=0)
    categorie = Column(Unicode(50))
    activitate = ManyToOne("Activitate")
    __mapper_args__ = {
        'polymorphic_on': tip,
    }

    def __unicode__(self):
        return self.categorie or 'Unknown'

    class Admin(EntityAdmin):
        verbose_name = 'ResurseFinanciare'
        verbose_name_plural = 'ResurseFinanciare'
        list_display = ['tip', 'valoare', 'categorie']
        form_display = ['tip', 'valoare', 'categorie']
        field_attributes = {'valoare': {'minimum': 0, 'maximum': 50000}
        }

    class Admin2(EntityAdmin):
        verbose_name = 'Resursa Financiara'
        verbose_name_plural = 'Resurse Financiare'
        list_display = ['valoare', 'tip', 'categorie']

    Admin2 = not_editable_admin(Admin2)
Esempio n. 2
0
    def test_not_editable_admin_class_decorator( self ):
        from camelot.model.i18n import Translation
        from camelot.admin.not_editable_admin import not_editable_admin
        
        OriginalAdmin = Translation.Admin
        original_admin = OriginalAdmin( self.app_admin, Translation )
        self.assertTrue( len( original_admin.get_list_actions() ) )
        self.assertTrue( original_admin.get_field_attributes( 'value' )['editable'] )
        
        #
        # enable the actions
        #
        NewAdmin = not_editable_admin( Translation.Admin, 
                                       actions = True )
        new_admin = NewAdmin( self.app_admin, Translation )
        self.assertTrue( len( new_admin.get_list_actions() ) )
        self.assertFalse( new_admin.get_field_attributes( 'value' )['editable'] )
        self.assertFalse( new_admin.get_field_attributes( 'source' )['editable'] )
        
        #
        # disable the actions
        #
        NewAdmin = not_editable_admin( Translation.Admin, 
                                       actions = False )
        new_admin = NewAdmin( self.app_admin, Translation )
        self.assertFalse( len( new_admin.get_list_actions() ) )
        self.assertFalse( new_admin.get_field_attributes( 'value' )['editable'] )
        self.assertFalse( new_admin.get_field_attributes( 'source' )['editable'] )

        #
        # keep the value field editalbe
        #
        NewAdmin = not_editable_admin( Translation.Admin, 
                                       editable_fields = ['value'] )
        new_admin = NewAdmin( self.app_admin, Translation )
        self.assertFalse( len( new_admin.get_list_actions() ) )
        self.assertTrue( new_admin.get_field_attributes( 'value' )['editable'] )
        self.assertFalse( new_admin.get_field_attributes( 'source' )['editable'] )
Esempio n. 3
0
    def test_not_editable_admin_class_decorator(self):
        from camelot.model.i18n import Translation
        from camelot.admin.not_editable_admin import not_editable_admin

        OriginalAdmin = Translation.Admin
        original_admin = OriginalAdmin(self.app_admin, Translation)
        self.assertTrue(len(original_admin.get_list_actions()))
        self.assertTrue(
            original_admin.get_field_attributes('value')['editable'])

        #
        # enable the actions
        #
        NewAdmin = not_editable_admin(Translation.Admin, actions=True)
        new_admin = NewAdmin(self.app_admin, Translation)
        self.assertTrue(len(new_admin.get_list_actions()))
        self.assertFalse(new_admin.get_field_attributes('value')['editable'])
        self.assertFalse(new_admin.get_field_attributes('source')['editable'])

        #
        # disable the actions
        #
        NewAdmin = not_editable_admin(Translation.Admin, actions=False)
        new_admin = NewAdmin(self.app_admin, Translation)
        self.assertFalse(len(new_admin.get_list_actions()))
        self.assertFalse(new_admin.get_field_attributes('value')['editable'])
        self.assertFalse(new_admin.get_field_attributes('source')['editable'])

        #
        # keep the value field editalbe
        #
        NewAdmin = not_editable_admin(Translation.Admin,
                                      editable_fields=['value'])
        new_admin = NewAdmin(self.app_admin, Translation)
        self.assertFalse(len(new_admin.get_list_actions()))
        self.assertTrue(new_admin.get_field_attributes('value')['editable'])
        self.assertFalse(new_admin.get_field_attributes('source')['editable'])
Esempio n. 4
0
class Activitate(Entity):
    __tablename__ = 'activitati'

    tip = Column(String(30))
    __mapper_args__ = {'polymorphic_on': tip}

    nume = Field(Unicode(50), required=True, index=True)
    coordonator = ManyToOne('ResurseUmane', inverse='activitati_coordonate')
    membrii = ManyToMany('ResurseUmane')
    aprobata = Column(Boolean)
    res_fin = OneToMany('ResurseFinanciare', inverse="activitate")
    res_logistice = ManyToMany('ResursaLogistica')
    #todo adaugat faze activitate
    faze = OneToMany("FazeActivitate")

    def __unicode__(self):
        return self.nume or ''

    class Admin(EntityAdmin):
        verbose_name = 'Activitate'
        verbose_name_plural = 'Activitati'
        list_display = ['nume', 'aprobata']
        form_display = TabForm([('Importante', Form(['nume', 'coordonator'])),
                                ('Participanti', Form(['membrii'])),
                                ('Resurse', Form(['res_fin',
                                                  'res_logistice'])),
                                ('Faze', Form(['faze']))])
        field_attributes = dict(ResurseUmane.Admin.field_attributes)
        form_actions = [RapoarteActivitati()]

    class Admin2(EntityAdmin):
        verbose_name = 'Calendar activitati'
        list_display = ['nume', 'coordonator', 'aprobata']

        def get_query(self):
            session = Session
            return session.query(Activitate).join(ResurseUmane).filter(
                ResurseUmane.id == 1)  # todo schimbat cu userul
            # curent

    class Admin3(EntityAdmin):
        verbose_name = 'Proiect Departament'
        verbose_name_plural = 'Proiecte Departament'
        list_display = ['nume', 'coordonator', 'aprobata', 'tip']

    Admin3 = not_editable_admin(Admin3)
Esempio n. 5
0
class Memento(Entity):
    """Keeps information on the previous state of objects, to keep track
    of changes and enable restore to that previous state"""

    __tablename__ = 'memento'

    model = schema.Column(Unicode(256), index=True, nullable=False)
    primary_key = schema.Column(PrimaryKey(), index=True, nullable=False)
    creation_date = schema.Column(DateTime(), default=datetime.datetime.now)
    authentication = ManyToOne(AuthenticationMechanism,
                               required=True,
                               ondelete='restrict',
                               onupdate='cascade')
    memento_type = schema.Column(Integer, nullable=False, index=True)
    previous_attributes = orm.deferred(schema.Column(PickleType()))

    @property
    def previous(self):
        previous = self.previous_attributes
        if previous:
            return [
                PreviousAttribute(k, v) for k, v in six.iteritems(previous)
            ]
        return []

    class Admin(EntityAdmin):
        verbose_name = _('History')
        verbose_name_plural = _('History')
        list_display = [
            'creation_date',
            'authentication',
            'model',
            'primary_key',
        ]
        form_display = list_display + ['previous']
        list_filter = [list_filter.ComboBoxFilter('model')]
        field_attributes = {
            'previous': {
                'target': PreviousAttribute,
                'delegate': delegates.One2ManyDelegate,
                'python_type': list
            }
        }

    Admin = not_editable_admin(Admin)
Esempio n. 6
0
class ResursaLogistica(Entity):
    __tablename__ = 'resurse_logistice'

    id = Column(Integer, primary_key=True)
    type = Column(String(50))

    activitati = ManyToMany('Activitate')
    __mapper_args__ = {
        'polymorphic_identity': 'resursa',
        'polymorphic_on': type
    }

    class Admin(EntityAdmin):
        verbose_name = 'Resursa'
        verbose_name_plural = 'Resurse'
        list_display = ['type']
        form_actions = [RaportResurse()]

    class Admin2(EntityAdmin):
        verbose_name = 'Resursa Logistica'
        verbose_name_plural = 'Resurse Logistice'
        list_display = ['id', 'type']

    Admin2 = not_editable_admin(Admin2)