Projet

Général

Profil

0001-sql-remove-redundant-get_users_with_-methods-70937.patch

Paul Marillonnet, 02 novembre 2022 16:56

Télécharger (4,49 ko)

Voir les différences:

Subject: [PATCH] sql: remove redundant get_users_with_* methods (#70937)

    These have now been defined in the users.User parent class, relying
    on w.c.s.'s ORM instead of direct inline SQL.
 tests/test_sql.py   | 31 ------------------------
 tests/test_users.py | 17 ++++++++++++++
 wcs/sql.py          | 57 ---------------------------------------------
 3 files changed, 17 insertions(+), 88 deletions(-)
tests/test_sql.py
527 527
    pub.write_cfg()
528 528

  
529 529

  
530
def test_get_users_with_role(pub):
531
    sql.SqlUser.wipe()
532

  
533
    user = sql.SqlUser()
534
    user.name = 'Pierre'
535
    user.roles = [1]
536
    user.store()
537

  
538
    user = sql.SqlUser()
539
    user.name = 'Papier'
540
    user.store()
541

  
542
    assert len(sql.SqlUser.get_users_with_role(1)) == 1
543

  
544

  
545
def test_get_users_with_name_identifier(pub):
546
    sql.SqlUser.wipe()
547

  
548
    user = sql.SqlUser()
549
    user.name = 'Pierre'
550
    user.name_identifiers = ['foo']
551
    user.store()
552

  
553
    user = sql.SqlUser()
554
    user.name = 'Papier'
555
    user.store()
556

  
557
    assert len(sql.SqlUser.get_users_with_name_identifier('foo')) == 1
558
    assert sql.SqlUser.get_users_with_name_identifier('foo')[0].name == 'Pierre'
559

  
560

  
561 530
def test_get_users_fts(pub):
562 531
    sql.SqlUser.wipe()
563 532

  
tests/test_users.py
70 70
    assert pub.user_class.get_users_with_role(1)[0].name == 'Pierre'
71 71

  
72 72

  
73
def test_get_users_with_email():
74
    pub.user_class.wipe()
75

  
76
    user = pub.user_class()
77
    user.name = 'Pierre'
78
    user.email = 'pierre@ad.dress'
79
    user.store()
80

  
81
    user = pub.user_class()
82
    user.name = 'Papier'
83
    user.email = 'papier@ad.dress'
84
    user.store()
85

  
86
    assert len(pub.user_class.get_users_with_email('pierre@ad.dress')) == 1
87
    assert pub.user_class.get_users_with_email('pierre@ad.dress')[0].name == 'Pierre'
88

  
89

  
73 90
def test_user_formdef_getattr():
74 91
    from wcs.admin.settings import UserFieldsFormDef
75 92

  
wcs/sql.py
3247 3247
        conn.commit()
3248 3248
        cur.close()
3249 3249

  
3250
    @classmethod
3251
    @guard_postgres
3252
    def get_users_with_name_identifier(cls, name_identifier):
3253
        conn, cur = get_connection_and_cursor()
3254

  
3255
        sql_statement = '''SELECT %s
3256
                             FROM %s
3257
                            WHERE deleted_timestamp IS NULL
3258
                              AND name_identifiers @> ARRAY[%%(value)s]''' % (
3259
            ', '.join([x[0] for x in cls._table_static_fields] + cls.get_data_fields()),
3260
            cls._table_name,
3261
        )
3262
        cur.execute(sql_statement, {'value': name_identifier})
3263
        objects = cls.get_objects(cur)
3264
        conn.commit()
3265
        cur.close()
3266

  
3267
        return objects
3268

  
3269
    @classmethod
3270
    @guard_postgres
3271
    def get_users_with_email(cls, email):
3272
        conn, cur = get_connection_and_cursor()
3273

  
3274
        sql_statement = '''SELECT %s
3275
                             FROM %s
3276
                            WHERE deleted_timestamp IS NULL
3277
                              AND email = %%(value)s''' % (
3278
            ', '.join([x[0] for x in cls._table_static_fields] + cls.get_data_fields()),
3279
            cls._table_name,
3280
        )
3281
        cur.execute(sql_statement, {'value': email})
3282
        objects = cls.get_objects(cur)
3283
        conn.commit()
3284
        cur.close()
3285

  
3286
        return objects
3287

  
3288
    @classmethod
3289
    @guard_postgres
3290
    def get_users_with_role(cls, role_id):
3291
        conn, cur = get_connection_and_cursor()
3292

  
3293
        sql_statement = '''SELECT %s
3294
                             FROM %s
3295
                            WHERE deleted_timestamp IS NULL
3296
                              AND roles @> ARRAY[%%(value)s]''' % (
3297
            ', '.join([x[0] for x in cls._table_static_fields] + cls.get_data_fields()),
3298
            cls._table_name,
3299
        )
3300
        cur.execute(sql_statement, {'value': str(role_id)})
3301
        objects = cls.get_objects(cur)
3302
        conn.commit()
3303
        cur.close()
3304

  
3305
        return objects
3306

  
3307 3250

  
3308 3251
class Role(SqlMixin, wcs.roles.Role):
3309 3252
    _table_name = 'roles'
3310
-