m3-users 2.2.14__tar.gz → 2.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. {m3-users-2.2.14/src/m3_users.egg-info → m3_users-2.3.0}/PKG-INFO +11 -10
  2. {m3-users-2.2.14 → m3_users-2.3.0}/changelog.md +7 -0
  3. {m3-users-2.2.14 → m3_users-2.3.0}/setup.py +9 -16
  4. m3_users-2.3.0/src/m3_users/app_meta.py +77 -0
  5. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/roles.py +24 -9
  6. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/templates/m3-users/edit-role-window.js +28 -11
  7. {m3-users-2.2.14 → m3_users-2.3.0/src/m3_users.egg-info}/PKG-INFO +11 -10
  8. m3_users-2.3.0/src/tests/manage.py +33 -0
  9. m3_users-2.3.0/src/tests/urls.py +24 -0
  10. {m3-users-2.2.14 → m3_users-2.3.0}/version.conf +5 -5
  11. m3-users-2.2.14/src/m3_users/app_meta.py +0 -65
  12. m3-users-2.2.14/src/tests/manage.py +0 -20
  13. m3-users-2.2.14/src/tests/urls.py +0 -22
  14. {m3-users-2.2.14 → m3_users-2.3.0}/LICENSE +0 -0
  15. {m3-users-2.2.14 → m3_users-2.3.0}/MANIFEST.in +0 -0
  16. {m3-users-2.2.14 → m3_users-2.3.0}/README.txt +0 -0
  17. {m3-users-2.2.14 → m3_users-2.3.0}/REQUIREMENTS +0 -0
  18. {m3-users-2.2.14 → m3_users-2.3.0}/setup.cfg +0 -0
  19. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/__init__.py +0 -0
  20. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/api.py +0 -0
  21. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/constants.py +0 -0
  22. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/helpers.py +0 -0
  23. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/metaroles.py +0 -0
  24. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/migrations/0001_initial.py +0 -0
  25. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/migrations/0002_assignedrole_user.py +0 -0
  26. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/migrations/__init__.py +0 -0
  27. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/models.py +0 -0
  28. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/permissions.py +0 -0
  29. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/south_migrations/0001_initial.py +0 -0
  30. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/south_migrations/__init__.py +0 -0
  31. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/templates/m3-users/roles-list-window.js +0 -0
  32. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/templates/m3-users/select-users-window.js +0 -0
  33. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/ui.py +0 -0
  34. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/users.py +0 -0
  35. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users/version.py +0 -0
  36. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users.egg-info/SOURCES.txt +0 -0
  37. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users.egg-info/dependency_links.txt +0 -0
  38. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users.egg-info/requires.txt +0 -0
  39. {m3-users-2.2.14 → m3_users-2.3.0}/src/m3_users.egg-info/top_level.txt +0 -0
  40. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/__init__.py +0 -0
  41. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/core/__init__.py +0 -0
  42. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/core/tests.py +0 -0
  43. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/prepare_env.py +0 -0
  44. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/settings.py +0 -0
  45. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/shell.sh +0 -0
  46. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/test.sh +0 -0
  47. {m3-users-2.2.14 → m3_users-2.3.0}/src/tests/version.py +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: m3-users
3
- Version: 2.2.14
3
+ Version: 2.3.0
4
4
  Summary: Пользователи и роли
5
5
  Home-page: https://github.com/barsgroup/m3-users
6
6
  Author: BARS Group
@@ -11,17 +11,10 @@ Classifier: Environment :: Web Environment
11
11
  Classifier: Natural Language :: Russian
12
12
  Classifier: Natural Language :: English
13
13
  Classifier: Operating System :: OS Independent
14
- Classifier: Framework :: Django :: 1.5
15
- Classifier: Framework :: Django :: 1.6
16
- Classifier: Framework :: Django :: 1.7
17
- Classifier: Framework :: Django :: 1.8
18
- Classifier: Framework :: Django :: 1.9
19
- Classifier: Framework :: Django :: 1.10
20
14
  Classifier: Framework :: Django :: 1.11
21
15
  Classifier: Framework :: Django :: 2.0
16
+ Classifier: Framework :: Django :: 4.0
22
17
  Classifier: Programming Language :: Python
23
- Classifier: Programming Language :: Python :: 2
24
- Classifier: Programming Language :: Python :: 2.7
25
18
  Classifier: Programming Language :: Python :: 3.6
26
19
  Classifier: License :: OSI Approved :: MIT License
27
20
  Classifier: Development Status :: 5 - Production/Stable
@@ -29,3 +22,11 @@ License-File: LICENSE
29
22
  Requires-Dist: m3-builder>=1.0.1
30
23
  Requires-Dist: m3-django-compat>=1.7.1
31
24
  Requires-Dist: m3-ui
25
+ Dynamic: author
26
+ Dynamic: author-email
27
+ Dynamic: classifier
28
+ Dynamic: home-page
29
+ Dynamic: license
30
+ Dynamic: license-file
31
+ Dynamic: requires-dist
32
+ Dynamic: summary
@@ -1,4 +1,11 @@
1
1
  ## История изменений
2
+ **2.3.0**
3
+ - Добавлена поддержка django 4.0
4
+
5
+ **2.2.15**
6
+ - Добавлена активация чекбокса выбранных прав доступа для роли в `SelectPermissionWindow`.
7
+ - Добавлена возможность удалить право доступа для роли деактивацией чекбокса.
8
+
2
9
  **2.2.14**
3
10
  - Добавлена обязательная проверка прав доступа для паков `UsersActions`, `RolesActions` и `Roles_DictPack`:
4
11
  по-умолчанию доступ к экшенам данных паков имеет только супер-администратор.
@@ -1,6 +1,10 @@
1
1
  # coding: utf-8
2
2
  import os
3
- from setuptools import setup, find_packages
3
+
4
+ from setuptools import (
5
+ find_packages,
6
+ setup,
7
+ )
4
8
 
5
9
 
6
10
  setup(
@@ -11,7 +15,7 @@ setup(
11
15
  author_email='bars@bars-open.ru',
12
16
  package_dir={'': 'src'},
13
17
  packages=find_packages('src'),
14
- description=u'Пользователи и роли',
18
+ description='Пользователи и роли',
15
19
  install_requires=(
16
20
  'm3-builder>=1.0.1',
17
21
  'm3-django-compat>=1.7.1',
@@ -24,26 +28,15 @@ setup(
24
28
  'Natural Language :: Russian',
25
29
  'Natural Language :: English',
26
30
  'Operating System :: OS Independent',
27
- 'Framework :: Django :: 1.5',
28
- 'Framework :: Django :: 1.6',
29
- 'Framework :: Django :: 1.7',
30
- 'Framework :: Django :: 1.8',
31
- 'Framework :: Django :: 1.9',
32
- 'Framework :: Django :: 1.10',
33
31
  'Framework :: Django :: 1.11',
34
32
  'Framework :: Django :: 2.0',
33
+ 'Framework :: Django :: 4.0',
35
34
  'Programming Language :: Python',
36
- 'Programming Language :: Python :: 2',
37
- 'Programming Language :: Python :: 2.7',
38
35
  'Programming Language :: Python :: 3.6',
39
36
  'License :: OSI Approved :: MIT License',
40
37
  'Development Status :: 5 - Production/Stable',
41
38
  ],
42
- dependency_links=(
43
- 'http://pypi.bars-open.ru/simple/m3-builder',
44
- ),
45
- setup_requires=(
46
- 'm3-builder>=1.0.1',
47
- ),
39
+ dependency_links=('http://pypi.bars-open.ru/simple/m3-builder',),
40
+ setup_requires=('m3-builder>=1.0.1',),
48
41
  set_build_info=os.path.dirname(__file__),
49
42
  )
@@ -0,0 +1,77 @@
1
+ # coding: utf-8
2
+
3
+ from django.urls import (
4
+ re_path,
5
+ )
6
+ from m3 import (
7
+ authenticated_user_required,
8
+ )
9
+ from m3.actions import (
10
+ ActionController,
11
+ )
12
+
13
+ from .constants import (
14
+ ADMIN,
15
+ GENERIC_USER,
16
+ SUPER_ADMIN,
17
+ )
18
+ from .metaroles import (
19
+ Metaroles_DictPack,
20
+ UserMetarole,
21
+ )
22
+ from .roles import (
23
+ Roles_DictPack,
24
+ RolesActions,
25
+ )
26
+ from .users import (
27
+ UsersActions,
28
+ )
29
+
30
+
31
+ # контроллер
32
+ users_controller = ActionController(url='/m3-users', name='Пользователи М3')
33
+
34
+
35
+ def register_actions():
36
+ users_controller.packs.extend(
37
+ [
38
+ RolesActions(),
39
+ UsersActions(),
40
+ Roles_DictPack(),
41
+ Metaroles_DictPack(), # метароли пользователей
42
+ ]
43
+ )
44
+
45
+
46
+ @authenticated_user_required
47
+ def users_view(request):
48
+ return users_controller.process_request(request)
49
+
50
+
51
+ def register_urlpatterns():
52
+ return [
53
+ re_path(r'^m3-users', users_view),
54
+ ]
55
+
56
+
57
+ def register_metaroles(manager):
58
+ """
59
+ Функция возвращает список метаролей, которые регистрируются
60
+ по умолчанию на уровне Платформы М3.
61
+
62
+ :param manager: менеджер, отвечающий за управление метаролями.
63
+ :type manager: :py:class:`m3_users.metaroles.MetaroleManager`
64
+ """
65
+
66
+ # метароль обычного пользователя системы
67
+ manager.GENERIC_USER_METAROLE = UserMetarole(GENERIC_USER, 'Обобщенный пользователь')
68
+
69
+ # метароль администратора системы
70
+ manager.ADMIN_METAROLE = UserMetarole(ADMIN, 'Администратор')
71
+ manager.ADMIN_METAROLE.included_metaroles.extend([manager.GENERIC_USER_METAROLE])
72
+
73
+ # метароль супер-администратора системы
74
+ manager.SUPER_ADMIN_METAROLE = UserMetarole(SUPER_ADMIN, 'Супер-администратор')
75
+ manager.SUPER_ADMIN_METAROLE.included_metaroles.extend([manager.GENERIC_USER_METAROLE, manager.ADMIN_METAROLE])
76
+
77
+ return [manager.GENERIC_USER_METAROLE, manager.ADMIN_METAROLE, manager.SUPER_ADMIN_METAROLE]
@@ -248,8 +248,16 @@ class AddRolePermission(Action):
248
248
  need_check_permission = True
249
249
  verbose_name = u'Добавление прав'
250
250
 
251
+ def context_declaration(self):
252
+ return {
253
+ 'perms': {
254
+ 'type': 'str_list',
255
+ 'default': [],
256
+ },
257
+ }
258
+
251
259
  def run(self, request, context):
252
- window = SelectPermissionWindow()
260
+ window = SelectPermissionWindow(action_context=context,)
253
261
  return ExtUIScriptResult(window)
254
262
 
255
263
 
@@ -378,9 +386,8 @@ class GetRolePermissionAction(Action):
378
386
  return ExtGridDataQueryResult(res)
379
387
 
380
388
 
381
- def get_all_permission_tree():
382
- """
383
- Общий подход к формированию дерева прав доступа (алгоритм):
389
+ def get_all_permission_tree(permission_codes):
390
+ """Общий подход к формированию дерева прав доступа (алгоритм):
384
391
  собирается список прав доступа исходя из наборов действий, действий,
385
392
  субправ наборов действий, субправ действий
386
393
  у каждого элемента списка прав должен быть путь в дереве (пока строкой),
@@ -389,11 +396,15 @@ def get_all_permission_tree():
389
396
  то по иерархии этого элемента в фактической структуре действий
390
397
  и набора действий.
391
398
 
399
+ Args:
400
+ permission_codes: Список активных кодов прав доступа (для активации чекбокса).
401
+ Returns:
402
+ Список прав доступа.
392
403
  """
393
404
 
394
405
  class PermProxy(ExtTreeNode):
395
406
  def __init__(self, id, parent=None, name='', url='', can_select=True,
396
- fullname=None, path=''):
407
+ fullname=None, path='', checked=False,):
397
408
  super(PermProxy, self).__init__()
398
409
  self.parent = parent
399
410
  if parent:
@@ -404,6 +415,7 @@ def get_all_permission_tree():
404
415
  self.items['name'] = name
405
416
  self.items['url'] = url
406
417
  self.items['fullname'] = fullname if fullname else name
418
+ self.checked = checked
407
419
  self.can_check = can_select
408
420
 
409
421
  def find_node(node_name, parent_node, res):
@@ -523,10 +535,11 @@ def get_all_permission_tree():
523
535
  fullname = '%s - %s' % (pack_name, value)
524
536
  path = get_actionpack_sub_perm_path(action_set, key)
525
537
  url = action_set.get_sub_permission_code(key)
538
+ checked = url in permission_codes
526
539
  if url not in res_urls.keys():
527
540
  child4 = PermProxy(
528
541
  len(res) + 1, None, value, url, True,
529
- fullname, path)
542
+ fullname, path, checked,)
530
543
  res.append(child4)
531
544
  res_urls[url] = child4
532
545
  # обработаем подчиненные Наборы
@@ -549,10 +562,11 @@ def get_all_permission_tree():
549
562
  if action_set.need_check_permission:
550
563
  path = get_action_perm_path(action_set)
551
564
  url = action_set.get_permission_code()
565
+ checked = url in permission_codes
552
566
  if url not in res_urls.keys():
553
567
  item = PermProxy(
554
568
  len(res) + 1, None, name, url, True,
555
- fullname, path)
569
+ fullname, path, checked,)
556
570
  res.append(item)
557
571
  res_urls[url] = item
558
572
  # у действия берем подчиненные права
@@ -568,10 +582,11 @@ def get_all_permission_tree():
568
582
  fullname = '%s - %s' % (pack_name, name)
569
583
  path = get_action_sub_perm_path(action_set, key)
570
584
  url = action_set.get_sub_permission_code(key)
585
+ checked = url in permission_codes
571
586
  if not url in res_urls.keys():
572
587
  child3 = PermProxy(
573
588
  len(res) + 1, None, name, url,
574
- True, fullname, path)
589
+ True, fullname, path, checked,)
575
590
  res.append(child3)
576
591
  res_urls[url] = item
577
592
 
@@ -934,7 +949,7 @@ class SelectPermissionWindow(windows.ExtEditWindow):
934
949
  self.tree = ExtTree()
935
950
  self.tree.add_column(header=u'Имя', data_index='name', width=140)
936
951
  self.tree.master_column_id = 'name'
937
- self.tree.nodes = get_all_permission_tree()
952
+ self.tree.nodes = get_all_permission_tree(self.action_context.perms)
938
953
  self.items.append(self.tree)
939
954
  self.buttons.append(controls.ExtButton(
940
955
  text=u'Выбрать', handler='''function select(btn, e, baseParams) {
@@ -7,6 +7,23 @@ function getJsonOfStore(store){
7
7
  return Ext.util.JSON.encode(datar);
8
8
  }
9
9
 
10
+ function getPermissionCodes(store){
11
+ {# Получение выбранных кодов прав доступа из store #}
12
+ var permissionCodes = [],
13
+ records = store.getRange();
14
+
15
+ for (var i = 0; i < records.length; i++) {
16
+ permissionCodes.push(records[i].data.permission_code);
17
+ }
18
+
19
+ return Ext.util.JSON.encode(permissionCodes);
20
+ }
21
+
22
+ function addPermissionCodesInParams(grid, req){
23
+ {# Добавление в контекст выбранных кодов прав доступа #}
24
+ req.params.perms = getPermissionCodes(grid.getStore());
25
+ }
26
+
10
27
  function beforeSubmit(submit){
11
28
  {# сохранение роли #}
12
29
  var store = Ext.getCmp('{{ component.grid.client_id }}').getStore(),
@@ -21,19 +38,18 @@ function addPermission(grid, res, opt) {
21
38
  win.on('closed_ok', function (sels) {
22
39
  var store = this.getStore(),
23
40
  count = store.getCount();
41
+ store.removeAll();
24
42
  for(var i = 0, len = sels.length; i < len; i++){
25
43
  var record = sels[i];
26
- if (!store.getById(record.attributes.url)) {
27
- var rec = new store.recordType(
28
- {
29
- id: null,
30
- "permission_code":record.attributes.url,
31
- "verbose_name": record.attributes.fullname,
32
- "disabled": false
33
- },
34
- record.attributes.url);
35
- store.add(rec);
36
- }
44
+ var rec = new store.recordType(
45
+ {
46
+ id: null,
47
+ "permission_code":record.attributes.url,
48
+ "verbose_name": record.attributes.fullname,
49
+ "disabled": false
50
+ },
51
+ record.attributes.url);
52
+ store.add(rec);
37
53
  }
38
54
  }, scope = grid);
39
55
  win.show();
@@ -44,6 +60,7 @@ var form = Ext.getCmp('{{ component.client_id }}'),
44
60
  grid = Ext.getCmp('{{ component.grid.client_id }}');
45
61
  form.on('beforesubmit', beforeSubmit);
46
62
  grid.on('afternewrequest', addPermission);
63
+ grid.on('beforenewrequest', addPermissionCodesInParams);
47
64
 
48
65
  function deletePermission() {
49
66
  {# обработчик удаления роли #}
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: m3-users
3
- Version: 2.2.14
3
+ Version: 2.3.0
4
4
  Summary: Пользователи и роли
5
5
  Home-page: https://github.com/barsgroup/m3-users
6
6
  Author: BARS Group
@@ -11,17 +11,10 @@ Classifier: Environment :: Web Environment
11
11
  Classifier: Natural Language :: Russian
12
12
  Classifier: Natural Language :: English
13
13
  Classifier: Operating System :: OS Independent
14
- Classifier: Framework :: Django :: 1.5
15
- Classifier: Framework :: Django :: 1.6
16
- Classifier: Framework :: Django :: 1.7
17
- Classifier: Framework :: Django :: 1.8
18
- Classifier: Framework :: Django :: 1.9
19
- Classifier: Framework :: Django :: 1.10
20
14
  Classifier: Framework :: Django :: 1.11
21
15
  Classifier: Framework :: Django :: 2.0
16
+ Classifier: Framework :: Django :: 4.0
22
17
  Classifier: Programming Language :: Python
23
- Classifier: Programming Language :: Python :: 2
24
- Classifier: Programming Language :: Python :: 2.7
25
18
  Classifier: Programming Language :: Python :: 3.6
26
19
  Classifier: License :: OSI Approved :: MIT License
27
20
  Classifier: Development Status :: 5 - Production/Stable
@@ -29,3 +22,11 @@ License-File: LICENSE
29
22
  Requires-Dist: m3-builder>=1.0.1
30
23
  Requires-Dist: m3-django-compat>=1.7.1
31
24
  Requires-Dist: m3-ui
25
+ Dynamic: author
26
+ Dynamic: author-email
27
+ Dynamic: classifier
28
+ Dynamic: home-page
29
+ Dynamic: license
30
+ Dynamic: license-file
31
+ Dynamic: requires-dist
32
+ Dynamic: summary
@@ -0,0 +1,33 @@
1
+ #!/usr/bin/python
2
+ import importlib
3
+ import os
4
+ import sys
5
+
6
+ from django.core.management import (
7
+ execute_from_command_line,
8
+ )
9
+
10
+
11
+ project_path = os.path.dirname(__file__)
12
+ sys.path.insert(0, os.path.join(project_path, '../'))
13
+ sys.path.insert(0, os.path.join(project_path, '../env'))
14
+ sys.path.insert(0, os.path.join(project_path, '../env/m3/vendor'))
15
+
16
+ settings_module = 'settings'
17
+
18
+ try:
19
+ importlib.import_module(settings_module)
20
+ except ImportError:
21
+ import sys
22
+
23
+ sys.stderr.write(
24
+ "Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things."
25
+ "\nYou'll have to run django-admin, passing it your settings module."
26
+ "\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__
27
+ )
28
+ sys.exit(1)
29
+
30
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', settings_module)
31
+
32
+ if __name__ == '__main__':
33
+ execute_from_command_line(sys.argv)
@@ -0,0 +1,24 @@
1
+ from django.urls import (
2
+ include,
3
+ path,
4
+ )
5
+ from m3.helpers import (
6
+ urls,
7
+ )
8
+
9
+
10
+ # Uncomment the next two lines to enable the admin:
11
+ # from django.contrib import admin
12
+ # admin.autodiscover()
13
+
14
+ urlpatterns = [
15
+ # Example:
16
+ # path('', your_view_function),
17
+ # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
18
+ # to INSTALLED_APPS to enable admin documentation:
19
+ # path('admin/doc/', include('django.contrib.admindocs.urls')),
20
+ # Uncomment the next line to enable the admin:
21
+ # path('admin/', admin.site.urls),
22
+ ]
23
+
24
+ urlpatterns += urls.get_app_urlpatterns()
@@ -4,8 +4,8 @@
4
4
  # нормальной установки обновлений.
5
5
 
6
6
  [version]
7
- BRANCH = tags/2.2.14^0
8
- VERSION = 2.2.14
9
- REVISION = 0c4ec223074579d36879f93c508e13ba70bab361
10
- VERSION_DATE = 20.05.2024
11
- REVISION_DATE = 20.05.2024
7
+ BRANCH = tags/2.3.0
8
+ VERSION = 2.3.0
9
+ REVISION = c746d57f02bb8fde5bf095b9d36415b5332beb01
10
+ VERSION_DATE = 17.07.2025
11
+ REVISION_DATE = 17.07.2025
@@ -1,65 +0,0 @@
1
- # coding: utf-8
2
-
3
- from django.conf.urls import url
4
- from m3 import authenticated_user_required
5
- from m3.actions import ActionController
6
-
7
- from .constants import ADMIN, GENERIC_USER, SUPER_ADMIN
8
- from .metaroles import UserMetarole, Metaroles_DictPack
9
- from .roles import RolesActions, Roles_DictPack
10
- from .users import UsersActions
11
-
12
-
13
- # контроллер
14
- users_controller = ActionController(url='/m3-users', name=u'Пользователи М3')
15
-
16
-
17
- def register_actions():
18
-
19
- users_controller.packs.extend([
20
- RolesActions(),
21
- UsersActions(),
22
- Roles_DictPack(),
23
- Metaroles_DictPack(), # метароли пользователей
24
- ])
25
-
26
-
27
- @authenticated_user_required
28
- def users_view(request):
29
- return users_controller.process_request(request)
30
-
31
-
32
- def register_urlpatterns():
33
- return [
34
- url(r'^m3-users', users_view),
35
- ]
36
-
37
-
38
- def register_metaroles(manager):
39
- """
40
- Функция возвращает список метаролей, которые регистрируются
41
- по умолчанию на уровне Платформы М3.
42
-
43
- :param manager: менеджер, отвечающий за управление метаролями.
44
- :type manager: :py:class:`m3_users.metaroles.MetaroleManager`
45
- """
46
-
47
- # метароль обычного пользователя системы
48
- manager.GENERIC_USER_METAROLE = UserMetarole(
49
- GENERIC_USER, u'Обобщенный пользователь')
50
-
51
- # метароль администратора системы
52
- manager.ADMIN_METAROLE = UserMetarole(ADMIN, u'Администратор')
53
- manager.ADMIN_METAROLE.included_metaroles.extend(
54
- [manager.GENERIC_USER_METAROLE])
55
-
56
- # метароль супер-администратора системы
57
- manager.SUPER_ADMIN_METAROLE = UserMetarole(
58
- SUPER_ADMIN, u'Супер-администратор')
59
- manager.SUPER_ADMIN_METAROLE.included_metaroles.extend(
60
- [manager.GENERIC_USER_METAROLE, manager.ADMIN_METAROLE])
61
-
62
- return [
63
- manager.GENERIC_USER_METAROLE,
64
- manager.ADMIN_METAROLE,
65
- manager.SUPER_ADMIN_METAROLE]
@@ -1,20 +0,0 @@
1
- #!/usr/bin/python
2
- import os,sys
3
- project_path = os.path.dirname(__file__)
4
-
5
-
6
- sys.path.insert(0, os.path.join(project_path, '../'))
7
- sys.path.insert(0, os.path.join(project_path, '../env'))
8
- sys.path.insert(0, os.path.join(project_path, '../env/m3/vendor'))
9
-
10
- from django.core.management import execute_manager
11
-
12
- try:
13
- import settings # Assumed to be in the same directory.
14
- except ImportError:
15
- import sys
16
- sys.stderr.write("Error: Can't find the file 'settings.py' in the directory containing %r. It appears you've customized things.\nYou'll have to run django-admin.py, passing it your settings module.\n(If the file settings.py does indeed exist, it's causing an ImportError somehow.)\n" % __file__)
17
- sys.exit(1)
18
-
19
- if __name__ == "__main__":
20
- execute_manager(settings)
@@ -1,22 +0,0 @@
1
- from django.conf.urls.defaults import *
2
-
3
- from m3.helpers import urls
4
-
5
- # Uncomment the next two lines to enable the admin:
6
- # from django.contrib import admin
7
- # admin.autodiscover()
8
-
9
- urlpatterns = patterns('',
10
- # Example:
11
- # (r'^m3project/', include('m3project.foo.urls')),
12
-
13
- # Uncomment the admin/doc line below and add 'django.contrib.admindocs'
14
- # to INSTALLED_APPS to enable admin documentation:
15
- # (r'^admin/doc/', include('django.contrib.admindocs.urls')),
16
-
17
- # Uncomment the next line to enable the admin:
18
- # (r'^admin/', include(admin.site.urls)),
19
- #(r'^$', ),
20
- )
21
-
22
- urlpatterns += urls.get_app_urlpatterns()
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes