Emails for dev

master
Hugo Levy-Falk 6 years ago
parent
commit
8a042836de
  1. 696
      Code-Documentation/autodoc/api.md
  2. 293
      Code-Documentation/autodoc/cotisations.api.md
  3. 1759
      Code-Documentation/autodoc/cotisations.md
  4. 439
      Code-Documentation/autodoc/cotisations.migrations.md
  5. 83
      Code-Documentation/autodoc/cotisations.payment_methods.balance.md
  6. 89
      Code-Documentation/autodoc/cotisations.payment_methods.cheque.md
  7. 126
      Code-Documentation/autodoc/cotisations.payment_methods.comnpay.md
  8. 57
      Code-Documentation/autodoc/cotisations.payment_methods.free.md
  9. 335
      Code-Documentation/autodoc/cotisations.payment_methods.md
  10. 107
      Code-Documentation/autodoc/cotisations.payment_methods.note_kfet.md
  11. 25
      Code-Documentation/autodoc/deployments.md
  12. 27
      Code-Documentation/autodoc/deployments.migrations.md
  13. 364
      Code-Documentation/autodoc/logs.md
  14. 36
      Code-Documentation/autodoc/logs.templatetags.md
  15. 1260
      Code-Documentation/autodoc/machines.api.md
  16. 3924
      Code-Documentation/autodoc/machines.md
  17. 1087
      Code-Documentation/autodoc/machines.migrations.md
  18. 1
      Code-Documentation/autodoc/manage.md
  19. 13
      Code-Documentation/autodoc/manager.md
  20. 1936
      Code-Documentation/autodoc/modules.md
  21. 40
      Code-Documentation/autodoc/multi_op.md
  22. 355
      Code-Documentation/autodoc/preferences.api.md
  23. 2117
      Code-Documentation/autodoc/preferences.md
  24. 855
      Code-Documentation/autodoc/preferences.migrations.md
  25. 3
      Code-Documentation/autodoc/preferences.templatetags.md
  26. 23
      Code-Documentation/autodoc/re2o.management.commands.md
  27. 18
      Code-Documentation/autodoc/re2o.management.md
  28. 989
      Code-Documentation/autodoc/re2o.md
  29. 582
      Code-Documentation/autodoc/re2o.templatetags.md
  30. 183
      Code-Documentation/autodoc/search.md
  31. 7
      Code-Documentation/autodoc/test_utils.md
  32. 46
      Code-Documentation/autodoc/tickets.md
  33. 77
      Code-Documentation/autodoc/tickets.migrations.md
  34. 14
      Code-Documentation/autodoc/tickets.preferences.md
  35. 537
      Code-Documentation/autodoc/topologie.api.md
  36. 2161
      Code-Documentation/autodoc/topologie.md
  37. 799
      Code-Documentation/autodoc/topologie.migrations.md
  38. 601
      Code-Documentation/autodoc/users.api.md
  39. 3243
      Code-Documentation/autodoc/users.md
  40. 971
      Code-Documentation/autodoc/users.migrations.md
  41. 782
      Code-Documentation/index.md
  42. 6
      Dev-Documentation/Use-emails-for-dev.md
  43. 1
      home.md

696
Code-Documentation/autodoc/api.md

@ -1,696 +0,0 @@
# api package
## Submodules
## api.acl module
Defines the ACL for the whole API.
Importing this module, creates the ‘can view api’ permission if not already
done.
### api.acl.can_view(user)
Check if an user can view the application.
* **Parameters**
**user** – The user who wants to view the application.
* **Returns**
A couple (allowed, msg) where allowed is a boolean which is True if
viewing is granted and msg is a message (can be None).
## api.authentication module
Defines the authentication classes used in the API to authenticate a user.
### class api.authentication.ExpiringTokenAuthentication()
Bases: `rest_framework.authentication.TokenAuthentication`
Authenticate a user if the provided token is valid and not expired.
#### authenticate_credentials(key)
See base class. Add the verification the token is not expired.
## api.pagination module
Defines the pagination classes used in the API to paginate the results.
### class api.pagination.PageSizedPagination()
Bases: `rest_framework.pagination.PageNumberPagination`
Provide the possibility to control the page size by using the
‘page_size’ parameter. The value ‘all’ can be used for this parameter
to retrieve all the results in a single page.
#### page_size_query_param()
The string to look for in the parameters of
a query to get the page_size requested.
#### all_pages_strings()
A set of strings that can be used in the query to
request all results in a single page.
#### max_page_size()
The maximum number of results a page can output no
matter what is requested.
#### all_pages_strings( = ('all',))
#### get_page_size(request)
Retrieve the size of the page according to the parameters of the
request.
* **Parameters**
**request** – the request of the user
* **Returns**
A integer between 0 and max_page_size that represent the size
of the page to use.
#### max_page_size( = 10000)
#### page_size_query_param( = 'page_size')
## api.permissions module
Defines the permission classes used in the API.
### class api.permissions.ACLPermission()
Bases: `rest_framework.permissions.BasePermission`
A permission class used to check the ACL to validate the permissions
of a user.
The view must define a .get_perms_map() or a .perms_map attribute.
See the wiki for the syntax of this attribute.
#### static get_required_permissions(method, view)
Build the list of permissions required for the request to be
accepted.
* **Parameters**
* **method** – The HTTP method name used for the request.
* **view** – The view which is responding to the request.
* **Returns**
The list of ACL functions to apply to a user in order to check
if he has the right permissions.
* **Raises**
* **AssertionError** – None of .get_perms_map() or .perms_map are
defined in the view.
* **rest_framework.exception.MethodNotAllowed** – The requested method
is not allowed for this view.
#### has_permission(request, view)
Check that the user has the permissions to perform the request.
* **Parameters**
* **request** – The request performed.
* **view** – The view which is responding to the request.
* **Returns**
A boolean indicating if the user has the permission to
perform the request.
* **Raises**
* **AssertionError** – None of .get_perms_map() or .perms_map are
defined in the view.
* **rest_framework.exception.MethodNotAllowed** – The requested method
is not allowed for this view.
### class api.permissions.AutodetectACLPermission()
Bases: `rest_framework.permissions.BasePermission`
A permission class used to autodetect the ACL needed to validate the
permissions of a user based on the queryset of the view.
The view must define a .get_queryset() or a .queryset attribute.
#### perms_map()
The mapping of each valid HTTP method to the required
model-based ACL permissions.
#### perms_obj_map()
The mapping of each valid HTTP method to the required
object-based ACL permissions.
#### get_required_object_permissions(method, obj)
Build the list of object-based permissions required for the
request to be accepted.
* **Parameters**
* **method** – The HTTP method name used for the request.
* **view** – The view which is responding to the request.
* **Returns**
The list of ACL functions to apply to a user in order to check
if he has the right permissions.
* **Raises**
**rest_framework.exception.MethodNotAllowed** – The requested method
is not allowed for this view.
#### get_required_permissions(method, model)
Build the list of model-based permissions required for the
request to be accepted.
* **Parameters**
* **method** – The HTTP method name used for the request.
* **view** – The view which is responding to the request.
* **Returns**
The list of ACL functions to apply to a user in order to check
if he has the right permissions.
* **Raises**
**rest_framework.exception.MethodNotAllowed** – The requested method
is not allowed for this view.
#### has_object_permission(request, view, obj)
Check that the user has the object-based permissions to perform
the request.
* **Parameters**
* **request** – The request performed.
* **view** – The view which is responding to the request.
* **Returns**
A boolean indicating if the user has the permission to
perform the request.
* **Raises**
**rest_framework.exception.MethodNotAllowed** – The requested method
is not allowed for this view.
#### has_permission(request, view)
Check that the user has the model-based permissions to perform
the request.
* **Parameters**
* **request** – The request performed.
* **view** – The view which is responding to the request.
* **Returns**
A boolean indicating if the user has the permission to
perform the request.
* **Raises**
* **AssertionError** – None of .get_queryset() or .queryset are
defined in the view.
* **rest_framework.exception.MethodNotAllowed** – The requested method
is not allowed for this view.
#### perms_map( = {'DELETE': [], 'GET': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'HEAD': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'OPTIONS': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'PATCH': [], 'POST': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'PUT': []})
#### perms_obj_map( = {'DELETE': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'GET': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'HEAD': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'OPTIONS': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'PATCH': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>], 'POST': [], 'PUT': [<function can_see_api>, <function AutodetectACLPermission.<lambda>>]})
### api.permissions.can_see_api(\*_, \*\*__)
Check if a user can view the API.
* **Returns**
A function that takes a user as an argument and returns
an ACL tuple that assert this user can see the API.
## api.routers module
Defines the custom routers to generate the URLs of the API.
### class api.routers.AllViewsRouter(\*args, \*\*kwargs)
Bases: `rest_framework.routers.DefaultRouter`
A router that can register both viewsets and views and generates
a full API root page with all the generated URLs.
#### get_api_root_view(schema_urls=None, api_urls=None)
Create a class-based view to use as the API root.
Highly inspired by the base class. See details on the implementation
in the base class. The only difference is that registered view URLs
are added after the registered viewset URLs on this root API page.
* **Parameters**
**schema_urls** – A schema to use for the URLs.
* **Returns**
The view to use to display the root API page.
#### static get_default_name(pattern)
Returns the name to use for the route if none was specified.
* **Parameters**
**pattern** – The pattern for this route.
* **Returns**
The name to use for this route.
#### get_urls()
Builds the list of URLs to register.
* **Returns**
A list of the URLs generated based on the viewsets registered
followed by the URLs generated based on the views registered.
#### register_view(pattern, view, name=None)
Register a view in the router.
* **Parameters**
* **pattern** – The URL pattern to use for this view.
* **view** – The class-based view to register.
* **name** – An optional name for the route generated. Defaults is
based on the pattern last section (delimited by ‘/’).
#### register_viewset(\*args, \*\*kwargs)
Register a viewset in the router. Alias of register for
convenience.
See register in the base class for details.
## api.serializers module
Defines the serializers of the API
### class api.serializers.NamespacedHIField(view_name=None, \*\*kwargs)
Bases: `rest_framework.relations.HyperlinkedIdentityField`
A rest_framework.serializers.HyperlinkedIdentityField subclass to
automatically prefix view names with teh API namespace.
### class api.serializers.NamespacedHMSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `rest_framework.serializers.HyperlinkedModelSerializer`
A rest_framework.serializers.HyperlinkedModelSerializer subclass to
automatically prefix view names with the API namespace.
#### serializer_related_field()
alias of `NamespacedHRField`
#### serializer_url_field()
alias of `NamespacedHIField`
### class api.serializers.NamespacedHRField(view_name=None, \*\*kwargs)
Bases: `rest_framework.relations.HyperlinkedRelatedField`
A rest_framework.serializers.HyperlinkedRelatedField subclass to
automatically prefix view names with the API namespace.
## api.settings module
Settings specific to the API.
## api.tests module
Defines the test suite for the API
### class api.tests.APIEndpointsTestCase(methodName='runTest')
Bases: `rest_framework.test.APITestCase`
Test case to test that all endpoints are reachable with respects to
authentication and permission checks.
#### no_auth_endpoints()
A list of endpoints that should be reachable
without authentication.
#### auth_no_perm_endpoints()
A list of endpoints that should be reachable
when being authenticated but without permissions.
#### auth_perm_endpoints()
A list of endpoints that should be reachable
when being authenticated and having the correct permissions.
#### stduser()
A standard user with no permission used for the tests and
initialized at the beggining of this test case.
#### superuser()
A superuser (with all permissions) used for the tests and
initialized at the beggining of this test case.
#### auth_no_perm_endpoints( = [])
#### auth_perm_endpoints( = ['/api/cotisations/article/', '/api/cotisations/article/1/', '/api/cotisations/banque/', '/api/cotisations/banque/1/', '/api/cotisations/cotisation/', '/api/cotisations/cotisation/1/', '/api/cotisations/facture/', '/api/cotisations/facture/1/', '/api/cotisations/paiement/', '/api/cotisations/paiement/1/', '/api/cotisations/vente/', '/api/cotisations/vente/1/', '/api/machines/domain/', '/api/machines/domain/1/', '/api/machines/extension/', '/api/machines/extension/1/', '/api/machines/interface/', '/api/machines/interface/1/', '/api/machines/iplist/', '/api/machines/iplist/1/', '/api/machines/iptype/', '/api/machines/iptype/1/', '/api/machines/ipv6list/', '/api/machines/ipv6list/1/', '/api/machines/machine/', '/api/machines/machine/1/', '/api/machines/machinetype/', '/api/machines/machinetype/1/', '/api/machines/mx/', '/api/machines/mx/1/', '/api/machines/nas/', '/api/machines/nas/1/', '/api/machines/ns/', '/api/machines/ns/1/', '/api/machines/ouvertureportlist/', '/api/machines/ouvertureportlist/1/', '/api/machines/ouvertureport/', '/api/machines/ouvertureport/1/', '/api/machines/servicelink/', '/api/machines/servicelink/1/', '/api/machines/service/', '/api/machines/service/1/', '/api/machines/soa/', '/api/machines/soa/1/', '/api/machines/srv/', '/api/machines/srv/1/', '/api/machines/txt/', '/api/machines/txt/1/', '/api/machines/vlan/', '/api/machines/vlan/1/', '/api/preferences/optionaluser/', '/api/preferences/optionalmachine/', '/api/preferences/optionaltopologie/', '/api/preferences/generaloption/', '/api/preferences/service/', '/api/preferences/service/1/', '/api/preferences/assooption/', '/api/preferences/homeoption/', '/api/preferences/mailmessageoption/', '/api/topologie/acesspoint/', '/api/topologie/acesspoint/2/', '/api/topologie/building/', '/api/topologie/building/1/', '/api/topologie/constructorswitch/', '/api/topologie/constructorswitch/1/', '/api/topologie/modelswitch/', '/api/topologie/modelswitch/1/', '/api/topologie/room/', '/api/topologie/room/1/', '/api/topologie/server/', '/api/topologie/server/3/', '/api/topologie/stack/', '/api/topologie/stack/1/', '/api/topologie/switch/', '/api/topologie/switch/4/', '/api/topologie/switchbay/', '/api/topologie/switchbay/1/', '/api/topologie/switchport/', '/api/topologie/switchport/1/', '/api/topologie/switchport/2/', '/api/topologie/switchport/3/', '/api/users/adherent/', '/api/users/adherent/3/', '/api/users/ban/', '/api/users/ban/1/', '/api/users/club/', '/api/users/club/4/', '/api/users/listright/', '/api/users/school/', '/api/users/school/1/', '/api/users/serviceuser/', '/api/users/serviceuser/1/', '/api/users/shell/', '/api/users/shell/1/', '/api/users/user/', '/api/users/user/1/', '/api/users/whitelist/', '/api/users/whitelist/1/', '/api/dns/zones/', '/api/dhcp/hostmacip/', '/api/mailing/standard', '/api/mailing/club', '/api/services/regen/'])
#### check_responses_code(urls, expected_code, formats=None, assert_more=None)
Utility function to test if a list of urls answer an expected code.
* **Parameters**
* **urls** – The list of urls to test
* **expected_code** – The HTTP return code expected
* **formats** – The list of formats to use for the request. Default is to
only test None format.
* **assert_more** – An optional function to assert more specific data in
the same test. The response object, the url and the format
used are passed as arguments.
* **Raises**
* **AssertionError** – The response got did not have the expected status
code.
* **Any exception raised in the evalutation of assert_more.** –
#### no_auth_endpoints( = ['/api/'])
#### not_found_endpoints( = ['/api/cotisations/article/4242/', '/api/cotisations/banque/4242/', '/api/cotisations/cotisation/4242/', '/api/cotisations/facture/4242/', '/api/cotisations/paiement/4242/', '/api/cotisations/vente/4242/', '/api/machines/domain/4242/', '/api/machines/extension/4242/', '/api/machines/interface/4242/', '/api/machines/iplist/4242/', '/api/machines/iptype/4242/', '/api/machines/ipv6list/4242/', '/api/machines/machine/4242/', '/api/machines/machinetype/4242/', '/api/machines/mx/4242/', '/api/machines/nas/4242/', '/api/machines/ns/4242/', '/api/machines/ouvertureportlist/4242/', '/api/machines/ouvertureport/4242/', '/api/machines/servicelink/4242/', '/api/machines/service/4242/', '/api/machines/soa/4242/', '/api/machines/srv/4242/', '/api/machines/txt/4242/', '/api/machines/vlan/4242/', '/api/preferences/service/4242/', '/api/topologie/acesspoint/4242/', '/api/topologie/building/4242/', '/api/topologie/constructorswitch/4242/', '/api/topologie/modelswitch/4242/', '/api/topologie/room/4242/', '/api/topologie/server/4242/', '/api/topologie/stack/4242/', '/api/topologie/switch/4242/', '/api/topologie/switchbay/4242/', '/api/topologie/switchport/4242/', '/api/users/adherent/4242/', '/api/users/ban/4242/', '/api/users/club/4242/', '/api/users/listright/4242/', '/api/users/school/4242/', '/api/users/serviceuser/4242/', '/api/users/shell/4242/', '/api/users/user/4242/', '/api/users/whitelist/4242/'])
#### classmethod setUpTestData()
Load initial data for the TestCase
#### stduser( = None)
#### superuser( = None)
#### test_auth_endpoints_with_auth_and_perm()
Tests that every endpoint that does require to be authenticated,
returns a Ok (200) response when authenticated with all permissions.
* **Raises**
**AssertionError** – An endpoint did not have a 200 status code.
#### test_auth_endpoints_with_no_auth()
Tests that every endpoint that does require to be authenticated,
returns a Unauthorized (401) response when not authenticated.
* **Raises**
**AssertionError** – An endpoint did not have a 401 status code.
#### test_auth_no_perm_endpoints_with_auth_and_no_perm()
Tests that every endpoint that does require to be authenticated and
no special permissions, returns a Ok (200) response when authenticated
but without permissions.
* **Raises**
**AssertionError** – An endpoint did not have a 200 status code.
#### test_auth_perm_endpoints_with_auth_and_no_perm()
Tests that every endpoint that does require to be authenticated and
special permissions, returns a Forbidden (403) response when
authenticated but without permissions.
* **Raises**
**AssertionError** – An endpoint did not have a 403 status code.
#### test_endpoints_not_found()
Tests that every endpoint that uses a primary key parameter,
returns a Not Found (404) response when queried with non-existing
primary key.
* **Raises**
**AssertionError** – An endpoint did not have a 404 status code.
#### test_formats()
Tests that every endpoint returns a Ok (200) response when using
different formats. Also checks that ‘json’ format returns a valid
JSON object.
* **Raises**
**AssertionError** – An endpoint did not have a 200 status code.
#### test_no_auth_endpoints_with_auth()
Tests that every endpoint that does not require to be
authenticated, returns a Ok (200) response when authenticated.
* **Raises**
**AssertionError** – An endpoint did not have a 200 status code.
#### test_no_auth_endpoints_with_no_auth()
Tests that every endpoint that does not require to be
authenticated, returns a Ok (200) response when not authenticated.
* **Raises**
**AssertionError** – An endpoint did not have a 200 status code.
### class api.tests.APIPaginationTestCase(methodName='runTest')
Bases: `rest_framework.test.APITestCase`
Test case to check that the pagination is used on all endpoints that
should use it.
#### endpoints()
A list of endpoints that should use the pagination.
#### superuser()
A superuser used in the tests to access the endpoints.
#### endpoints( = ['/api/cotisations/article/', '/api/cotisations/banque/', '/api/cotisations/cotisation/', '/api/cotisations/facture/', '/api/cotisations/paiement/', '/api/cotisations/vente/', '/api/machines/domain/', '/api/machines/extension/', '/api/machines/interface/', '/api/machines/iplist/', '/api/machines/iptype/', '/api/machines/ipv6list/', '/api/machines/machine/', '/api/machines/machinetype/', '/api/machines/mx/', '/api/machines/nas/', '/api/machines/ns/', '/api/machines/ouvertureportlist/', '/api/machines/ouvertureport/', '/api/machines/servicelink/', '/api/machines/service/', '/api/machines/soa/', '/api/machines/srv/', '/api/machines/txt/', '/api/machines/vlan/', '/api/preferences/service/', '/api/topologie/acesspoint/', '/api/topologie/building/', '/api/topologie/constructorswitch/', '/api/topologie/modelswitch/', '/api/topologie/room/', '/api/topologie/server/', '/api/topologie/stack/', '/api/topologie/switch/', '/api/topologie/switchbay/', '/api/topologie/switchport/', '/api/users/adherent/', '/api/users/ban/', '/api/users/club/', '/api/users/listright/', '/api/users/school/', '/api/users/serviceuser/', '/api/users/shell/', '/api/users/user/', '/api/users/whitelist/', '/api/dns/zones/', '/api/dhcp/hostmacip/', '/api/mailing/standard', '/api/mailing/club', '/api/services/regen/'])
#### classmethod setUpTestData()
Load initial data for the TestCase
#### superuser( = None)
#### classmethod tearDownClass()
Hook method for deconstructing the class fixture after running all tests in the class.
#### test_pagination()
Tests that every endpoint is using the pagination correctly.
* **Raises**
**AssertionError** – An endpoint did not have one the following keyword
in the JSOn response: ‘count’, ‘next’, ‘previous’, ‘results’
or more that 100 results were returned.
## api.urls module
Defines the URLs of the API
A custom router is used to register all the routes. That allows to register
all the URL patterns from the viewsets as a standard router but, the views
can also be register. That way a complete API root page presenting all URLs
can be generated automatically.
## api.views module
Defines the views of the API
All views inherits the rest_framework.views.APIview to respect the
REST API requirements such as dealing with HTTP status code, format of
the response (JSON or other), the CSRF exempting, …
### class api.views.ObtainExpiringAuthToken(\*\*kwargs)
Bases: `rest_framework.authtoken.views.ObtainAuthToken`
Exposes a view to obtain a authentication token.
This view as the same behavior as the
rest_framework.auth_token.views.ObtainAuthToken view except that the
expiration time is send along with the token as an addtional information.
#### post(request, \*args, \*\*kwargs)
## Module contents

293
Code-Documentation/autodoc/cotisations.api.md

@ -1,293 +0,0 @@
# cotisations.api package
## Submodules
## cotisations.api.serializers module
### class cotisations.api.serializers.ArticleSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize cotisations.models.Article objects.
#### class Meta()
Bases: `object`
#### fields( = ('name', 'prix', 'duration', 'type_user', 'type_cotisation', 'api_url'))
#### model()
alias of `cotisations.models.Article`
### class cotisations.api.serializers.BanqueSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize cotisations.models.Banque objects.
#### class Meta()
Bases: `object`
#### fields( = ('name', 'api_url'))
#### model()
alias of `cotisations.models.Banque`
### class cotisations.api.serializers.BaseInvoiceSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = '__all__')
#### model()
alias of `cotisations.models.BaseInvoice`
### class cotisations.api.serializers.CotisationSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize cotisations.models.Cotisation objects.
#### class Meta()
Bases: `object`
#### fields( = ('vente', 'type_cotisation', 'date_start', 'date_end', 'api_url'))
#### model()
alias of `cotisations.models.Cotisation`
### class cotisations.api.serializers.FactureSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize cotisations.models.Facture objects.
#### class Meta()
Bases: `object`
#### fields( = ('user', 'paiement', 'banque', 'cheque', 'date', 'valid', 'control', 'prix_total', 'name', 'api_url'))
#### model()
alias of `cotisations.models.Facture`
### class cotisations.api.serializers.PaiementSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize cotisations.models.Paiement objects.
#### class Meta()
Bases: `object`
#### fields( = ('moyen', 'api_url'))
#### model()
alias of `cotisations.models.Paiement`
### class cotisations.api.serializers.ReminderSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `rest_framework.serializers.ModelSerializer`
Serialize the data about a reminder
#### class Meta()
Bases: `object`
#### fields( = ('days', 'message', 'users_to_remind'))
#### model()
alias of `preferences.models.Reminder`
### class cotisations.api.serializers.ReminderUsersSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `users.api.serializers.UserSerializer`
Serialize the data about a mailing member.
#### class Meta()
Bases: `users.api.serializers.UserSerializer.Meta`
#### fields( = ('get_full_name', 'get_mail'))
### class cotisations.api.serializers.VenteSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize cotisations.models.Vente objects.
#### class Meta()
Bases: `object`
#### fields( = ('facture', 'number', 'name', 'prix', 'duration', 'type_cotisation', 'prix_total', 'api_url'))
#### model()
alias of `cotisations.models.Vente`
## cotisations.api.urls module
## cotisations.api.views module
### class cotisations.api.views.ArticleViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of cotisations.models.Article objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.ArticleSerializer`
#### suffix( = None)
### class cotisations.api.views.BanqueViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of cotisations.models.Banque objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.BanqueSerializer`
#### suffix( = None)
### class cotisations.api.views.CotisationViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of cotisations.models.Cotisation objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.CotisationSerializer`
#### suffix( = None)
### class cotisations.api.views.FactureViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of cotisations.models.Facture objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.BaseInvoiceSerializer`
#### suffix( = None)
### class cotisations.api.views.PaiementViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of cotisations.models.Paiement objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.PaiementSerializer`
#### suffix( = None)
### class cotisations.api.views.ReminderView(\*\*kwargs)
Bases: `rest_framework.generics.ListAPIView`
Output for users to remind an end of their subscription.
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.ReminderSerializer`
### class cotisations.api.views.VenteViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of cotisations.models.Vente objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `cotisations.api.serializers.VenteSerializer`
#### suffix( = None)
## Module contents

1759
Code-Documentation/autodoc/cotisations.md

File diff suppressed because it is too large

439
Code-Documentation/autodoc/cotisations.migrations.md

@ -1,439 +0,0 @@
# cotisations.migrations package
## Submodules
## cotisations.migrations.0001_initial module
### class cotisations.migrations.0001_initial.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0005_auto_20160702_0006')])
#### operations( = [<CreateModel name='Article', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('prix', <django.db.models.fields.DecimalField>)]>, <CreateModel name='Banque', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>)]>, <CreateModel name='Facture', fields=[('id', <django.db.models.fields.AutoField>), ('cheque', <django.db.models.fields.CharField>), ('number', <django.db.models.fields.IntegerField>), ('date', <django.db.models.fields.DateTimeField>), ('name', <django.db.models.fields.CharField>), ('prix', <django.db.models.fields.DecimalField>), ('article', <django.db.models.fields.related.ForeignKey>), ('banque', <django.db.models.fields.related.ForeignKey>)]>, <CreateModel name='Paiement', fields=[('id', <django.db.models.fields.AutoField>), ('moyen', <django.db.models.fields.CharField>)]>, <AddField model_name='facture', name='paiement', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='facture', name='user', field=<django.db.models.fields.related.ForeignKey>>])
## cotisations.migrations.0002_remove_facture_article module
### class cotisations.migrations.0002_remove_facture_article.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0001_initial')])
#### operations( = [<RemoveField model_name='facture', name='article'>])
## cotisations.migrations.0003_auto_20160702_1448 module
### class cotisations.migrations.0003_auto_20160702_1448.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0002_remove_facture_article')])
#### operations( = [<AlterField model_name='facture', name='banque', field=<django.db.models.fields.related.ForeignKey>>])
## cotisations.migrations.0004_auto_20160702_1528 module
### class cotisations.migrations.0004_auto_20160702_1528.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0003_auto_20160702_1448')])
#### operations( = [<AlterField model_name='facture', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='facture', name='prix', field=<django.db.models.fields.DecimalField>>])
## cotisations.migrations.0005_auto_20160702_1532 module
### class cotisations.migrations.0005_auto_20160702_1532.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0004_auto_20160702_1528')])
#### operations( = [<AlterField model_name='facture', name='cheque', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0006_auto_20160702_1534 module
### class cotisations.migrations.0006_auto_20160702_1534.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0005_auto_20160702_1532')])
#### operations( = [<AlterField model_name='facture', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='facture', name='prix', field=<django.db.models.fields.DecimalField>>])
## cotisations.migrations.0007_auto_20160702_1543 module
### class cotisations.migrations.0007_auto_20160702_1543.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0006_auto_20160702_1534')])
#### operations( = [<AlterField model_name='facture', name='name', field=<django.db.models.fields.CharField>, preserve_default=False>, <AlterField model_name='facture', name='prix', field=<django.db.models.fields.DecimalField>, preserve_default=False>])
## cotisations.migrations.0008_auto_20160702_1614 module
### class cotisations.migrations.0008_auto_20160702_1614.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0005_auto_20160702_0006'), ('cotisations', '0007_auto_20160702_1543')])
#### operations( = [<CreateModel name='Cotisation', fields=[('id', <django.db.models.fields.AutoField>), ('date_start', <django.db.models.fields.DateTimeField>), ('date_end', <django.db.models.fields.DateTimeField>)]>, <AddField model_name='article', name='cotisation', field=<django.db.models.fields.BooleanField>, preserve_default=False>, <AddField model_name='article', name='duration', field=<django.db.models.fields.DurationField>>, <AddField model_name='facture', name='valid', field=<django.db.models.fields.BooleanField>>, <AddField model_name='cotisation', name='facture', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='cotisation', name='user', field=<django.db.models.fields.related.ForeignKey>>])
## cotisations.migrations.0009_remove_cotisation_user module
### class cotisations.migrations.0009_remove_cotisation_user.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0008_auto_20160702_1614')])
#### operations( = [<RemoveField model_name='cotisation', name='user'>])
## cotisations.migrations.0010_auto_20160702_1840 module
### class cotisations.migrations.0010_auto_20160702_1840.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0009_remove_cotisation_user')])
#### operations( = [<RemoveField model_name='article', name='duration'>, <AddField model_name='article', name='duration', field=<django.db.models.fields.IntegerField>>])
## cotisations.migrations.0011_auto_20160702_1911 module
### class cotisations.migrations.0011_auto_20160702_1911.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0010_auto_20160702_1840')])
#### operations( = [<AlterField model_name='cotisation', name='date_start', field=<django.db.models.fields.DateTimeField>>])
## cotisations.migrations.0012_auto_20160704_0118 module
### class cotisations.migrations.0012_auto_20160704_0118.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0011_auto_20160702_1911')])
#### operations( = [<AlterField model_name='cotisation', name='facture', field=<django.db.models.fields.related.OneToOneField>>])
## cotisations.migrations.0013_auto_20160711_2240 module
### class cotisations.migrations.0013_auto_20160711_2240.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0012_auto_20160704_0118')])
#### operations( = [<CreateModel name='Vente', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('prix', <django.db.models.fields.DecimalField>), ('cotisation', <django.db.models.fields.BooleanField>), ('duration', <django.db.models.fields.IntegerField>)]>, <RemoveField model_name='facture', name='name'>, <RemoveField model_name='facture', name='prix'>, <AddField model_name='vente', name='facture', field=<django.db.models.fields.related.ForeignKey>>])
## cotisations.migrations.0014_auto_20160712_0245 module
### class cotisations.migrations.0014_auto_20160712_0245.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0013_auto_20160711_2240')])
#### operations( = [<RemoveField model_name='facture', name='number'>, <AddField model_name='vente', name='number', field=<django.db.models.fields.IntegerField>, preserve_default=False>])
## cotisations.migrations.0015_auto_20160714_2142 module
### class cotisations.migrations.0015_auto_20160714_2142.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0014_auto_20160712_0245')])
#### operations( = [<AddField model_name='facture', name='control', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='cotisation', name='facture', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='vente', name='facture', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='vente', name='number', field=<django.db.models.fields.IntegerField>>])
## cotisations.migrations.0016_auto_20160715_0110 module
### class cotisations.migrations.0016_auto_20160715_0110.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0015_auto_20160714_2142')])
#### operations( = [<RenameField model_name='article', old_name='cotisation', new_name='iscotisation'>, <RenameField model_name='vente', old_name='cotisation', new_name='iscotisation'>, <RemoveField model_name='cotisation', name='facture'>, <AddField model_name='cotisation', name='vente', field=<django.db.models.fields.related.OneToOneField>, preserve_default=False>])
## cotisations.migrations.0017_auto_20170718_2329 module
### class cotisations.migrations.0017_auto_20170718_2329.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0016_auto_20160715_0110')])
#### operations( = [<AlterField model_name='article', name='duration', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='article', name='name', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0018_paiement_type_paiement module
### class cotisations.migrations.0018_paiement_type_paiement.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0017_auto_20170718_2329')])
#### operations( = [<AddField model_name='paiement', name='type_paiement', field=<django.db.models.fields.CharField>, preserve_default=False>])
## cotisations.migrations.0019_auto_20170819_0055 module
### class cotisations.migrations.0019_auto_20170819_0055.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0018_paiement_type_paiement')])
#### operations( = [<AlterField model_name='paiement', name='type_paiement', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0020_auto_20170819_0057 module
### class cotisations.migrations.0020_auto_20170819_0057.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0019_auto_20170819_0055')])
#### operations( = [<AlterField model_name='paiement', name='type_paiement', field=<django.db.models.fields.IntegerField>>])
## cotisations.migrations.0021_auto_20170819_0104 module
### class cotisations.migrations.0021_auto_20170819_0104.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0020_auto_20170819_0057')])
#### operations( = [<AlterField model_name='paiement', name='type_paiement', field=<django.db.models.fields.IntegerField>>])
## cotisations.migrations.0022_auto_20170824_0128 module
### class cotisations.migrations.0022_auto_20170824_0128.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0021_auto_20170819_0104')])
#### operations( = [<AlterField model_name='paiement', name='type_paiement', field=<django.db.models.fields.IntegerField>>])
## cotisations.migrations.0023_auto_20170902_1303 module
### class cotisations.migrations.0023_auto_20170902_1303.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0022_auto_20170824_0128')])
#### operations( = [<AlterField model_name='paiement', name='type_paiement', field=<django.db.models.fields.IntegerField>>])
## cotisations.migrations.0024_auto_20171015_2033 module
### class cotisations.migrations.0024_auto_20171015_2033.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0023_auto_20170902_1303')])
#### operations( = [<AlterField model_name='article', name='duration', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='vente', name='duration', field=<django.db.models.fields.PositiveIntegerField>>])
## cotisations.migrations.0025_article_type_user module
### class cotisations.migrations.0025_article_type_user.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0024_auto_20171015_2033')])
#### operations( = [<AddField model_name='article', name='type_user', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0026_auto_20171028_0126 module
### class cotisations.migrations.0026_auto_20171028_0126.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0025_article_type_user')])
#### operations( = [<AddField model_name='article', name='type_cotisation', field=<django.db.models.fields.CharField>>, <AddField model_name='cotisation', name='type_cotisation', field=<django.db.models.fields.CharField>>, <AddField model_name='vente', name='type_cotisation', field=<django.db.models.fields.CharField>>, <RunPython <function create_type>, <function delete_type>>, <RemoveField model_name='article', name='iscotisation'>, <RemoveField model_name='vente', name='iscotisation'>])
### cotisations.migrations.0026_auto_20171028_0126.create_type(apps, schema_editor)
### cotisations.migrations.0026_auto_20171028_0126.delete_type(apps, schema_editor)
## cotisations.migrations.0027_auto_20171029_1156 module
### class cotisations.migrations.0027_auto_20171029_1156.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0026_auto_20171028_0126')])
#### operations( = [<AlterField model_name='article', name='name', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0028_auto_20171231_0007 module
### class cotisations.migrations.0028_auto_20171231_0007.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0027_auto_20171029_1156')])
#### operations( = [<AlterModelOptions name='article', options={'permissions': (('view_article', 'Peut voir un objet article'),)}>, <AlterModelOptions name='banque', options={'permissions': (('view_banque', 'Peut voir un objet banque'),)}>, <AlterModelOptions name='cotisation', options={'permissions': (('view_cotisation', 'Peut voir un objet cotisation'), ('change_all_cotisation', 'Superdroit, peut modifier toutes les cotisations'))}>, <AlterModelOptions name='facture', options={'permissions': (('change_facture_control', "Peut changer l'etat de controle"), ('change_facture_pdf', 'Peut éditer une facture pdf'), ('view_facture', 'Peut voir un objet facture'), ('change_all_facture', 'Superdroit, peut modifier toutes les factures'))}>, <AlterModelOptions name='paiement', options={'permissions': (('view_paiement', 'Peut voir un objet paiement'),)}>, <AlterModelOptions name='vente', options={'permissions': (('view_vente', 'Peut voir un objet vente'), ('change_all_vente', 'Superdroit, peut modifier toutes les ventes'))}>])
## cotisations.migrations.0029_auto_20180414_2056 module
### class cotisations.migrations.0029_auto_20180414_2056.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0028_auto_20171231_0007')])
#### operations( = [<AlterModelOptions name='article', options={'permissions': (('view_article', "Can see an article's details"),), 'verbose_name': 'Article', 'verbose_name_plural': 'Articles'}>, <AlterModelOptions name='banque', options={'permissions': (('view_banque', "Can see a bank's details"),), 'verbose_name': 'Bank', 'verbose_name_plural': 'Banks'}>, <AlterModelOptions name='cotisation', options={'permissions': (('view_cotisation', "Can see a cotisation's details"), ('change_all_cotisation', 'Can edit the previous cotisations'))}>, <AlterModelOptions name='facture', options={'permissions': (('change_facture_control', 'Can change the "controlled" state'), ('change_facture_pdf', 'Can create a custom PDF invoice'), ('view_facture', "Can see an invoice's details"), ('change_all_facture', 'Can edit all the previous invoices')), 'verbose_name': 'Invoice', 'verbose_name_plural': 'Invoices'}>, <AlterModelOptions name='paiement', options={'permissions': (('view_paiement', "Can see a payement's details"),), 'verbose_name': 'Payment method', 'verbose_name_plural': 'Payment methods'}>, <AlterModelOptions name='vente', options={'permissions': (('view_vente', "Can see a purchase's details"), ('change_all_vente', 'Can edit all the previous purchases')), 'verbose_name': 'Purchase', 'verbose_name_plural': 'Purchases'}>, <AlterField model_name='article', name='duration', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='article', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='article', name='prix', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='article', name='type_cotisation', field=<django.db.models.fields.CharField>>, <AlterField model_name='article', name='type_user', field=<django.db.models.fields.CharField>>, <AlterField model_name='banque', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='cotisation', name='date_end', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='cotisation', name='date_start', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='cotisation', name='type_cotisation', field=<django.db.models.fields.CharField>>, <AlterField model_name='cotisation', name='vente', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='facture', name='cheque', field=<django.db.models.fields.CharField>>, <AlterField model_name='facture', name='control', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='facture', name='date', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='facture', name='valid', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='paiement', name='moyen', field=<django.db.models.fields.CharField>>, <AlterField model_name='paiement', name='type_paiement', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='vente', name='duration', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='vente', name='facture', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='vente', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='vente', name='number', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='vente', name='prix', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='vente', name='type_cotisation', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0030_custom_payment module
### class cotisations.migrations.0030_custom_payment.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('preferences', '0044_remove_payment_pass'), ('cotisations', '0029_auto_20180414_2056')])
#### operations( = [<AlterModelOptions name='paiement', options={'permissions': (('view_paiement', "Can see a payement's details"), ('use_every_payment', 'Can use every payement')), 'verbose_name': 'Payment method', 'verbose_name_plural': 'Payment methods'}>, <AlterModelOptions name='article', options={'permissions': (('view_article', "Can see an article's details"), ('buy_every_article', 'Can buy every_article')), 'verbose_name': 'Article', 'verbose_name_plural': 'Articles'}>, <AddField model_name='paiement', name='available_for_everyone', field=<django.db.models.fields.BooleanField>>, <AddField model_name='paiement', name='is_balance', field=<django.db.models.fields.BooleanField>>, <AddField model_name='article', name='available_for_everyone', field=<django.db.models.fields.BooleanField>>, <CreateModel name='ChequePayment', fields=[('id', <django.db.models.fields.AutoField>), ('payment', <django.db.models.fields.related.OneToOneField>)], bases=(<class 'cotisations.payment_methods.mixins.PaymentMethodMixin'>, <class 'django.db.models.base.Model'>), options={'verbose_name': 'Cheque'}>, <CreateModel name='ComnpayPayment', fields=[('id', <django.db.models.fields.AutoField>), ('payment_credential', <django.db.models.fields.CharField>), ('payment_pass', <re2o.aes_field.AESEncryptedField>), ('payment', <django.db.models.fields.related.OneToOneField>), ('minimum_payment', <django.db.models.fields.DecimalField>)], bases=(<class 'cotisations.payment_methods.mixins.PaymentMethodMixin'>, <class 'django.db.models.base.Model'>), options={'verbose_name': 'ComNpay'}>, <CreateModel name='BalancePayment', fields=[('id', <django.db.models.fields.AutoField>), ('minimum_balance', <django.db.models.fields.DecimalField>), ('payment', <django.db.models.fields.related.OneToOneField>), ('maximum_balance', <django.db.models.fields.DecimalField>), ('credit_balance_allowed', <django.db.models.fields.BooleanField>)], bases=(<class 'cotisations.payment_methods.mixins.PaymentMethodMixin'>, <class 'django.db.models.base.Model'>), options={'verbose_name': 'User Balance'}>, <RunPython <function add_comnpay>>, <RunPython <function add_cheque>>, <RunPython <function add_solde>>, <RemoveField model_name='paiement', name='type_paiement'>])
### cotisations.migrations.0030_custom_payment.add_cheque(apps, schema_editor)
### cotisations.migrations.0030_custom_payment.add_comnpay(apps, schema_editor)
### cotisations.migrations.0030_custom_payment.add_solde(apps, schema_editor)
## cotisations.migrations.0031_comnpaypayment_production module
### class cotisations.migrations.0031_comnpaypayment_production.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0030_custom_payment')])
#### operations( = [<AddField model_name='comnpaypayment', name='production', field=<django.db.models.fields.BooleanField>>])
## cotisations.migrations.0032_custom_invoice module
### class cotisations.migrations.0032_custom_invoice.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0031_comnpaypayment_production')])
#### operations( = [<CreateModel name='BaseInvoice', fields=[('id', <django.db.models.fields.AutoField>), ('date', <django.db.models.fields.DateTimeField>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 're2o.field_permissions.FieldPermissionModelMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='CustomInvoice', fields=[('baseinvoice_ptr', <django.db.models.fields.related.OneToOneField>), ('recipient', <django.db.models.fields.CharField>), ('payment', <django.db.models.fields.CharField>), ('address', <django.db.models.fields.CharField>), ('paid', <django.db.models.fields.BooleanField>)], bases=('cotisations.baseinvoice',), options={'permissions': (('view_custominvoice', 'Can view a custom invoice'),)}>, <AddField model_name='facture', name='baseinvoice_ptr', field=<django.db.models.fields.related.OneToOneField>, preserve_default=False>, <RunPython <function reattribute_ids>>, <AlterField model_name='vente', name='facture', field=<django.db.models.fields.related.ForeignKey>>, <RemoveField model_name='facture', name='id'>, <RemoveField model_name='facture', name='date'>, <AlterField model_name='facture', name='baseinvoice_ptr', field=<django.db.models.fields.related.OneToOneField>>, <RunPython <function update_rights>>, <AlterModelOptions name='facture', options={'permissions': (('change_facture_control', 'Can change the "controlled" state'), ('view_facture', "Can see an invoice's details"), ('change_all_facture', 'Can edit all the previous invoices')), 'verbose_name': 'Invoice', 'verbose_name_plural': 'Invoices'}>])
### cotisations.migrations.0032_custom_invoice.reattribute_ids(apps, schema_editor)
### cotisations.migrations.0032_custom_invoice.update_rights(apps, schema_editor)
## cotisations.migrations.0033_auto_20180818_1319 module
### class cotisations.migrations.0033_auto_20180818_1319.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0032_custom_invoice')])
#### operations( = [<AlterModelOptions name='article', options={'permissions': (('view_article', 'Can view an article object'), ('buy_every_article', 'Can buy every article')), 'verbose_name': 'article', 'verbose_name_plural': 'articles'}>, <AlterModelOptions name='balancepayment', options={'verbose_name': 'user balance'}>, <AlterModelOptions name='banque', options={'permissions': (('view_banque', 'Can view a bank object'),), 'verbose_name': 'bank', 'verbose_name_plural': 'banks'}>, <AlterModelOptions name='cotisation', options={'permissions': (('view_cotisation', 'Can view a subscription object'), ('change_all_cotisation', 'Can edit the previous subscriptions')), 'verbose_name': 'subscription', 'verbose_name_plural': 'subscriptions'}>, <AlterModelOptions name='custominvoice', options={'permissions': (('view_custominvoice', 'Can view a custom invoice object'),)}>, <AlterModelOptions name='facture', options={'permissions': (('change_facture_control', 'Can edit the "controlled" state'), ('view_facture', 'Can view an invoice object'), ('change_all_facture', 'Can edit all the previous invoices')), 'verbose_name': 'invoice', 'verbose_name_plural': 'invoices'}>, <AlterModelOptions name='paiement', options={'permissions': (('view_paiement', 'Can view a payment method object'), ('use_every_payment', 'Can use every payment method')), 'verbose_name': 'payment method', 'verbose_name_plural': 'payment methods'}>, <AlterModelOptions name='vente', options={'permissions': (('view_vente', 'Can view a purchase object'), ('change_all_vente', 'Can edit all the previous purchases')), 'verbose_name': 'purchase', 'verbose_name_plural': 'purchases'}>, <AlterField model_name='article', name='available_for_everyone', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='article', name='duration', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='article', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='article', name='prix', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='article', name='type_cotisation', field=<django.db.models.fields.CharField>>, <AlterField model_name='article', name='type_user', field=<django.db.models.fields.CharField>>, <AlterField model_name='banque', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='comnpaypayment', name='payment_credential', field=<django.db.models.fields.CharField>>, <AlterField model_name='comnpaypayment', name='payment_pass', field=<re2o.aes_field.AESEncryptedField>>, <AlterField model_name='comnpaypayment', name='production', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='cotisation', name='date_end', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='cotisation', name='date_start', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='cotisation', name='type_cotisation', field=<django.db.models.fields.CharField>>, <AlterField model_name='cotisation', name='vente', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='facture', name='cheque', field=<django.db.models.fields.CharField>>, <AlterField model_name='facture', name='control', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='facture', name='valid', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='paiement', name='available_for_everyone', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='paiement', name='is_balance', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='paiement', name='moyen', field=<django.db.models.fields.CharField>>, <AlterField model_name='vente', name='duration', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='vente', name='facture', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='vente', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='vente', name='number', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='vente', name='prix', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='vente', name='type_cotisation', field=<django.db.models.fields.CharField>>])
## cotisations.migrations.0034_auto_20180831_1532 module
### class cotisations.migrations.0034_auto_20180831_1532.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0033_auto_20180818_1319')])
#### operations( = [<AlterField model_name='facture', name='valid', field=<django.db.models.fields.BooleanField>>])
## cotisations.migrations.0035_notepayment module
### class cotisations.migrations.0035_notepayment.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0034_auto_20180831_1532')])
#### operations( = [<CreateModel name='NotePayment', fields=[('id', <django.db.models.fields.AutoField>), ('server', <django.db.models.fields.CharField>), ('port', <django.db.models.fields.PositiveIntegerField>), ('id_note', <django.db.models.fields.PositiveIntegerField>), ('payment', <django.db.models.fields.related.OneToOneField>)], options={'verbose_name': 'NoteKfet'}, bases=(<class 'cotisations.payment_methods.mixins.PaymentMethodMixin'>, <class 'django.db.models.base.Model'>)>])
## cotisations.migrations.0036_custominvoice_remark module
### class cotisations.migrations.0036_custominvoice_remark.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0035_notepayment')])
#### operations( = [<AddField model_name='custominvoice', name='remark', field=<django.db.models.fields.TextField>>])
## cotisations.migrations.0037_costestimate module
### class cotisations.migrations.0037_costestimate.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0036_custominvoice_remark')])
#### operations( = [<CreateModel name='CostEstimate', fields=[('custominvoice_ptr', <django.db.models.fields.related.OneToOneField>), ('validity', <django.db.models.fields.DurationField>), ('final_invoice', <django.db.models.fields.related.ForeignKey>)], options={'permissions': (('view_costestimate', 'Can view a cost estimate object'),)}, bases=('cotisations.custominvoice',)>])
## cotisations.migrations.0038_auto_20181231_1657 module
### class cotisations.migrations.0038_auto_20181231_1657.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0037_costestimate')])
#### operations( = [<AlterField model_name='costestimate', name='final_invoice', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='costestimate', name='validity', field=<django.db.models.fields.DurationField>>, <AlterField model_name='custominvoice', name='paid', field=<django.db.models.fields.BooleanField>>])
## cotisations.migrations.0039_freepayment module
### class cotisations.migrations.0039_freepayment.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0038_auto_20181231_1657')])
#### operations( = [<CreateModel name='FreePayment', fields=[('id', <django.db.models.fields.AutoField>), ('payment', <django.db.models.fields.related.OneToOneField>)], options={'verbose_name': 'Free payment'}, bases=(<class 'cotisations.payment_methods.mixins.PaymentMethodMixin'>, <class 'django.db.models.base.Model'>)>])
## cotisations.migrations.0040_auto_20191002_2335 module
### class cotisations.migrations.0040_auto_20191002_2335.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0039_freepayment')])
#### operations( = [<AddField model_name='article', name='duration_days', field=<django.db.models.fields.PositiveIntegerField>>, <AddField model_name='vente', name='duration_days', field=<django.db.models.fields.PositiveIntegerField>>])
## cotisations.migrations.0041_auto_20191103_2131 module
### class cotisations.migrations.0041_auto_20191103_2131.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0040_auto_20191002_2335')])
#### operations( = [<AlterField model_name='balancepayment', name='payment', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='chequepayment', name='payment', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='comnpaypayment', name='payment', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='freepayment', name='payment', field=<django.db.models.fields.related.OneToOneField>>, <AlterField model_name='notepayment', name='payment', field=<django.db.models.fields.related.OneToOneField>>])
## cotisations.migrations.0042_auto_20191120_0159 module
### class cotisations.migrations.0042_auto_20191120_0159.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('cotisations', '0041_auto_20191103_2131')])
#### operations( = [<AlterModelOptions name='chequepayment', options={'verbose_name': 'cheque'}>, <AlterField model_name='balancepayment', name='credit_balance_allowed', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='balancepayment', name='maximum_balance', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='balancepayment', name='minimum_balance', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='baseinvoice', name='date', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='comnpaypayment', name='minimum_payment', field=<django.db.models.fields.DecimalField>>, <AlterField model_name='comnpaypayment', name='production', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='costestimate', name='validity', field=<django.db.models.fields.DurationField>>, <AlterField model_name='custominvoice', name='address', field=<django.db.models.fields.CharField>>, <AlterField model_name='custominvoice', name='paid', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='custominvoice', name='payment', field=<django.db.models.fields.CharField>>, <AlterField model_name='custominvoice', name='recipient', field=<django.db.models.fields.CharField>>, <AlterField model_name='custominvoice', name='remark', field=<django.db.models.fields.TextField>>])
## Module contents

83
Code-Documentation/autodoc/cotisations.payment_methods.balance.md

@ -1,83 +0,0 @@
# cotisations.payment_methods.balance package
## Submodules
## cotisations.payment_methods.balance.models module
### class cotisations.payment_methods.balance.models.BalancePayment(\*args, \*\*kwargs)
Bases: `cotisations.payment_methods.mixins.PaymentMethodMixin`, `django.db.models.base.Model`
The model allowing you to pay with a cheque.
#### exception DoesNotExist()
Bases: `django.core.exceptions.ObjectDoesNotExist`
#### exception MultipleObjectsReturned()
Bases: `django.core.exceptions.MultipleObjectsReturned`
#### alter_payment(payment)
Register the payment as a balance payment.
#### can_credit_balance(user_request)
#### check_price(price, user, \*args, \*\*kwargs)
Checks that the price meets the requirement to be paid with user
balance.
#### credit_balance_allowed()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### end_payment(invoice, request)
Changes the user’s balance to pay the invoice. If it is not
possible, shows an error and invalidates the invoice.
#### id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### maximum_balance()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### minimum_balance()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### objects( = <django.db.models.manager.Manager object>)
#### payment()
Accessor to the related object on the forward side of a one-to-one relation.
In the example:
```
class Restaurant(Model):
place = OneToOneField(Place, related_name='restaurant')
```
`restaurant.place` is a `ForwardOneToOneDescriptor` instance.
#### payment_id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### valid_form(form)
Checks that there is not already a balance payment method.
## Module contents
This module contains a method to pay online using user balance.

89
Code-Documentation/autodoc/cotisations.payment_methods.cheque.md

@ -1,89 +0,0 @@
# cotisations.payment_methods.cheque package
## Submodules
## cotisations.payment_methods.cheque.forms module
### class cotisations.payment_methods.cheque.forms.InvoiceForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None)
Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm`
A simple form to get the bank a the cheque number.
#### class Meta()
Bases: `object`
#### fields( = ['banque', 'cheque'])
#### model()
alias of `cotisations.models.Facture`
#### base_fields( = {'banque': <django.forms.models.ModelChoiceField object>, 'cheque': <django.forms.fields.CharField object>})
#### declared_fields( = {})
#### property media()
## cotisations.payment_methods.cheque.models module
### class cotisations.payment_methods.cheque.models.ChequePayment(\*args, \*\*kwargs)
Bases: `cotisations.payment_methods.mixins.PaymentMethodMixin`, `django.db.models.base.Model`
The model allowing you to pay with a cheque.
#### exception DoesNotExist()
Bases: `django.core.exceptions.ObjectDoesNotExist`
#### exception MultipleObjectsReturned()
Bases: `django.core.exceptions.MultipleObjectsReturned`
#### end_payment(invoice, request)
Invalidates the invoice then redirect the user towards a view asking
for informations to add to the invoice before validating it.
#### id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### objects( = <django.db.models.manager.Manager object>)
#### payment()
Accessor to the related object on the forward side of a one-to-one relation.
In the example:
```
class Restaurant(Model):
place = OneToOneField(Place, related_name='restaurant')
```
`restaurant.place` is a `ForwardOneToOneDescriptor` instance.
#### payment_id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
## cotisations.payment_methods.cheque.urls module
## cotisations.payment_methods.cheque.views module
Payment
Here are defined some views dedicated to cheque payement.
### cotisations.payment_methods.cheque.views.cheque(request, invoice_pk)
This view validate an invoice with the data from a cheque.
## Module contents
This module contains a method to pay online using cheque.

126
Code-Documentation/autodoc/cotisations.payment_methods.comnpay.md

@ -1,126 +0,0 @@
# cotisations.payment_methods.comnpay package
## Submodules
## cotisations.payment_methods.comnpay.comnpay module
cotisations.payment_utils.comnpay
The module in charge of handling the negociation with Comnpay
for online payment
### class cotisations.payment_methods.comnpay.comnpay.Transaction(vad_number='', secret_key='', urlRetourOK='', urlRetourNOK='', urlIPN='', source='', typeTr='D')
Bases: `object`
The class representing a transaction with all the functions
used during the negociation
#### buildSecretHTML(produit='Produit', montant='0.00', idTransaction='')
Build an HTML hidden form with the different parameters for the
transaction
#### static validSec(values, secret_key)
Check if the secret value is correct
## cotisations.payment_methods.comnpay.models module
### class cotisations.payment_methods.comnpay.models.ComnpayPayment(\*args, \*\*kwargs)
Bases: `cotisations.payment_methods.mixins.PaymentMethodMixin`, `django.db.models.base.Model`
The model allowing you to pay with COMNPAY.
#### exception DoesNotExist()
Bases: `django.core.exceptions.ObjectDoesNotExist`
#### exception MultipleObjectsReturned()
Bases: `django.core.exceptions.MultipleObjectsReturned`
#### check_price(price, \*args, \*\*kwargs)
Checks that the price meets the requirement to be paid with ComNpay.
#### end_payment(invoice, request)
Build a request to start the negociation with Comnpay by using
a facture id, the price and the secret transaction data stored in
the preferences.
#### id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### minimum_payment()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### objects( = <django.db.models.manager.Manager object>)
#### payment()
Accessor to the related object on the forward side of a one-to-one relation.
In the example:
```
class Restaurant(Model):
place = OneToOneField(Place, related_name='restaurant')
```
`restaurant.place` is a `ForwardOneToOneDescriptor` instance.
#### payment_credential()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### payment_id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### payment_pass()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### production()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### return_url_comnpay()
## cotisations.payment_methods.comnpay.urls module
## cotisations.payment_methods.comnpay.views module
Payment
Here are the views needed by comnpay
### cotisations.payment_methods.comnpay.views.accept_payment(request, factureid)
The view where the user is redirected when a comnpay payment has been
accepted.
### cotisations.payment_methods.comnpay.views.ipn(request)
The view called by Comnpay server to validate the transaction.
Verify that we can firmly save the user’s action and notify
Comnpay with 400 response if not or with a 200 response if yes.
### cotisations.payment_methods.comnpay.views.refuse_payment(request)
The view where the user is redirected when a comnpay payment has been
refused.
## Module contents
This module contains a method to pay online using comnpay.

57
Code-Documentation/autodoc/cotisations.payment_methods.free.md

@ -1,57 +0,0 @@
# cotisations.payment_methods.free package
## Submodules
## cotisations.payment_methods.free.models module
### class cotisations.payment_methods.free.models.FreePayment(\*args, \*\*kwargs)
Bases: `cotisations.payment_methods.mixins.PaymentMethodMixin`, `django.db.models.base.Model`
The model allowing you to bypass payment if the invoice is free.
#### exception DoesNotExist()
Bases: `django.core.exceptions.ObjectDoesNotExist`
#### exception MultipleObjectsReturned()
Bases: `django.core.exceptions.MultipleObjectsReturned`
#### check_price(price, user, \*args, \*\*kwargs)
Checks that the price meets the requirement to be paid with user
balance.
#### end_payment(invoice, request)
Ends the payment normally.
#### id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### objects( = <django.db.models.manager.Manager object>)
#### payment()
Accessor to the related object on the forward side of a one-to-one relation.
In the example:
```
class Restaurant(Model):
place = OneToOneField(Place, related_name='restaurant')
```
`restaurant.place` is a `ForwardOneToOneDescriptor` instance.
#### payment_id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
## Module contents
This module contains a method to pay online using user balance.

335
Code-Documentation/autodoc/cotisations.payment_methods.md

@ -1,335 +0,0 @@
# cotisations.payment_methods package
## Subpackages
* cotisations.payment_methods.balance package
* Submodules
* cotisations.payment_methods.balance.models module
* Module contents
* cotisations.payment_methods.cheque package
* Submodules
* cotisations.payment_methods.cheque.forms module
* cotisations.payment_methods.cheque.models module
* cotisations.payment_methods.cheque.urls module
* cotisations.payment_methods.cheque.views module
* Module contents
* cotisations.payment_methods.comnpay package
* Submodules
* cotisations.payment_methods.comnpay.comnpay module
* cotisations.payment_methods.comnpay.models module
* cotisations.payment_methods.comnpay.urls module
* cotisations.payment_methods.comnpay.views module
* Module contents
* cotisations.payment_methods.free package
* Submodules
* cotisations.payment_methods.free.models module
* Module contents
* cotisations.payment_methods.note_kfet package
* Submodules
* cotisations.payment_methods.note_kfet.forms module
* cotisations.payment_methods.note_kfet.models module
* cotisations.payment_methods.note_kfet.note module
* cotisations.payment_methods.note_kfet.urls module
* cotisations.payment_methods.note_kfet.views module
* Module contents
## Submodules
## cotisations.payment_methods.forms module
### class cotisations.payment_methods.forms.PaymentMethodForm(\*args, \*\*kwargs)
Bases: `django.forms.forms.Form`
A special form which allows you to add a payment method to a Payment
object.
#### base_fields( = {'payment_method': <django.forms.fields.ChoiceField object>})
#### clean()
A classic clean method, except that it replaces
self.payment_method by the payment method object if one has been
found. Tries to call payment_method.valid_form if it exists.
#### declared_fields( = {'payment_method': <django.forms.fields.ChoiceField object>})
#### property media()
#### save(payment, \*args, \*\*kwargs)
Saves the payment method.
Tries to call payment_method.alter_payment if it exists.
### cotisations.payment_methods.forms.payment_method_factory(payment, \*args, creation=True, \*\*kwargs)
This function finds the right payment method form for a given payment.
If the payment has a payment method, returns a ModelForm of it. Else if
it is the creation of the payment, a PaymentMethodForm.
Else None.
* **Parameters**
* **payment** – The payment
* **\*args** – arguments passed to the form
* **creation** – Should be True if you are creating the payment
* **\*\*kwargs** – passed to the form
* **Returns**
A form or None
## cotisations.payment_methods.mixins module
### class cotisations.payment_methods.mixins.PaymentMethodMixin()
Bases: `object`
A simple mixin to avoid redefining end_payment if you don’t need to
#### end_payment(invoice, request)
Redefine this method in order to get a different ending to the
payment session if you whish.
Must return a HttpResponse-like object.
## cotisations.payment_methods.urls module
## Module contents
# Custom Payment methods
When creating an invoice with a classic payment method, the creation view calls
the end_payment method of the Payment object of the invoice. This method
checks for a payment method associated to the Payment and if nothing is
found, adds a message for payment confirmation and redirects the user towards
their profil page. This is fine for most of the payment method, but you might
want to define custom payment methods. As an example for negociating with an
other server for online payment or updating some fields in your models.
# Defining a custom payment method
To define a custom payment method, you can add a Python module to
cotisations/payment_methods/. This module should be organized like
a Django application.
As an example, if you want to add the payment method foo.
## Basic
The first thing to do is to create a foo Python module with a models.py.
`\`
payment_methods
├── foo
│ ├── __init__.py
│ └── models.py
├── forms.py
├── __init__.py
├── mixins.py
└── urls.py
\``
Then, in models.py you could add a model like this :
```
``
```
```
`
```
python
from django.db import models
from cotisations.models import Paiement
from cotisations.payment_methods.mixins import PaymentMethodMixin
# The PaymentMethodMixin defines the default end_payment
class FooPayment(PaymentMethodMixin, models.Model):
> # This field is required, it is used by Paiement in order to
> # determine if a payment method is associated to it.
> payment = models.OneToOneField(
> > Paiement,
> > on_delete=models.CASCADE,
> > related_name=’payment_method’,
> > editable=False
> )
```
``
```
```
`
```
And in __init__.py :
`\`python
from . import models
NAME = "FOO" # Name displayed when you crate a payment type
PaymentMethod = models.FooPayment # You must define this alias
\``
Then you just have to register your payment method in
payment_methods/__init__.py in the PAYMENT_METHODS list :
```
``
```
\`
from . import … # Some existing imports
from . import foo
PAYMENT_METHODS = [
# Some already registered payment methods…
foo
### ]
And… that’s it, you can use your new payment method after running
makemigrations and migrate.
But this payment method is not really usefull, since it does noting !
## A payment method which does something
You have to redefine the end_payment method. Here is its prototype :
```
``
```
```
`
```
python
def end_payment(self, invoice, request):
> pass
```
``
```
```
`
```
With invoice the invoice being created and request the request which
created it. This method has to return an HttpResponse-like object.
## Additional views
You can add specific urls for your payment method like in any django app. To
register these urls, modify payment_methods/urls.py.
## Alter the Paiement object after creation
You can do that by adding a alter_payment(self, payment)
method to your model.
## Validate the creation field
You may want to perform some additionals verifications on the form
creating the payment. You can do that by adding a valid_form(self, form)
method to your model, where form is an instance of
cotisations.payment_methods.forms.PaymentMethodForm.

107
Code-Documentation/autodoc/cotisations.payment_methods.note_kfet.md

@ -1,107 +0,0 @@
# cotisations.payment_methods.note_kfet package
## Submodules
## cotisations.payment_methods.note_kfet.forms module
### class cotisations.payment_methods.note_kfet.forms.NoteCredentialForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
Bases: `django.forms.forms.Form`
A special form to get credential to connect to a NoteKfet2015 server throught his API
object.
#### base_fields( = {'login': <django.forms.fields.CharField object>, 'password': <django.forms.fields.CharField object>})
#### declared_fields( = {'login': <django.forms.fields.CharField object>, 'password': <django.forms.fields.CharField object>})
#### property media()
## cotisations.payment_methods.note_kfet.models module
### class cotisations.payment_methods.note_kfet.models.NotePayment(\*args, \*\*kwargs)
Bases: `cotisations.payment_methods.mixins.PaymentMethodMixin`, `django.db.models.base.Model`
The model allowing you to pay with NoteKfet2015.
#### exception DoesNotExist()
Bases: `django.core.exceptions.ObjectDoesNotExist`
#### exception MultipleObjectsReturned()
Bases: `django.core.exceptions.MultipleObjectsReturned`
#### end_payment(invoice, request)
Redefine this method in order to get a different ending to the
payment session if you whish.
Must return a HttpResponse-like object.
#### id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### id_note()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### objects( = <django.db.models.manager.Manager object>)
#### payment()
Accessor to the related object on the forward side of a one-to-one relation.
In the example:
```
class Restaurant(Model):
place = OneToOneField(Place, related_name='restaurant')
```
`restaurant.place` is a `ForwardOneToOneDescriptor` instance.
#### payment_id()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### port()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
#### server()
A wrapper for a deferred-loading field. When the value is read from this
object the first time, the query is executed.
## cotisations.payment_methods.note_kfet.note module
Module pour dialoguer avec la NoteKfet2015
### cotisations.payment_methods.note_kfet.note.connect(server, port)
### cotisations.payment_methods.note_kfet.note.don(sock, montant, id_note, facture)
Faire faire un don à l’id_note
### cotisations.payment_methods.note_kfet.note.get_response(socket)
### cotisations.payment_methods.note_kfet.note.login(server, port, username, password, masque=[[], [], True])
## cotisations.payment_methods.note_kfet.urls module
## cotisations.payment_methods.note_kfet.views module
Payment
Here are the views needed by comnpay
## Module contents
This module contains a method to pay online using comnpay.

25
Code-Documentation/autodoc/deployments.md

@ -1,25 +0,0 @@
# deployments package
## Submodules
## deployments.admin module
## deployments.apps module
### class deployments.apps.DeploymentsConfig(app_name, app_module)
Bases: `django.apps.config.AppConfig`
#### name( = 'deployments')
## deployments.forms module
## deployments.models module
## deployments.tests module
## deployments.urls module
## deployments.views module
## Module contents

27
Code-Documentation/autodoc/deployments.migrations.md

@ -1,27 +0,0 @@
# deployments.migrations package
## Submodules
## deployments.migrations.0001_initial module
### class deployments.migrations.0001_initial.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0106_auto_20191120_0159'), ('contenttypes', '0002_remove_content_type_name')])
#### initial( = True)
#### operations( = [<CreateModel name='Deployment', fields=[('id', <django.db.models.fields.AutoField>), ('machine', <django.db.models.fields.related.ForeignKey>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='Parameter', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('_value', <django.db.models.fields.TextField>), ('object_id', <django.db.models.fields.PositiveIntegerField>), ('update_required', <django.db.models.fields.BooleanField>), ('content_type', <django.db.models.fields.related.ForeignKey>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='ParameterType', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('value', <django.db.models.fields.CharField>), ('default_value', <django.db.models.fields.TextField>), ('dynamic_field', <django.db.models.fields.CharField>), ('content_type', <django.db.models.fields.related.ForeignKey>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='Preference', fields=[('id', <django.db.models.fields.AutoField>), ('compagnon_url', <django.db.models.fields.URLField>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='Recipe', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('description', <django.db.models.fields.TextField>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <AddField model_name='parametertype', name='recipe', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='parameter', name='type', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='deployment', name='recipe', field=<django.db.models.fields.related.ForeignKey>>])
## deployments.migrations.0002_auto_20200418_2016 module
### class deployments.migrations.0002_auto_20200418_2016.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('deployments', '0001_initial')])
#### operations( = [<CreateModel name='Preferences', fields=[('id', <django.db.models.fields.AutoField>), ('compagnon_url', <django.db.models.fields.URLField>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <DeleteModel name='Preference'>])
## Module contents

364
Code-Documentation/autodoc/logs.md

@ -1,364 +0,0 @@
# logs package
## Subpackages
* logs.templatetags package
* Submodules
* logs.templatetags.logs_extra module
* Module contents
## Submodules
## logs.acl module
logs.acl
Here are defined some functions to check acl on the application.
### logs.acl.can_view(user)
Check if an user can view the application.
* **Parameters**
**user** – The user who wants to view the application.
* **Returns**
A couple (allowed, msg) where allowed is a boolean which is True if
viewing is granted and msg is a message (can be None).
## logs.forms module
The forms used by the machine search view
### class logs.forms.ActionsSearchForm(\*args, \*\*kwargs)
Bases: `django.forms.forms.Form`
The form for a simple search
#### base_fields( = {'e': <django.forms.fields.DateField object>, 's': <django.forms.fields.DateField object>, 't': <django.forms.fields.MultipleChoiceField object>, 'u': <django.forms.models.ModelChoiceField object>})
#### declared_fields( = {'e': <django.forms.fields.DateField object>, 's': <django.forms.fields.DateField object>, 't': <django.forms.fields.MultipleChoiceField object>, 'u': <django.forms.models.ModelChoiceField object>})
#### property media()
### class logs.forms.MachineHistorySearchForm(\*args, \*\*kwargs)
Bases: `django.forms.forms.Form`
The form for a simple search
#### base_fields( = {'e': <django.forms.fields.DateField object>, 'q': <django.forms.fields.CharField object>, 's': <django.forms.fields.DateField object>, 't': <django.forms.fields.CharField object>})
#### declared_fields( = {'e': <django.forms.fields.DateField object>, 'q': <django.forms.fields.CharField object>, 's': <django.forms.fields.DateField object>, 't': <django.forms.fields.CharField object>})
#### property media()
### logs.forms.all_classes(module)
### logs.forms.classes_for_action_type(action_type)
Return the list of class names to be displayed for a
given actions type filter
## logs.models module
logs.models
The models definitions for the logs app
### class logs.models.ActionsSearch()
Bases: `object`
#### get(params)
* **Parameters**
**params** – dict built by the search view
* **Returns**
QuerySet of Revision objects
#### models_for_action_types(action_types)
### class logs.models.History()
Bases: `object`
#### get(instance_id, model)
* **Parameters**
* **instance_id** – int, The id of the instance to lookup
* **model** – class, The type of object to lookup
* **Returns**
list or None, a list of HistoryEvent, in reverse chronological order
### class logs.models.HistoryEvent(version, previous_version=None, edited_fields=None)
Bases: `object`
#### edits(hide=[])
Build a list of the changes performed during this event
:param hide: list, the list of fields for which not to show details
:return: str
### class logs.models.InterfaceHistory()
Bases: `logs.models.History`
#### get(interface_id, model)
* **Parameters**
* **instance_id** – int, The id of the instance to lookup
* **model** – class, The type of object to lookup
* **Returns**
list or None, a list of HistoryEvent, in reverse chronological order
### class logs.models.InterfaceHistoryEvent(version, previous_version=None, edited_fields=None)
Bases: `logs.models.HistoryEvent`
### class logs.models.MachineHistory()
Bases: `logs.models.History`
#### get(machine_id, model)
* **Parameters**
* **instance_id** – int, The id of the instance to lookup
* **model** – class, The type of object to lookup
* **Returns**
list or None, a list of HistoryEvent, in reverse chronological order
### class logs.models.MachineHistoryEvent(version, previous_version=None, edited_fields=None)
Bases: `logs.models.HistoryEvent`
### class logs.models.MachineHistorySearch()
Bases: `object`
#### get(search, params)
* **Parameters**
* **search** – ip or mac to lookup
* **params** – dict built by the search view
* **Returns**
list or None, a list of MachineHistorySearchEvent in reverse chronological order
### class logs.models.MachineHistorySearchEvent(user, machine, interface, start=None, end=None)
Bases: `object`
#### is_similar(elt2)
Checks whether two events are similar enough to be merged
:return: bool
### class logs.models.RelatedHistory(version)
Bases: `object`
### class logs.models.RevisionAction(revision)
Bases: `object`
A Revision may group multiple Version objects together
#### comment()
#### date_created()
#### id()
### class logs.models.UserHistory()
Bases: `logs.models.History`
#### get(user_id, model)
* **Parameters**
**user_id** – int, the id of the user to lookup
* **Returns**
list or None, a list of UserHistoryEvent, in reverse chronological order
### class logs.models.UserHistoryEvent(version, previous_version=None, edited_fields=None)
Bases: `logs.models.HistoryEvent`
#### edits(hide=['password', 'pwd_ntlm', 'gpg_fingerprint'])
Build a list of the changes performed during this event
:param hide: list, the list of fields for which not to show details
:return: str
### class logs.models.VersionAction(version)
Bases: `logs.models.HistoryEvent`
#### application()
#### edits(hide=['password', 'pwd_ntlm', 'gpg_fingerprint'])
Build a list of the changes performed during this event
:param hide: list, the list of fields for which not to show details
:return: str
#### model_name()
#### name()
#### object_id()
#### object_type()
### logs.models.get_history_class(model)
Find the mos appropriate History subclass to represent
the given model’s history
:model: class
### logs.models.make_version_filter(key, value)
Builds a filter for a Version object to filter by argument in its
serialized_date
:param key: str, The argument’s key
:param value: str or int, The argument’s value
:returns: A Q filter
## logs.tests module
logs.tests
The tests for the Logs module.
## logs.urls module
Urls de l’application logs, pointe vers les fonctions de views.
Inclu dans le re2o.urls
## logs.views module
Vues des logs et statistiques générales.
La vue index générale affiche une selection des dernières actions,
classées selon l’importance, avec date, et user formatés.
Stats_logs renvoie l’ensemble des logs.
Les autres vues sont thématiques, ensemble des statistiques et du
nombre d’objets par models, nombre d’actions par user, etc
### logs.views.get_history_object(request, model, object_name, object_id)
Get the objet of type model with the given object_id
Handles permissions and DoesNotExist errors
### logs.views.history(request, application, object_name, object_id)
Render history for a model.
The model is determined using the HISTORY_BIND dictionnary if none is
found, raises a Http404. The view checks if the user is allowed to see the
history using the can_view method of the model, or the generic
can_view_app(“logs”) for deleted objects (see get_history_object).
* **Parameters**
* **request** – The request sent by the user.
* **application** – Name of the application.
* **object_name** – Name of the model.
* **object_id** – Id of the object you want to acces history.
* **Returns**
The rendered page of history if access is granted, else the user is
redirected to their profile page, with an error message.
* **Raises**
**Http404** – This kind of models doesn’t have history.
## Module contents
logs
The app in charge of the stats and logs of what’s happening in re2o

36
Code-Documentation/autodoc/logs.templatetags.md

@ -1,36 +0,0 @@
# logs.templatetags package
## Submodules
## logs.templatetags.logs_extra module
logs.templatetags.logs_extra
A templatetag to get the class name for a given object
### logs.templatetags.logs_extra.classname(obj)
Returns the object class name
### logs.templatetags.logs_extra.history_button(instance, text=False, html_class=True)
Creates the correct history button for an instance.
* **Parameters**
* **instance** – The instance of which you want to get history buttons.
* **text** – Flag stating if a ‘History’ text should be displayed.
* **html_class** – Flag stating if the link should have the html classes
allowing it to be displayed as a button.
### logs.templatetags.logs_extra.is_facture(baseinvoice)
Returns True if a baseinvoice has a Facture child.
## Module contents

1260
Code-Documentation/autodoc/machines.api.md

File diff suppressed because it is too large

3924
Code-Documentation/autodoc/machines.md

File diff suppressed because it is too large

1087
Code-Documentation/autodoc/machines.migrations.md

File diff suppressed because one or more lines are too long

1
Code-Documentation/autodoc/manage.md

@ -1 +0,0 @@
# manage module

13
Code-Documentation/autodoc/manager.md

@ -1,13 +0,0 @@
# manager package
## Submodules
## manager.defaults module
## manager.logger module
## manager.requirements module
## Module contents
This is a module to manage Re2o

1936
Code-Documentation/autodoc/modules.md

File diff suppressed because it is too large

40
Code-Documentation/autodoc/multi_op.md

@ -1,40 +0,0 @@
# multi_op package
## Submodules
## multi_op.apps module
The database models for the ‘apps’ app of re2o.
For further details on each of those models, see the documentation details for
each.
### class multi_op.apps.MultiOpConfig(app_name, app_module)
Bases: `django.apps.config.AppConfig`
#### name( = 'multi_op')
## multi_op.forms module
Select a dorm
### class multi_op.forms.DormitoryForm(\*args, \*\*kwargs)
Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form`
Select a dorm
#### base_fields( = {'dormitory': <django.forms.models.ModelMultipleChoiceField object>})
#### declared_fields( = {'dormitory': <django.forms.models.ModelMultipleChoiceField object>})
#### property media()
## multi_op.tests module
## multi_op.urls module
## multi_op.views module
## Module contents

355
Code-Documentation/autodoc/preferences.api.md

@ -1,355 +0,0 @@
# preferences.api package
## Submodules
## preferences.api.serializers module
### class preferences.api.serializers.AssoOptionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.AssoOption objects.
#### class Meta()
Bases: `object`
#### fields( = ('name', 'siret', 'adresse1', 'adresse2', 'contact', 'telephone', 'pseudo', 'utilisateur_asso', 'description'))
#### model()
alias of `preferences.models.AssoOption`
### class preferences.api.serializers.GeneralOptionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.GeneralOption objects.
#### class Meta()
Bases: `object`
#### fields( = ('general_message_fr', 'general_message_en', 'search_display_page', 'pagination_number', 'pagination_large_number', 'req_expire_hrs', 'site_name', 'main_site_url', 'email_from', 'GTU_sum_up', 'GTU'))
#### model()
alias of `preferences.models.GeneralOption`
### class preferences.api.serializers.HomeOptionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.HomeOption objects.
#### class Meta()
Bases: `object`
#### fields( = ('facebook_url', 'twitter_url', 'twitter_account_name'))
#### model()
alias of `preferences.models.HomeOption`
### class preferences.api.serializers.HomeServiceSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.Service objects.
#### class Meta()
Bases: `object`
#### extra_kwargs( = {'api_url': {'view_name': 'homeservice-detail'}})
#### fields( = ('name', 'url', 'description', 'image', 'api_url'))
#### model()
alias of `preferences.models.Service`
### class preferences.api.serializers.MailMessageOptionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.MailMessageOption objects.
#### class Meta()
Bases: `object`
#### fields( = ('welcome_mail_fr', 'welcome_mail_en'))
#### model()
alias of `preferences.models.MailMessageOption`
### class preferences.api.serializers.OptionalMachineSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.OptionalMachine objects.
#### class Meta()
Bases: `object`
#### fields( = ('password_machine', 'max_lambdauser_interfaces', 'max_lambdauser_aliases', 'ipv6_mode', 'create_machine', 'ipv6', 'default_dns_ttl'))
#### model()
alias of `preferences.models.OptionalMachine`
### class preferences.api.serializers.OptionalTopologieSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.OptionalTopologie objects.
#### class Meta()
Bases: `object`
#### fields( = ('switchs_ip_type', 'switchs_web_management', 'switchs_web_management_ssl', 'switchs_rest_management', 'switchs_management_utils', 'switchs_management_interface_ip', 'provision_switchs_enabled', 'switchs_provision', 'switchs_management_sftp_creds'))
#### model()
alias of `preferences.models.OptionalTopologie`
### class preferences.api.serializers.OptionalUserSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.OptionalUser objects.
#### class Meta()
Bases: `object`
#### fields( = ('tel_mandatory', 'gpg_fingerprint', 'all_can_create_club', 'self_adhesion', 'shell_default', 'self_change_shell', 'local_email_accounts_enabled', 'local_email_domain', 'max_email_address'))
#### model()
alias of `preferences.models.OptionalUser`
### class preferences.api.serializers.RadiusOptionSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize preferences.models.RadiusOption objects
#### class Meta()
Bases: `object`
#### fields( = ('radius_general_policy', 'unknown_machine', 'unknown_machine_vlan', 'unknown_port', 'unknown_port_vlan', 'unknown_room', 'unknown_room_vlan', 'non_member', 'non_member_vlan', 'banned', 'banned_vlan', 'vlan_decision_ok'))
#### model()
alias of `preferences.models.RadiusOption`
## preferences.api.urls module
## preferences.api.views module
### class preferences.api.views.AssoOptionView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.AssoOption settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.AssoOption'>>]})
#### serializer_class()
alias of `preferences.api.serializers.AssoOptionSerializer`
### class preferences.api.views.GeneralOptionView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.GeneralOption settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.GeneralOption'>>]})
#### serializer_class()
alias of `preferences.api.serializers.GeneralOptionSerializer`
### class preferences.api.views.HomeOptionView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.HomeOption settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.HomeOption'>>]})
#### serializer_class()
alias of `preferences.api.serializers.HomeOptionSerializer`
### class preferences.api.views.HomeServiceViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of preferences.models.Service objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `preferences.api.serializers.HomeServiceSerializer`
#### suffix( = None)
### class preferences.api.views.MailMessageOptionView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.MailMessageOption settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.MailMessageOption'>>]})
#### serializer_class()
alias of `preferences.api.serializers.MailMessageOptionSerializer`
### class preferences.api.views.OptionalMachineView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.OptionalMachine settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.OptionalMachine'>>]})
#### serializer_class()
alias of `preferences.api.serializers.OptionalMachineSerializer`
### class preferences.api.views.OptionalTopologieView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.OptionalTopologie settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.OptionalTopologie'>>]})
#### serializer_class()
alias of `preferences.api.serializers.OptionalTopologieSerializer`
### class preferences.api.views.OptionalUserView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models. settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.OptionalUser'>>]})
#### serializer_class()
alias of `preferences.api.serializers.OptionalUserSerializer`
### class preferences.api.views.RadiusOptionView(\*\*kwargs)
Bases: `rest_framework.generics.RetrieveAPIView`
Exposes details of preferences.models.OptionalTopologie settings.
#### get_object()
Returns the object the view is displaying.
You may want to override this if you need to provide non-standard
queryset lookups. Eg if objects are referenced using multiple
keyword arguments in the url conf.
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<bound method AclMixin.can_view_all of <class 'preferences.models.RadiusOption'>>]})
#### serializer_class()
alias of `preferences.api.serializers.RadiusOptionSerializer`
## Module contents

2117
Code-Documentation/autodoc/preferences.md

File diff suppressed because it is too large

855
Code-Documentation/autodoc/preferences.migrations.md

File diff suppressed because one or more lines are too long

3
Code-Documentation/autodoc/preferences.templatetags.md

@ -1,3 +0,0 @@
# preferences.templatetags package
## Module contents

23
Code-Documentation/autodoc/re2o.management.commands.md

@ -1,23 +0,0 @@
# re2o.management.commands package
## Submodules
## re2o.management.commands.gen_contrib module
Write in a python file the list of all contributors sorted by number of
commits. This list is extracted from the current gitlab repository.
### class re2o.management.commands.gen_contrib.Command(stdout=None, stderr=None, no_color=False)
Bases: `django.core.management.base.BaseCommand`
The command object for gen_contrib
#### handle(\*args, \*\*options)
The actual logic of the command. Subclasses must implement
this method.
#### help( = 'Update contributors list')
## Module contents

18
Code-Documentation/autodoc/re2o.management.md

@ -1,18 +0,0 @@
# re2o.management package
## Subpackages
* re2o.management.commands package
* Submodules
* re2o.management.commands.gen_contrib module
* Module contents
## Module contents

989
Code-Documentation/autodoc/re2o.md

@ -1,989 +0,0 @@
# re2o package
## Subpackages
* re2o.management package
* Subpackages
* re2o.management.commands package
* Submodules
* re2o.management.commands.gen_contrib module
* Module contents
* Module contents
* re2o.templatetags package
* Submodules
* re2o.templatetags.acl module
* re2o.templatetags.design module
* re2o.templatetags.massive_bootstrap_form module
* re2o.templatetags.pagination_extra module
* re2o.templatetags.self_adhesion module
* re2o.templatetags.url_insert_param module
* Module contents
## Submodules
## re2o.acl module
Handles ACL for re2o.
Here are defined some decorators that can be used in views to handle ACL.
### re2o.acl.acl_base_decorator(method_name, \*targets, on_instance=True)
Base decorator for acl. It checks if the request.user has the
permission by calling model.method_name. If the flag on_instance is True,
tries to get an instance of the model by calling
model.get_instance(\*args, \*\*kwargs) and runs instance.mehod_name
rather than model.method_name.
It is not intended to be used as is. It is a base for others ACL
decorators.
* **Parameters**
* **method_name** – The name of the method which is to to be used for ACL.
(ex: ‘can_edit’) WARNING: if no method called ‘method_name’ exists,
then no error will be triggered, the decorator will act as if
permission was granted. This is to allow you to run ACL tests on
fields only. If the method exists, it has to return a 2-tuple
(can, reason, permissions) with can being a boolean stating
whether the access is granted, reason an arror message to be
displayed if can equals False (can be None) and permissions
a list of permissions needed for access (can be None). If can is
True and permission is not None, a warning message will be
displayed.
* **\*targets** – The targets. Targets are specified like a sequence of models
and fields names. As an example
```
``
```
```
`
```
> acl_base_decorator(‘can_edit’, ModelA, ‘field1’, ‘field2’, ModelB, ModelC, ‘field3’, on_instance=False)
```
``
```
\`
will make the following calls (where user is the current user,
\*args and \*\*kwargs are the arguments initially passed to the
view):
>
> * ModelA.can_edit(user, \*args, \*\*kwargs)
> * ModelA.can_change_field1(user, \*args, \*\*kwargs)
> * ModelA.can_change_field2(user, \*args, \*\*kwargs)
> * ModelB.can_edit(user, \*args, \*\*kwargs)
> * ModelC.can_edit(user, \*args, \*\*kwargs)
> * ModelC.can_change_field3(user, \*args, \*\*kwargs)
Note that
```
``
```
```
`
```
> acl_base_decorator(‘can_edit’, ‘field1’, ModelA, ‘field2’, on_instance=False)
`\`
would have the same effect that
\``
> acl_base_decorator(‘can_edit’, ModelA, ‘field1’, ‘field2’, on_instance=False)
```
``
```
\`
But don’t do that, it’s silly.
* **on_instance** – When on_instance equals False, the decorator runs the
ACL method on the model class rather than on an instance. If an
instance need to fetched, it is done calling the assumed existing
method get_instance of the model, with the arguments originally
passed to the view.
* **Returns**
The user is either redirected to their own page with an explanation
message if at least one access is not granted, or to the view. In order
to avoid duplicate DB calls, when the on_instance flag equals True,
the instances are passed to the view. Example, with this decorator:
```
``
```
```
`
```
> acl_base_decorator(‘can_edit’, ModelA, ‘field1’, ‘field2’, ModelB,ModelC)
`\`
The view will be called like this:
\``
> view(request, instance_of_A, instance_of_b,
> ```
> *
> ```
> args,
> ```
> **
> ```
> kwargs)
```
``
```
\`
where \*args and \*\*kwargs are the original view arguments.
### re2o.acl.acl_error_message(msg, permissions)
Create an error message for msg and permissions.
### re2o.acl.can_change(\*targets)
Decorator to check if an user can edit a field of a model class.
Difference with can_edit : takes a class and not an instance
It runs acl_base_decorator with the flag on_instance=False and the
method ‘can_change’. See acl_base_decorator documentation for further
details.
### re2o.acl.can_create(\*models)
Decorator to check if an user can create the given models. It runs
acl_base_decorator with the flag on_instance=False and the method
‘can_create’. See acl_base_decorator documentation for further details.
### re2o.acl.can_delete(\*targets)
Decorator to check if an user can delete a model.
It runs acl_base_decorator with the flag on_instance=True and the
method ‘can_edit’. See acl_base_decorator documentation for further
details.
### re2o.acl.can_delete_set(model)
Decorator which returns a list of detable models by request user.
If none of them, return an error
### re2o.acl.can_edit(\*targets)
Decorator to check if an user can edit the models.
It runs acl_base_decorator with the flag on_instance=True and the
method ‘can_edit’. See acl_base_decorator documentation for further
details.
### re2o.acl.can_edit_history(view)
Decorator to check if an user can edit history.
### re2o.acl.can_view(\*targets)
Decorator to check if an user can view a model.
It runs acl_base_decorator with the flag on_instance=True and the
method ‘can_view’. See acl_base_decorator documentation for further
details.
### re2o.acl.can_view_all(\*targets)
Decorator to check if an user can view a class of model.
It runs acl_base_decorator with the flag on_instance=False and the
method ‘can_view_all’. See acl_base_decorator documentation for further
details.
### re2o.acl.can_view_app(\*apps_name)
Decorator to check if an user can view the applications.
## re2o.aes_field module
Module defining a AESEncryptedField object that can be used in forms
to handle the use of properly encrypting and decrypting AES keys
### class re2o.aes_field.AESEncryptedField(\*args, \*\*kwargs)
Bases: `django.db.models.fields.CharField`
A Field that can be used in forms for adding the support
of AES ecnrypted fields
#### formfield(\*\*kwargs)
Returns a django.forms.Field instance for this database Field.
#### from_db_value(value, \*args, \*\*kwargs)
#### get_prep_value(value)
Perform preliminary non-db specific value checks and conversions.
#### save_form_data(instance, data)
#### to_python(value)
Converts the input value into the expected Python data type, raising
django.core.exceptions.ValidationError if the data can’t be converted.
Returns the converted value. Subclasses should override this.
### class re2o.aes_field.AESEncryptedFormField(max_length=None, min_length=None, strip=True, empty_value='', \*args, \*\*kwargs)
Bases: `django.forms.fields.CharField`
#### widget( = <django.forms.widgets.PasswordInput object>)
### re2o.aes_field.decrypt(key, secret)
AES Decrypt a secret with the key key
### re2o.aes_field.encrypt(key, secret)
AES Encrypt a secret with the key key
### re2o.aes_field.genstring(length=16, chars='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\\'()\*+,-./:;<=>?@[\\\\]^_\`{|}~ \\t\\n\\r\\x0b\\x0c')
Generate a random string of length length and composed of
the characters in chars
## re2o.base module
Regroupe les fonctions transversales utiles
Et non corrélées/dépendantes des autres applications
### class re2o.base.SortTable()
Bases: `object`
Class gathering uselful stuff to sort the colums of a table, according
to the column and order requested. It’s used with a dict of possible
values and associated model_fields
#### COTISATIONS_CONTROL( = {'control_control': ['control'], 'control_date': ['date'], 'control_id': ['id'], 'control_name': ['user__adherent__name'], 'control_paiement': ['paiement'], 'control_surname': ['user__surname'], 'control_user-id': ['user__id'], 'control_valid': ['valid'], 'default': ['-date']})
#### COTISATIONS_CUSTOM( = {'default': ['-date'], 'invoice_address': ['address'], 'invoice_date': ['date'], 'invoice_id': ['id'], 'invoice_payment': ['payment'], 'invoice_recipient': ['recipient']})
#### COTISATIONS_INDEX( = {'cotis_date': ['date'], 'cotis_id': ['id'], 'cotis_paiement': ['paiement__moyen'], 'cotis_user': ['user__pseudo'], 'default': ['-date']})
#### LOGS_INDEX( = {'default': ['-revision__date_created'], 'sum_date': ['revision__date_created']})
#### LOGS_STATS_LOGS( = {'default': ['-date_created'], 'logs_author': ['user__name'], 'logs_date': ['date_created']})
#### MACHINES_INDEX( = {'default': ['pk'], 'machine_name': ['name']})
#### TOPOLOGIE_INDEX( = {'default': ['switchbay', 'stack', 'stack_member_id'], 'switch_dns': ['interface__domain__name'], 'switch_ip': ['interface__ipv4__ipv4'], 'switch_loc': ['switchbay__name'], 'switch_ports': ['number'], 'switch_stack': ['stack__name']})
#### TOPOLOGIE_INDEX_BORNE( = {'ap_ip': ['interface__ipv4__ipv4'], 'ap_mac': ['interface__mac_address'], 'ap_name': ['interface__domain__name'], 'default': ['interface__domain__name']})
#### TOPOLOGIE_INDEX_BUILDING( = {'building_name': ['name'], 'default': ['name']})
#### TOPOLOGIE_INDEX_CONSTRUCTOR_SWITCH( = {'constructor-switch_name': ['name'], 'default': ['name']})
#### TOPOLOGIE_INDEX_DORMITORY( = {'default': ['name'], 'dormitory_name': ['name']})
#### TOPOLOGIE_INDEX_MODEL_SWITCH( = {'default': ['reference'], 'model-switch_contructor': ['constructor__name'], 'model-switch_name': ['reference']})
#### TOPOLOGIE_INDEX_PORT( = {'default': ['port'], 'port_interface': ['machine_interface__domain__name'], 'port_port': ['port'], 'port_radius': ['radius'], 'port_related': ['related__switch__name'], 'port_room': ['room__name'], 'port_vlan': ['vlan_force__name']})
#### TOPOLOGIE_INDEX_ROOM( = {'building_name': ['building__name'], 'default': ['building__name', 'name'], 'room_name': ['name']})
#### TOPOLOGIE_INDEX_STACK( = {'default': ['stack_id'], 'stack_id': ['stack_id'], 'stack_name': ['name']})
#### TOPOLOGIE_INDEX_SWITCH_BAY( = {'default': ['name'], 'switch-bay_building': ['building__name'], 'switch-bay_name': ['name']})
#### USERS_INDEX( = {'default': ['state', 'pseudo'], 'user_name': ['name'], 'user_pseudo': ['pseudo'], 'user_room': ['room'], 'user_surname': ['surname']})
#### USERS_INDEX_BAN( = {'ban_end': ['date_end'], 'ban_start': ['date_start'], 'ban_user': ['user__pseudo'], 'default': ['-date_end']})
#### USERS_INDEX_SCHOOL( = {'default': ['name'], 'school_name': ['name']})
#### USERS_INDEX_WHITE( = {'default': ['-date_end'], 'white_end': ['date_end'], 'white_start': ['date_start'], 'white_user': ['user__pseudo']})
#### static sort(request, col, order, values)
Check if the given values are possible and add .order_by() and
a .reverse() as specified according to those values
### re2o.base.convert_datetime_format(format)
### re2o.base.get_input_formats_help_text(input_formats)
Returns a help text about the possible input formats
### re2o.base.re2o_paginator(request, query_set, pagination_number, page_arg='page')
Paginator script for list display in re2o.
:request:
:query_set: Query_set to paginate
:pagination_number: Number of entries to display
### re2o.base.smtp_check(local_part)
Return True if the local_part is already taken
False if available
## re2o.context_processors module
Fonction de context, variables renvoyées à toutes les vues
### re2o.context_processors.context_optionnal_apps(request)
Fonction de context pour générer la navbar en fonction des
apps optionnels
### re2o.context_processors.context_user(request)
Fonction de context lorsqu’un user est logué (ou non),
renvoie les infos sur l’user, la liste de ses droits, ses machines
### re2o.context_processors.date_now(request)
Add the current date in the context for quick informations and
comparisons
## re2o.contributors module
re2o.contributors
A list of the proud contributors to Re2o
## re2o.field_permissions module
re2o.field_permissions
A model mixin and a field mixin used to remove some unauthorized fields
from the form automatically generated from the model. The model must
subclass FieldPermissionModelMixin and the form must subclass
FieldPermissionFieldMixin so when a Django form is generated from the
fields of the models, some fields will be removed if the user don’t have
the rights to change them (can_change_{name})
### class re2o.field_permissions.FieldPermissionFormMixin(\*args, \*\*kwargs)
Bases: `object`
Construit le formulaire et retire les champs interdits
#### remove_unauthorized_field(name)
Remove one field from the fields of the form
### class re2o.field_permissions.FieldPermissionModelMixin()
Bases: `object`
The model mixin. Defines the has_field_perm function
#### FIELD_PERMISSION_GETTER( = 'can_change_{name}')
#### FIELD_PERMISSION_MISSING_DEFAULT( = True)
#### FIELD_PERM_CODENAME( = 'can_change_{model}_{name}')
#### field_permissions( = {})
#### has_field_perm(user, field)
Checks if a user has the right to edit the field
of this model
## re2o.login module
re2o.login
Module in charge of handling the login process and verifications
### class re2o.login.CryptPasswordHasher()
Bases: `django.contrib.auth.hashers.BasePasswordHasher`
Crypt password hashing to allow for LDAP auth compatibility
We do not encode, this should bot be used !
The actual implementation may depend on the OS.
#### algorithm( = '{crypt}')
#### encode(password, salt)
Creates an encoded database value
The result is normally formatted as “algorithm$salt$hash” and
must be fewer than 128 characters.
#### harden_runtime(password, encoded)
Method implemented to shut up BasePasswordHasher warning
As we are not using multiple iterations the method is pretty useless
#### safe_summary(encoded)
Provides a safe summary of the password
#### verify(password, encoded)
Check password against encoded using CRYPT algorithm
### class re2o.login.MD5PasswordHasher()
Bases: `django.contrib.auth.hashers.BasePasswordHasher`
Salted MD5 password hashing to allow for LDAP auth compatibility
We do not encode, this should bot be used !
#### algorithm( = '{SMD5}')
#### encode(password, salt)
Creates an encoded database value
The result is normally formatted as “algorithm$salt$hash” and
must be fewer than 128 characters.
#### harden_runtime(password, encoded)
Method implemented to shut up BasePasswordHasher warning
As we are not using multiple iterations the method is pretty useless
#### safe_summary(encoded)
Provides a safe summary of the password
#### verify(password, encoded)
Check password against encoded using SMD5 algorithm
### class re2o.login.RecryptBackend()
Bases: `django.contrib.auth.backends.ModelBackend`
#### authenticate(username=None, password=None)
### class re2o.login.SSHAPasswordHasher()
Bases: `django.contrib.auth.hashers.BasePasswordHasher`
Salted SHA-1 password hashing to allow for LDAP auth compatibility
#### algorithm( = '{SSHA}')
#### encode(password, salt)
Hash and salt the given password using SSHA algorithm
salt is overridden
#### harden_runtime(password, encoded)
Method implemented to shut up BasePasswordHasher warning
As we are not using multiple iterations the method is pretty useless
#### safe_summary(encoded)
Provides a safe summary of the password
#### verify(password, encoded)
Check password against encoded using SSHA algorithm
### re2o.login.checkPassword(challenge_password, password)
Check if a given password match the hash of a stored password
### re2o.login.hashNT(password)
Build a md4 hash of the password to use as the NT-password
### re2o.login.hash_password_salt(hashed_password)
Extract the salt from a given hashed password
### re2o.login.makeSecret(password)
Build a hashed and salted version of the password
## re2o.mail_utils module
Regroupe les fonctions en lien avec les mails
### re2o.mail_utils.send_mail(request, \*args, \*\*kwargs)
Wrapper for Django’s send_mail which handles errors
### re2o.mail_utils.send_mail_object(mail, request)
Wrapper for Django’s EmailMessage.send which handles errors
## re2o.middleware module
Defines the middlewares used in all apps of re2o.
### re2o.middleware.show_debug_toolbar(request)
Middleware to determine wether to show the toolbar.
Compared to django-debug-toolbar’s default, add the possibility to allow
any IP to see the debug panel by not setting the INTERNAL_IPS options
* **Parameters**
**requests** – The request object that must be checked.
* **Returns**
The boolean indicating if the debug toolbar should be shown.
## re2o.mixins module
re2o.mixins
A set of mixins used all over the project to avoid duplicating code
### class re2o.mixins.AclMixin()
Bases: `object`
This mixin is used in nearly every class/models defined in re2o apps.
It is used by acl, in models (decorators
```
can_
```
…) and in templates tags
:get_instance: Applied on a class, take an id argument, return an instance
:can_create: Applied on a class, take the requested user, return if the
> user can do the creation
* **Can_edit**
Applied on an instance, return if the user can edit the
instance
* **Can_delete**
Applied on an instance, return if the user can delete the
instance
* **Can_view**
Applied on an instance, return if the user can view the
instance
* **Can_view_all**
Applied on a class, return if the user can view all
instances
#### classmethod can_create(user_request, \*_args, \*\*_kwargs)
Verifie que l’user a les bons droits pour créer
un object
:param user_request: instance utilisateur qui fait la requête
:return: soit True, soit False avec la raison de l’échec
#### can_delete(user_request, \*_args, \*\*_kwargs)
Verifie que l’user a les bons droits pour delete
cette instance
:param self: Instance à delete
:param user_request: Utilisateur qui fait la requête
:return: soit True, soit False avec la raison de l’échec
#### can_edit(user_request, \*_args, \*\*_kwargs)
Verifie que l’user a les bons droits pour editer
cette instance
:param self: Instance à editer
:param user_request: Utilisateur qui fait la requête
:return: soit True, soit False avec la raison de l’échec
#### can_view(user_request, \*_args, \*\*_kwargs)
Vérifie qu’on peut bien voir cette instance particulière avec
droit view objet
:param self: instance à voir
:param user_request: instance user qui fait l’edition
:return: True ou False avec la raison de l’échec le cas échéant
#### classmethod can_view_all(user_request, \*_args, \*\*_kwargs)
Vérifie qu’on peut bien afficher l’ensemble des objets,
droit particulier view objet correspondant
:param user_request: instance user qui fait l’edition
:return: True ou False avec la raison de l’échec le cas échéant
#### classmethod get_classname()
Returns the name of the class where this mixin is used
#### classmethod get_instance(object_id, \*_args, \*\*kwargs)
Récupère une instance
:return: Une instance de la classe évidemment
#### classmethod get_modulename()
Returns the name of the module where this mixin is used
### class re2o.mixins.FormRevMixin()
Bases: `object`
A mixin to subclass the save function of a form
to enforce the versionning of the object before it is really edited
#### save(\*args, \*\*kwargs)
Create a version of this object and save it to database
### class re2o.mixins.RevMixin()
Bases: `object`
A mixin to subclass the save and delete function of a model
to enforce the versioning of the object before those actions
really happen
#### delete(\*args, \*\*kwargs)
Creates a version of this object and delete it from database
#### save(\*args, \*\*kwargs)
Creates a version of this object and save it to database
## re2o.script_utils module
re2o.script_utils
A set of utility scripts that can be used as standalone to interact easily
with Re2o throught the CLI
### re2o.script_utils.form_cli(Form, user, action, \*args, \*\*kwargs)
Remplit un formulaire à partir de la ligne de commande
Form : le formulaire (sous forme de classe) à remplir
user : l’utilisateur re2o faisant la modification
action : l’action réalisée par le formulaire (pour les logs)
Les arguments suivants sont transmis tels quels au formulaire.
### re2o.script_utils.get_system_user()
Retourne l’utilisateur système ayant lancé la commande
### re2o.script_utils.get_user(pseudo)
Cherche un utilisateur re2o à partir de son pseudo
## re2o.settings module
Django settings for re2o project.
Generated by ‘django-admin startproject’ using Django 1.8.13.
For more information on this file, see
[https://docs.djangoproject.com/en/1.8/topics/settings/](https://docs.djangoproject.com/en/1.8/topics/settings/)
For the full list of settings and their values, see
[https://docs.djangoproject.com/en/1.8/ref/settings/](https://docs.djangoproject.com/en/1.8/ref/settings/)
## re2o.settings_local module
re2o.settings_locale
The file with all the available options for a locale configuration of re2o
## re2o.settings_local module
re2o.settings_locale
The file with all the available options for a locale configuration of re2o
## re2o.urls module
re2o URL Configuration
The urlpatterns list routes URLs to views. For more information please see:
[https://docs.djangoproject.com/en/1.8/topics/http/urls/](https://docs.djangoproject.com/en/1.8/topics/http/urls/)
Examples:
Function views
>
> 1. Add an import: from my_app import views
> 2. Add a URL to urlpatterns: url(r’^$’, views.home)
> 3. Optional: Add a custom name for this URL:
> url(r’^$’, views.home, name=’home’)
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: url(r’^$’, Home.as_view())
3. Optional: Add a custom name for this URL:
url(r’^$’, Home.as_view(), name=’home’)
Including another URLconf
1. Add a URL to urlpatterns: url(r’^blog/’, include(‘blog.urls’))
2. Optional: Add a custom namespace for all URL using this urlpatterns:
url(r’^blog/’, include(‘blog.urls’), namespace=’blog’)
## re2o.utils module
Regroupe les fonctions transversales utiles
Fonction :
* récupérer tous les utilisateurs actifs
* récupérer toutes les machines
* récupérer tous les bans
etc
### re2o.utils.all_active_assigned_interfaces(full=False)
Renvoie l’ensemble des machines qui ont une ipv4 assignées et
disposant de l’accès internet
### re2o.utils.all_active_assigned_interfaces_count()
Version light seulement pour compter
### re2o.utils.all_active_interfaces(full=False)
Renvoie l’ensemble des machines autorisées à sortir sur internet
### re2o.utils.all_active_interfaces_count()
Version light seulement pour compter
### re2o.utils.all_adherent(search_time=None, including_asso=True)
Fonction renvoyant tous les users adherents. Optimisee pour n’est
qu’une seule requete sql
Inspecte les factures de l’user et ses cotisation, regarde si elles
sont posterieur à now (end_time)
### re2o.utils.all_baned(search_time=None)
Fonction renvoyant tous les users bannis
### re2o.utils.all_has_access(search_time=None, including_asso=True)
Return all connected users : active users and whitelisted +
asso_user defined in AssoOption pannel
—-
Renvoie tous les users beneficiant d’une connexion
: user adherent et whiteliste non banni plus l’utilisateur asso
### re2o.utils.all_whitelisted(search_time=None)
Fonction renvoyant tous les users whitelistes
### re2o.utils.filter_active_interfaces(interface_set)
Filtre les machines autorisées à sortir sur internet dans une requête
### re2o.utils.filter_complete_interfaces(interface_set)
Appel la fonction précédente avec un prefetch_related ipv6 en plus
### re2o.utils.get_group_having_permission(\*permission_name)
Returns every group having the permission permission_name
### re2o.utils.permission_tree(queryset=None)
### re2o.utils.remove_user_room(room, force=True)
Déménage de force l’ancien locataire de la chambre
## re2o.views module
Fonctions de la page d’accueil et diverses fonctions utiles pour tous
les views
### re2o.views.about_page(request)
The view for the about page.
Fetch some info about the configuration of the project. If it can’t
get the info from the Git repository, fallback to default string
### re2o.views.contact_page(request)
The view for the contact page
Send all the objects MailContact
### re2o.views.form(ctx, template, request)
Form générique, raccourci importé par les fonctions views du site
### re2o.views.handler404(request)
The handler view for a 404 error
### re2o.views.handler500(request)
The handler view for a 500 error
### re2o.views.index(request)
Affiche la liste des services sur la page d’accueil de re2o
## re2o.wsgi module
WSGI config for re2o project.
It exposes the WSGI callable as a module-level variable named `application`.
For more information on this file, see
[https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/](https://docs.djangoproject.com/en/1.8/howto/deployment/wsgi/)
## Module contents
re2o
The main app of Re2o. In charge of all the basics elements which are not
specific to anyother apps. It includes :
>
> * Templates used in multiple places
> * Templatetags used in multiple places
> * ACL base
> * Mixins base
> * Settings for the Django project
> * The login part
> * Some utility scripts
> * …

582
Code-Documentation/autodoc/re2o.templatetags.md

@ -1,582 +0,0 @@
# re2o.templatetags package
## Submodules
## re2o.templatetags.acl module
Set of templatetags for using acl in templates:
* can_create (model)
* cannot_create (model)
* can_edit (instance)
* cannot_edit (instance)
Some templatetags require a model to calculate the acl while others are need
an instance of a model (either Model.can_xxx or instance.can_xxx)
**Parameters**:
model_name or instance - Either the model_name (if templatetag is based on
model) or an instantiated object (if templatetag is base on instance)
that needs to be checked for the current user
args - Any other argument that is interpreted as a python object and passed
to the acl function (can_xxx)
**Usage**:
{% <acl_name> <obj> [arg1 [arg2 […]]]%}
<template stuff>
[{% acl_else %}
<template stuff>]
{% acl_end %}
where <acl_name> is one of the templatetag names available
(can_xxx or cannot_xxx)
**Example**:
{% can_create Machine targeted_user %}
<p>I’m authorized to create new machines.models.for this guy o/</p>
{% acl_else %}
<p>Why can’t I create a little machine for this guy ? :(</p>
{% acl_end %}
{% can_edit user %}
<p>Oh I can edit myself oO</p>
{% acl_else %}
<p>Sniff can’t edit my own infos …</p>
{% acl_end %}
**How to modify**:
To add a new acl function (can_xxx or cannot_xxx),
- if it’s based on a model (like can_create), add an entry in
> ‘get_callback’ and register your tag with the other ones juste before
> ‘acl_model_generic’ definition
* if it’s bases on an instance (like can_edit), just register yout tag with
the other ones juste before ‘acl_instance_generic’ definition
To add support for a new model, add an entry in ‘get_model’ and be sure
the acl function exists in the model definition
### class re2o.templatetags.acl.AclInstanceNode(tag_name, instance_name, oknodes, konodes, \*args)
Bases: `django.template.base.Node`
A node for the compiled ACL block when acl is based on instance
#### render(context)
Return the node rendered as a string.
### class re2o.templatetags.acl.AclNode(tag_name, callback, oknodes, konodes, \*args)
Bases: `django.template.base.Node`
A node for the compiled ACL block when acl callback doesn’t require
context.
#### render(context)
Return the node rendered as a string.
### re2o.templatetags.acl.acl_app_filter(parser, token)
Templatetag for acl checking on applications.
### re2o.templatetags.acl.acl_change_filter(parser, token)
Templatetag for acl checking a can_change_xxx function
### re2o.templatetags.acl.acl_fct(callback, reverse)
Build a function to use as an acl checker
### re2o.templatetags.acl.acl_history_filter(parser, token)
Templatetag for acl checking on history.
### re2o.templatetags.acl.acl_instance_filter(parser, token)
Generic definition of an acl templatetag for acl based on instance
### re2o.templatetags.acl.acl_model_filter(parser, token)
Generic definition of an acl templatetag for acl based on model
### re2o.templatetags.acl.get_callback(tag_name, obj=None)
Return the right function to call back to check for acl
### re2o.templatetags.acl.get_model(model_name)
Retrieve the model object from its name
## re2o.templatetags.design module
### re2o.templatetags.design.tick(valeur, autoescape=False)
## re2o.templatetags.massive_bootstrap_form module
Templatetag used to render massive django form selects into bootstrap
forms that can still be manipulating even if there is multiple tens of
thousands of elements in the select. It’s made possible using JS libaries
Twitter Typeahead and Splitree’s Tokenfield.
See docstring of massive_bootstrap_form for a detailed explaantion on how
to use this templatetag.
### class re2o.templatetags.massive_bootstrap_form.MBFField(name_, field_, bound_, choices_, engine_, match_func_, update_on_, gen_select_, \*args_, \*\*kwargs_)
Bases: `object`
An object to hold all the information and useful methods needed to
create and render a massive django form field into an actual HTML and JS
code able to handle it correctly.
Twitter Typeahead is used for the display and the matching of queries and
in case of a MultipleSelect, Sliptree’s Tokenfield is also used to manage
multiple values.
A div with only non visible elements is created after the div containing
the displayed input. It’s used to store the actual data that will be sent
to the server
#### create_js()
Generate a template for the whole script to use depending on
gen_select and multiple
#### default_choices()
JS code of the variable choices_<fieldname>
#### default_datasets()
Default JS script of the datasets to use with typeahead
#### default_engine()
Default JS code of the variable engine_<field_name>
#### default_match_func()
Default JS code of the matching function to use with typeahed
#### del_select()
JS code to delete the select if it has been generated and replace
it with an input.
#### fill_js()
Fill the template with the correct values
#### gen_displayed_div()
Generate HTML code for the div that contains displayed tags
#### gen_full_js()
Generate the full script tag containing the JS code
#### gen_hidden()
JS code to add a hidden tag to store the value.
#### gen_hidden_div()
Generate HTML code for the div that contains hidden tags
#### get_script()
Insert the JS code inside a script tag
#### hidden_input()
HTML for the hidden input element
#### render()
HTML code for the fully rendered field
#### tokenfield_create()
JS code triggered when a new token is created in tokenfield.
#### tokenfield_edit()
JS code triggered when a token is edited in tokenfield.
#### tokenfield_init_input()
JS code to init the fields values
#### tokenfield_remove()
JS code trigggered when a token is removed from tokenfield.
#### tokenfield_reset_input()
JS code to reset the fields values
#### tokenfield_updates()
JS code for binding external fields changes with a reset
#### typeahead_change()
JS code of the function triggered when an item is changed (i.e.
looses focus and value has changed since the moment it gained focus )
#### typeahead_init_input()
JS code to init the fields values
#### typeahead_reset_input()
JS code to reset the fields values
#### typeahead_select()
JS code to create the function triggered when an item is selected
through typeahead
#### typeahead_updates()
JS code for binding external fields changes with a reset
### class re2o.templatetags.massive_bootstrap_form.MBFForm(form, mbf_fields, \*args, \*\*kwargs)
Bases: `object`
An object to hold all the information and useful methods needed to
create and render a massive django form into an actual HTML and JS
code able to handle it correctly.
Every field that is not listed is rendered as a normal bootstrap_field.
#### render()
HTML code for the fully rendered form with all the necessary form
### re2o.templatetags.massive_bootstrap_form.massive_bootstrap_form(form, mbf_fields, \*args, \*\*kwargs)
Render a form where some specific fields are rendered using Twitter
Typeahead and/or splitree’s Bootstrap Tokenfield to improve the
performance, the speed and UX when dealing with very large datasets
(select with 50k+ elts for instance).
When the fields specified should normally be rendered as a select with
single selectable option, Twitter Typeahead is used for a better display
and the matching query engine. When dealing with multiple selectable
options, sliptree’s Bootstrap Tokenfield in addition with Typeahead.
For convenience, it accepts the same parameters as a standard bootstrap
can accept.
**Tag name**:
```
massive_bootstrap_form
```
**Parameters**:
> form (required)
> The form that is to be rendered
> mbf_fields (optional)
> A list of field names (comma separated) that should be rendered
> with Typeahead/Tokenfield instead of the default bootstrap
> renderer.
> If not specified, all fields will be rendered as a normal bootstrap
> field.
> mbf_param (optional)
> A dict of parameters for the massive_bootstrap_form tag. The
> possible parameters are the following.
> choices (optional)
> A dict of strings representing the choices in JS. The keys of
> the dict are the names of the concerned fields. The choices
> must be an array of objects. Each of those objects must at
> least have the fields ‘key’ (value to send) and ‘value’ (value
> to display). Other fields can be added as desired.
> For a more complex structure you should also consider
> reimplementing the engine and the match_func.
> If not specified, the key is the id of the object and the value
> is its string representation as in a normal bootstrap form.
> Example :
> ‘choices’ : {
> > ‘field_A’:’[{key:0,value:”choice0”,extra:”data0”},{…},…]’,
> > ‘field_B’:…,
> > …
> > }
> engine (optional)
> A dict of strings representating the engine used for matching
> queries and possible values with typeahead. The keys of the
> dict are the names of the concerned fields. The string is valid
> JS code.
> If not specified, BloodHound with relevant basic properties is
> used.
> Example :
> ‘engine’ : {‘field_A’: ‘new Bloodhound()’, ‘field_B’: …, …}
> match_func (optional)
> A dict of strings representing a valid JS function used in the
> dataset to overload the matching engine. The keys of the dict
> are the names of the concerned fields. This function is used
> the source of the dataset. This function receives 2 parameters,
> the query and the synchronize function as specified in
> typeahead.js documentation. If needed, the local variables
> ‘choices_<fieldname>’ and ‘engine_<fieldname>’ contains
> respectively the array of all possible values and the engine
> to match queries with possible values.
> If not specified, the function used display up to the 10 first
> elements if the query is empty and else the matching results.
> Example :
> ‘match_func’ : {
> > ‘field_A’: ‘function(q, sync) { engine.search(q, sync); }’,
> > ‘field_B’: …,
> > …
> }
> update_on (optional)
> A dict of list of ids that the values depends on. The engine
> and the typeahead properties are recalculated and reapplied.
> Example :
> ‘update_on’ : {
> > ‘field_A’ : [ ‘id0’, ‘id1’, … ] ,
> > ‘field_B’ : … ,
> > …
> }
> gen_select (optional)
> A dict of boolean telling if the form should either generate
> the normal select (set to true) and then use it to generate
> the possible choices and then remove it or either (set to
> false) generate the choices variable in this tag and do not
> send any select.
> Sending the select before can be usefull to permit the use
> without any JS enabled but it will execute more code locally
> for the client so the loading might be slower.
> If not specified, this variable is set to true for each field
> Example :
> ‘gen_select’ : {
> > ‘field_A’: True ,
> > ‘field_B’: … ,
> > …
> }
> See
> ```
> boostrap_form_
> ```
> for other arguments
**Usage**:
```
{% massive_bootstrap_form
form
[ '<field1>[,<field2>[,...]]' ]
[ mbf_param = {
[ 'choices': {
[ '<field1>': '<choices1>'
[, '<field2>': '<choices2>'
[, ... ] ] ]
} ]
[, 'engine': {
[ '<field1>': '<engine1>'
[, '<field2>': '<engine2>'
[, ... ] ] ]
} ]
[, 'match_func': {
[ '<field1>': '<match_func1>'
[, '<field2>': '<match_func2>'
[, ... ] ] ]
} ]
[, 'update_on': {
[ '<field1>': '<update_on1>'
[, '<field2>': '<update_on2>'
[, ... ] ] ]
} ],
[, 'gen_select': {
[ '<field1>': '<gen_select1>'
[, '<field2>': '<gen_select2>'
[, ... ] ] ]
} ]
} ]
[ <standard boostrap_form parameters> ]
%}
```
**Example**:
> {% massive_bootstrap_form form ‘ipv4’ choices=’[…]’ %}
## re2o.templatetags.pagination_extra module
### re2o.templatetags.pagination_extra.pagination_insert_page_and_id(url, page=1, id=None, \*\*kwargs)
Return the URL with some specific parameters inserted into the query
part. If a URL has already some parameters, those requested will be
modified if already exisiting or will be added and the other parameters
will stay unmodified. If parameters with the same name are already in the
URL and a value is specified for this parameter, it will replace all
existing parameters.
**Tag name**:
```
pagination_insert_page_and_id
```
**Parameters**:
> url
> The URL to use as a base. The parameters will be added to this URL.
> page (optional)
> The page number (greater or equal to 1) to add as a parameter.
> If not specified, it will default to 1.
> id (optional)
> The ID to jump to in the page.
> If not specified, it will not be added.
> **Other accepted parameters\***
> page_args (optional)
> The name of the parameter used to specify the page number.
> It must be specifically set as a keyword.
> If not specified, defaults to 1.
> Example: {% pagination_insert_page_and_id [https://example.com](https://example.com) 2 page_args=”page_id” %}
> > returns [https://example.com?page_id=2](https://example.com?page_id=2)
> **Usage**:
> ```
> {% pagination_insert_page_and_id [URL] [page number] [go to id] %}
> ```
> **Example**:
> ```
> {% pagination_insert_page_and_id https://example.com/bar 2 settings %}
> return "https://example.com/bar?page=2#settings"
> {% pagination_insert_page_and_id https://example.com/bar?foo=0 2 %}
> return "https://example.com/bar?foo=0&page=2"
> {% pagination_insert_page_and_id https://example.com/bar?foo=0 2 page_arg="page_id" %}
> return "https://example.com/bar?foo=0&page_id=2"
> ```
## re2o.templatetags.self_adhesion module
re2o.templatetags.self_adhesion
A simple templatagetag which returns the value of the option self_adhesion
which indicated if a user can creates an account by himself
### re2o.templatetags.self_adhesion.self_adhesion()
Returns True if the user are allowed to create accounts
## re2o.templatetags.url_insert_param module
Templatetag used to write a URL (specified or current one) and adding
or inserting specific parameters into the query part without deleting
the other parameters.
### re2o.templatetags.url_insert_param.url_insert_param(url='', \*\*kwargs)
Return the URL with some specific parameters inserted into the query
part. If a URL has already some parameters, those requested will be
modified if already exisiting or will be added and the other parameters
will stay unmodified. If parameters with the same name are already in the
URL and a value is specified for this parameter, it will replace all
existing parameters.
**Tag name**:
```
url_insert_param
```
**Parameters**:
> url (optional)
> The URL to use as a base. The parameters will be added to this URL.
> If not specified, it will only return the query part of the URL
> (“?a=foo&b=bar” for example).
> Example : “[https://example.com/bar?foo=0&thing=abc](https://example.com/bar?foo=0&thing=abc)”
> other arguments
> Any other key-value argument will be used. The key is considered as
> the name of the parameter to insert/modify and the value is the one
> used.
> Example : q=”foo” search=”bar” name=”johnDoe”
> > will return as ?<existing_param>&q=foo&search=bar&name=johnDoe
> **Usage**:
> ```
> {% url_insert_param [URL] [param1=val1 [param2=val2 [...]]] %}
> ```
> **Example**:
> ```
> {% url_insert_param a=0 b="bar" %}
> return "?a=0&b=bar"
> {% url_insert_param "url.net/foo.html" a=0 b="bar" %}
> return "url.net/foo.html?a=0&b=bar"
> {% url_insert_param "url.net/foo.html?c=keep" a=0 b="bar" %}
> return "url.net/foo.html?c=keep&a=0&b=bar"
> {% url_insert_param "url.net/foo.html?a=del" a=0 b="bar" %}
> return "url.net/foo.html?a=0&b=bar"
> {% url_insert_param "url.net/foo.html?a=del&c=keep" a=0 b="bar" %}
> return "url.net/foo.hmtl?a=0&c=keep&b=bar"
> ```
## Module contents

183
Code-Documentation/autodoc/search.md

@ -1,183 +0,0 @@
# search package
## Submodules
## search.acl module
search.acl
Here are defined some functions to check acl on the application.
### search.acl.can_view(_user)
Check if an user can view the application.
* **Parameters**
**user** – The user who wants to view the application.
* **Returns**
A couple (allowed, msg) where allowed is a boolean which is True if
viewing is granted and msg is a message (can be None).
## search.admin module
The field used in the admin view for the search app
## search.engine module
The views for the search app, responsible for finding the matches
Augustin lemesle, Gabriel Détraz, Lara Kermarec, Maël Kervella,
Jean-Romain Garnier
Gplv2
### class search.engine.Query(text='', case_sensitive=False)
Bases: `object`
Class representing a query.
It can contain the user-entered text, the operator for the query,
and a list of subqueries
#### add_char(char)
Add the given char to the query’s text
#### add_operator(operator)
Consider a new operator was entered, and that it must be processed.
The query’s current text is moved to self.subqueries in the form
of a plain Query object
#### property plaintext()
Returns a textual representation of the query’s content
### search.engine.apply_filters(filters, user, aff)
Apply the filters constructed by search_single_query.
It also takes into account the visual filters defined during
the search query.
### search.engine.contains_filter(attribute, word, case_sensitive=False)
Create a django model filtering whether the given attribute
contains the specified value.
### search.engine.create_queries(query)
Function used to split the query in different words to look for.
The rules are the following :
>
> * anti-slash (‘’) is used to escape characters
> * anything between quotation marks (‘”’) is kept intact (not
> interpreted as separators) excepts anti-slashes used to escape
> Values in between quotation marks are not searched accross
> multiple field in the database (contrary to +)
> * spaces (‘ ‘) and commas (‘,’) are used to separated words
> * “+” signs are used as “and” operators
### search.engine.empty_filters()
Build empty filters used by Django
### search.engine.filter_fields()
Return the list of fields the search applies to
### search.engine.finish_results(request, results, col, order)
Sort the results by applying filters and then limit them to the
number of max results. Finally add the info of the nmax number of results
to the dict
### search.engine.is_int(variable)
Check if the variable can be casted to an integer
### search.engine.search_single_query(query, filters, user, start, end, user_state, email_state, aff)
Handle different queries an construct the correct filters using
search_single_word
### search.engine.search_single_word(word, filters, user, start, end, user_state, email_state, aff, case_sensitive=False)
Construct the correct filters to match differents fields of some models
with the given query according to the given filters.
The match field are either CharField or IntegerField that will be displayed
on the results page (else, one might not see why a result has matched the
query). IntegerField are matched against the query only if it can be casted
to an int.
## search.forms module
The forms used by the search app
### class search.forms.SearchForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=<class 'django.forms.utils.ErrorList'>, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None)
Bases: `django.forms.forms.Form`
The form for a simple search
#### base_fields( = {'q': <django.forms.fields.CharField object>})
#### declared_fields( = {'q': <django.forms.fields.CharField object>})
#### property media()
### class search.forms.SearchFormPlus(\*args, \*\*kwargs)
Bases: `django.forms.forms.Form`
The form for an advanced search (with filters)
#### base_fields( = {'a': <django.forms.fields.MultipleChoiceField object>, 'e': <django.forms.fields.DateField object>, 'm': <django.forms.fields.MultipleChoiceField object>, 'q': <django.forms.fields.CharField object>, 's': <django.forms.fields.DateField object>, 'u': <django.forms.fields.MultipleChoiceField object>})
#### declared_fields( = {'a': <django.forms.fields.MultipleChoiceField object>, 'e': <django.forms.fields.DateField object>, 'm': <django.forms.fields.MultipleChoiceField object>, 'q': <django.forms.fields.CharField object>, 's': <django.forms.fields.DateField object>, 'u': <django.forms.fields.MultipleChoiceField object>})
#### property media()
### search.forms.initial_choices(choice_set)
Return the choices that should be activated by default for a
given set of choices
## search.tests module
search.tests
The tests for the Search module.
## search.urls module
The urls used by the search app
## search.views module
The views for the search app, responsible for finding the matches
Augustin lemesle, Gabriel Détraz, Lara Kermarec, Maël Kervella
Gplv2
### search.views.get_results(query, request, params)
The main function of the search procedure. It gather the filters for
each of the different words of the query and concatenate them into a
single filter. Then it calls ‘finish_results’ and return the queryset of
objects to display as results
## Module contents
search
The app in charge of evrything related to the search function

7
Code-Documentation/autodoc/test_utils.md

@ -1,7 +0,0 @@
# test_utils package
## Submodules
## test_utils.runner module
## Module contents

46
Code-Documentation/autodoc/tickets.md

@ -1,46 +0,0 @@
# tickets package
## Subpackages
* tickets.preferences package
* Submodules
* tickets.preferences.forms module
* tickets.preferences.models module
* tickets.preferences.views module
* Module contents
## Submodules
## tickets.admin module
## tickets.apps module
### class tickets.apps.TicketsConfig(app_name, app_module)
Bases: `django.apps.config.AppConfig`
#### name( = 'tickets')
## tickets.forms module
## tickets.models module
## tickets.tests module
## tickets.urls module
## tickets.views module
## Module contents

77
Code-Documentation/autodoc/tickets.migrations.md

@ -1,77 +0,0 @@
# tickets.migrations package
## Submodules
## tickets.migrations.0001_initial module
### class tickets.migrations.0001_initial.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('auth', '__first__')])
#### initial( = True)
#### operations( = [<CreateModel name='Preferences', fields=[('id', <django.db.models.fields.AutoField>), ('publish_address', <django.db.models.fields.EmailField>), ('mail_language', <django.db.models.fields.IntegerField>)], options={'verbose_name': "Ticket's settings"}>, <CreateModel name='Ticket', fields=[('id', <django.db.models.fields.AutoField>), ('title', <django.db.models.fields.CharField>), ('description', <django.db.models.fields.TextField>), ('date', <django.db.models.fields.DateTimeField>), ('email', <django.db.models.fields.EmailField>), ('solved', <django.db.models.fields.BooleanField>), ('user', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Ticket', 'verbose_name_plural': 'Tickets', 'permissions': (('view_tickets', 'Can view a ticket object'),)}, bases=(<class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>])
## tickets.migrations.0002_auto_20191120_0159 module
### class tickets.migrations.0002_auto_20191120_0159.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('tickets', '0001_initial')])
#### operations( = [<AlterModelOptions name='preferences', options={'verbose_name': 'tickets preferences'}>, <AlterModelOptions name='ticket', options={'permissions': (('view_tickets', 'Can view a ticket object'),), 'verbose_name': 'ticket', 'verbose_name_plural': 'tickets'}>, <AlterField model_name='preferences', name='mail_language', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='preferences', name='publish_address', field=<django.db.models.fields.EmailField>>, <AlterField model_name='ticket', name='description', field=<django.db.models.fields.TextField>>, <AlterField model_name='ticket', name='email', field=<django.db.models.fields.EmailField>>, <AlterField model_name='ticket', name='title', field=<django.db.models.fields.CharField>>])
## tickets.migrations.0003_auto_20200422_1839 module
### class tickets.migrations.0003_auto_20200422_1839.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('tickets', '0002_auto_20191120_0159')])
#### operations( = [<RenameModel old_name='Preferences', new_name='TicketOption'>, <AlterModelOptions name='ticketoption', options={'permissions': (('view_ticketoption', 'Can view tickets options'),), 'verbose_name': 'tickets options'}>])
## tickets.migrations.0004_auto_20200422_2127 module
### class tickets.migrations.0004_auto_20200422_2127.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('tickets', '0003_auto_20200422_1839')])
#### operations( = [<RemoveField model_name='ticketoption', name='mail_language'>, <AlterField model_name='ticket', name='description', field=<django.db.models.fields.TextField>>])
## tickets.migrations.0005_auto_20200422_2309 module
### class tickets.migrations.0005_auto_20200422_2309.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('tickets', '0004_auto_20200422_2127')])
#### operations( = [<CreateModel name='CommentTicket', fields=[('id', <django.db.models.fields.AutoField>), ('date', <django.db.models.fields.DateTimeField>), ('comment', <django.db.models.fields.TextField>)], options={'verbose_name': 'ticket', 'verbose_name_plural': 'tickets', 'permissions': (('view_commentticket', 'Can view a ticket object'),)}, bases=(<class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>)>, <AlterModelOptions name='ticket', options={'permissions': (('view_ticket', 'Can view a ticket object'),), 'verbose_name': 'ticket', 'verbose_name_plural': 'tickets'}>, <AddField model_name='commentticket', name='parent_ticket', field=<django.db.models.fields.related.ForeignKey>>])
## tickets.migrations.0006_auto_20200423_0202 module
### class tickets.migrations.0006_auto_20200423_0202.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('auth', '__first__'), ('tickets', '0005_auto_20200422_2309')])
#### operations( = [<AddField model_name='commentticket', name='created_at', field=<django.db.models.fields.DateTimeField>, preserve_default=False>, <AddField model_name='commentticket', name='created_by', field=<django.db.models.fields.related.ForeignKey>, preserve_default=False>])
## tickets.migrations.0007_ticket_language module
### class tickets.migrations.0007_ticket_language.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('tickets', '0006_auto_20200423_0202')])
#### operations( = [<AddField model_name='ticket', name='language', field=<django.db.models.fields.CharField>>])
## Module contents

14
Code-Documentation/autodoc/tickets.preferences.md

@ -1,14 +0,0 @@
# tickets.preferences package
## Submodules
## tickets.preferences.forms module
## tickets.preferences.models module
## tickets.preferences.views module
## Module contents
tickets
The app in charge of storing all the tickets for the local installation

537
Code-Documentation/autodoc/topologie.api.md

@ -1,537 +0,0 @@
# topologie.api package
## Submodules
## topologie.api.serializers module
### class topologie.api.serializers.AccessPointSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.AccessPoint objects
#### class Meta()
Bases: `object`
#### fields( = ('user', 'name', 'active', 'location', 'api_url'))
#### model()
alias of `topologie.models.AccessPoint`
### class topologie.api.serializers.BuildingSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.Building objects
#### class Meta()
Bases: `object`
#### fields( = ('name', 'api_url'))
#### model()
alias of `topologie.models.Building`
### class topologie.api.serializers.ConstructorSwitchSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.ConstructorSwitch objects
#### class Meta()
Bases: `object`
#### fields( = ('name', 'api_url'))
#### model()
alias of `topologie.models.ConstructorSwitch`
### class topologie.api.serializers.InterfaceRoleSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('interface',))
#### model()
alias of `machines.models.Interface`
### class topologie.api.serializers.InterfaceVlanSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('ipv4', 'ipv6', 'domain', 'vlan_id'))
#### model()
alias of `machines.models.Interface`
### class topologie.api.serializers.ModelSwitchSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('reference', 'firmware', 'constructor'))
#### model()
alias of `topologie.models.ModelSwitch`
### class topologie.api.serializers.PortProfileSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('name', 'profil_default', 'vlan_untagged', 'vlan_tagged', 'radius_type', 'radius_mode', 'speed', 'mac_limit', 'flow_control', 'dhcp_snooping', 'dhcpv6_snooping', 'arp_protect', 'ra_guard', 'loop_protect', 'vlan_untagged', 'vlan_tagged'))
#### model()
alias of `topologie.models.PortProfile`
### class topologie.api.serializers.PortsSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize machines.models.Ipv6List objects.
#### class Meta()
Bases: `object`
#### fields( = ('state', 'port', 'pretty_name', 'get_port_profile'))
#### model()
alias of `topologie.models.Port`
### class topologie.api.serializers.ProfilSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('name', 'profil_default', 'vlan_untagged', 'vlan_tagged', 'radius_type', 'radius_mode', 'speed', 'mac_limit', 'flow_control', 'dhcp_snooping', 'dhcpv6_snooping', 'arp_protect', 'ra_guard', 'loop_protect', 'vlan_untagged', 'vlan_tagged'))
#### model()
alias of `topologie.models.PortProfile`
### class topologie.api.serializers.RoleSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize machines.models.OuverturePort objects.
#### class Meta()
Bases: `object`
#### fields( = ('role_type', 'servers', 'specific_role'))
#### model()
alias of `machines.models.Role`
### class topologie.api.serializers.RoomSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.Room objects
#### class Meta()
Bases: `object`
#### fields( = ('name', 'details', 'api_url'))
#### model()
alias of `topologie.models.Room`
### class topologie.api.serializers.ServerSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.Server objects
#### class Meta()
Bases: `object`
#### fields( = ('user', 'name', 'active', 'api_url'))
#### model()
alias of `topologie.models.Server`
### class topologie.api.serializers.StackSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.Stack objects
#### class Meta()
Bases: `object`
#### fields( = ('name', 'stack_id', 'details', 'member_id_min', 'member_id_max', 'api_url'))
#### model()
alias of `topologie.models.Stack`
### class topologie.api.serializers.SwitchBaySerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('name',))
#### model()
alias of `topologie.models.SwitchBay`
### class topologie.api.serializers.SwitchPortSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `rest_framework.serializers.ModelSerializer`
Serialize the data about the switches
#### class Meta()
Bases: `object`
#### fields( = ('short_name', 'model', 'switchbay', 'ports', 'ipv4', 'ipv6', 'interfaces_subnet', 'interfaces6_subnet', 'automatic_provision', 'rest_enabled', 'web_management_enabled', 'get_radius_key_value', 'get_management_cred_value', 'get_radius_servers', 'list_modules'))
#### model()
alias of `topologie.models.Switch`
### class topologie.api.serializers.SwitchSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize topologie.models.Switch objects
#### class Meta()
Bases: `object`
#### fields( = ('user', 'name', 'active', 'port_amount', 'stack', 'stack_member_id', 'model', 'switchbay', 'api_url'))
#### model()
alias of `topologie.models.Switch`
### class topologie.api.serializers.VlanPortSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('vlan_id', 'name'))
#### model()
alias of `machines.models.Vlan`
## topologie.api.urls module
## topologie.api.views module
### class topologie.api.views.AccessPointViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.AccessPoint objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<AccessPoint: apdetest.adm.klafyvel.me>]>)
#### serializer_class()
alias of `topologie.api.serializers.AccessPointSerializer`
#### suffix( = None)
### class topologie.api.views.BuildingViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.Building objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.BuildingSerializer`
#### suffix( = None)
### class topologie.api.views.ConstructorSwitchViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.ConstructorSwitch
objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.ConstructorSwitchSerializer`
#### suffix( = None)
### class topologie.api.views.ModelSwitchViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.ModelSwitch objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.ModelSwitchSerializer`
#### suffix( = None)
### class topologie.api.views.PortProfileViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.PortProfile objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<PortProfile: nothing>, <PortProfile: uplink>, <PortProfile: asso_machine>, <PortProfile: accesspoint>, <PortProfile: mac-radius-strict>, <PortProfile: mac-radius-common>, <PortProfile: room>]>)
#### serializer_class()
alias of `topologie.api.serializers.PortProfileSerializer`
#### suffix( = None)
### class topologie.api.views.RoleView(\*\*kwargs)
Bases: `rest_framework.generics.ListAPIView`
Output of roles for each server
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.RoleSerializer`
### class topologie.api.views.RoomViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.Room objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.RoomSerializer`
#### suffix( = None)
### class topologie.api.views.ServerViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.Server objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<Server: test0.klafyvel.me>, <Server: apdetest.adm.klafyvel.me>, <Server: monswitch.adm.klafyvel.me>]>)
#### serializer_class()
alias of `topologie.api.serializers.ServerSerializer`
#### suffix( = None)
### class topologie.api.views.StackViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.Stack objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.StackSerializer`
#### suffix( = None)
### class topologie.api.views.SwitchBayViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.SwitchBay objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.SwitchBaySerializer`
#### suffix( = None)
### class topologie.api.views.SwitchPortView(\*\*kwargs)
Bases: `rest_framework.generics.ListAPIView`
Output each port of a switch, to be serialized with
additionnal informations (profiles etc)
#### queryset( = <QuerySet [<Switch: monswitch.adm.klafyvel.me>]>)
#### serializer_class()
alias of `topologie.api.serializers.SwitchPortSerializer`
### class topologie.api.views.SwitchPortViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.Port objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `topologie.api.serializers.SwitchPortSerializer`
#### suffix( = None)
### class topologie.api.views.SwitchViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of topologie.models.Switch objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<Switch: monswitch.adm.klafyvel.me>]>)
#### serializer_class()
alias of `topologie.api.serializers.SwitchSerializer`
#### suffix( = None)
## Module contents

2161
Code-Documentation/autodoc/topologie.md

File diff suppressed because it is too large

799
Code-Documentation/autodoc/topologie.migrations.md

@ -1,799 +0,0 @@
# topologie.migrations package
## Submodules
## topologie.migrations.0001_initial module
### class topologie.migrations.0001_initial.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [])
#### operations( = [<CreateModel name='Switch', fields=[('id', <django.db.models.fields.AutoField>), ('building', <django.db.models.fields.CharField>), ('number', <django.db.models.fields.IntegerField>), ('details', <django.db.models.fields.CharField>)]>])
## topologie.migrations.0002_auto_20160703_1118 module
### class topologie.migrations.0002_auto_20160703_1118.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('contenttypes', '0002_remove_content_type_name'), ('topologie', '0001_initial')])
#### operations( = [<CreateModel name='Port', fields=[('id', <django.db.models.fields.AutoField>), ('port', <django.db.models.fields.IntegerField>), ('details', <django.db.models.fields.CharField>), ('_object_id', <django.db.models.fields.PositiveIntegerField>), ('_content_type', <django.db.models.fields.related.ForeignKey>), ('switch', <django.db.models.fields.related.ForeignKey>)]>, <AlterUniqueTogether name='port', unique_together={('_content_type', '_object_id')}>])
## topologie.migrations.0003_room module
### class topologie.migrations.0003_room.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0002_auto_20160703_1118')])
#### operations( = [<CreateModel name='Room', fields=[('id', <django.db.models.fields.AutoField>), ('details', <django.db.models.fields.CharField>), ('building', <django.db.models.fields.CharField>), ('number', <django.db.models.fields.IntegerField>)]>])
## topologie.migrations.0004_auto_20160703_1122 module
### class topologie.migrations.0004_auto_20160703_1122.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0003_room')])
#### operations( = [<AlterUniqueTogether name='switch', unique_together={('building', 'number')}>])
## topologie.migrations.0005_auto_20160703_1123 module
### class topologie.migrations.0005_auto_20160703_1123.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0004_auto_20160703_1122')])
#### operations( = [<AlterUniqueTogether name='room', unique_together={('building', 'number')}>])
## topologie.migrations.0006_auto_20160703_1129 module
### class topologie.migrations.0006_auto_20160703_1129.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0005_auto_20160703_1123')])
#### operations( = [<AddField model_name='room', name='room', field=<django.db.models.fields.IntegerField>, preserve_default=False>, <AlterField model_name='room', name='building', field=<django.db.models.fields.CharField>>, <AlterField model_name='room', name='number', field=<django.db.models.fields.IntegerField>>, <AlterUniqueTogether name='room', unique_together={('building', 'room', 'number')}>])
## topologie.migrations.0007_auto_20160703_1148 module
### class topologie.migrations.0007_auto_20160703_1148.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0006_auto_20160703_1129')])
#### operations( = [<AlterField model_name='room', name='number', field=<django.db.models.fields.IntegerField>>])
## topologie.migrations.0008_port_room module
### class topologie.migrations.0008_port_room.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0007_auto_20160703_1148')])
#### operations( = [<AddField model_name='port', name='room', field=<django.db.models.fields.related.ForeignKey>, preserve_default=False>])
## topologie.migrations.0009_auto_20160703_1200 module
### class topologie.migrations.0009_auto_20160703_1200.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0008_port_room')])
#### operations( = [<AlterField model_name='port', name='room', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0010_auto_20160704_2148 module
### class topologie.migrations.0010_auto_20160704_2148.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0009_auto_20160703_1200')])
#### operations( = [<RenameField model_name='room', old_name='building', new_name='name'>, <AlterUniqueTogether name='room', unique_together=set()>, <RemoveField model_name='room', name='details'>, <RemoveField model_name='room', name='number'>, <RemoveField model_name='room', name='room'>])
## topologie.migrations.0011_auto_20160704_2153 module
### class topologie.migrations.0011_auto_20160704_2153.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0010_auto_20160704_2148')])
#### operations( = [<AlterField model_name='room', name='name', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0012_port_machine_interface module
### class topologie.migrations.0012_port_machine_interface.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0014_auto_20160706_1220'), ('topologie', '0011_auto_20160704_2153')])
#### operations( = [<AddField model_name='port', name='machine_interface', field=<django.db.models.fields.related.OneToOneField>>])
## topologie.migrations.0013_port_related module
### class topologie.migrations.0013_port_related.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0012_port_machine_interface')])
#### operations( = [<AddField model_name='port', name='related', field=<django.db.models.fields.related.OneToOneField>>])
## topologie.migrations.0014_auto_20160706_1238 module
### class topologie.migrations.0014_auto_20160706_1238.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0013_port_related')])
#### operations( = [<AlterUniqueTogether name='port', unique_together={('switch', 'port')}>, <RemoveField model_name='port', name='_content_type'>, <RemoveField model_name='port', name='_object_id'>])
## topologie.migrations.0015_auto_20160706_1452 module
### class topologie.migrations.0015_auto_20160706_1452.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0014_auto_20160706_1238')])
#### operations( = [<RemoveField model_name='port', name='related'>, <AddField model_name='port', name='related', field=<django.db.models.fields.related.ManyToManyField>>])
## topologie.migrations.0016_auto_20160706_1531 module
### class topologie.migrations.0016_auto_20160706_1531.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0015_auto_20160706_1452')])
#### operations( = [<RemoveField model_name='port', name='related'>, <AddField model_name='port', name='related', field=<django.db.models.fields.related.OneToOneField>>])
## topologie.migrations.0017_auto_20160718_1141 module
### class topologie.migrations.0017_auto_20160718_1141.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0016_auto_20160706_1531')])
#### operations( = [<AlterField model_name='port', name='machine_interface', field=<django.db.models.fields.related.OneToOneField>>])
## topologie.migrations.0018_room_details module
### class topologie.migrations.0018_room_details.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0017_auto_20160718_1141')])
#### operations( = [<AddField model_name='room', name='details', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0019_auto_20161026_1348 module
### class topologie.migrations.0019_auto_20161026_1348.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0026_auto_20161026_1348'), ('topologie', '0018_room_details')])
#### operations( = [<AddField model_name='switch', name='location', field=<django.db.models.fields.CharField>, preserve_default=False>, <AddField model_name='switch', name='switch_interface', field=<django.db.models.fields.related.OneToOneField>, preserve_default=False>, <AlterUniqueTogether name='switch', unique_together=set()>, <RemoveField model_name='switch', name='building'>])
## topologie.migrations.0020_auto_20161119_0033 module
### class topologie.migrations.0020_auto_20161119_0033.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0019_auto_20161026_1348')])
#### operations( = [<AlterField model_name='port', name='machine_interface', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0021_port_radius module
### class topologie.migrations.0021_port_radius.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0020_auto_20161119_0033')])
#### operations( = [<AddField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0022_auto_20161211_1622 module
### class topologie.migrations.0022_auto_20161211_1622.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0021_port_radius')])
#### operations( = [<AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0023_auto_20170817_1654 module
### class topologie.migrations.0023_auto_20170817_1654.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0022_auto_20161211_1622')])
#### operations( = [<CreateModel name='Stack', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('stack_id', <django.db.models.fields.CharField>), ('details', <django.db.models.fields.CharField>), ('member_id_min', <django.db.models.fields.IntegerField>), ('member_id_max', <django.db.models.fields.IntegerField>)]>, <AddField model_name='switch', name='stack_member_id', field=<django.db.models.fields.IntegerField>>, <AddField model_name='switch', name='stack', field=<django.db.models.fields.related.ForeignKey>>, <AlterUniqueTogether name='switch', unique_together={('stack', 'stack_member_id')}>])
## topologie.migrations.0023_auto_20170826_1530 module
### class topologie.migrations.0023_auto_20170826_1530.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0022_auto_20161211_1622')])
#### operations( = [<AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0024_auto_20170818_1021 module
### class topologie.migrations.0024_auto_20170818_1021.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0023_auto_20170817_1654')])
#### operations( = [<AlterField model_name='switch', name='stack', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0024_auto_20170826_1800 module
### class topologie.migrations.0024_auto_20170826_1800.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0023_auto_20170826_1530')])
#### operations( = [<AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0025_merge_20170902_1242 module
### class topologie.migrations.0025_merge_20170902_1242.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0024_auto_20170818_1021'), ('topologie', '0024_auto_20170826_1800')])
#### operations( = [])
## topologie.migrations.0026_auto_20170902_1245 module
### class topologie.migrations.0026_auto_20170902_1245.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0025_merge_20170902_1242')])
#### operations( = [<AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0027_auto_20170905_1442 module
### class topologie.migrations.0027_auto_20170905_1442.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0026_auto_20170902_1245')])
#### operations( = [<AlterModelOptions name='room', options={'ordering': ['name']}>, <AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0028_auto_20170913_1503 module
### class topologie.migrations.0028_auto_20170913_1503.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0027_auto_20170905_1442')])
#### operations( = [<AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0029_auto_20171002_0334 module
### class topologie.migrations.0029_auto_20171002_0334.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0028_auto_20170913_1503')])
#### operations( = [<AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0030_auto_20171004_0235 module
### class topologie.migrations.0030_auto_20171004_0235.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0029_auto_20171002_0334'), ('machines', '0049_vlan')])
#### operations( = [<AddField model_name='port', name='vlan_force', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='port', name='radius', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0031_auto_20171015_2033 module
### class topologie.migrations.0031_auto_20171015_2033.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0030_auto_20171004_0235')])
#### operations( = [<AlterField model_name='port', name='port', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='stack', name='member_id_max', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='stack', name='member_id_min', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='number', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='stack_member_id', field=<django.db.models.fields.PositiveIntegerField>>])
## topologie.migrations.0032_auto_20171026_0338 module
### class topologie.migrations.0032_auto_20171026_0338.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0031_auto_20171015_2033')])
#### operations( = [<CreateModel name='ConstructorSwitch', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>)]>, <CreateModel name='ModelSwitch', fields=[('id', <django.db.models.fields.AutoField>), ('reference', <django.db.models.fields.CharField>), ('constructor', <django.db.models.fields.related.ForeignKey>)]>, <AddField model_name='switch', name='model', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0033_auto_20171231_1743 module
### class topologie.migrations.0033_auto_20171231_1743.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0032_auto_20171026_0338')])
#### operations( = [<AlterModelOptions name='constructorswitch', options={'permissions': (('view_constructorswitch', 'Peut voir un objet constructorswitch'),)}>, <AlterModelOptions name='modelswitch', options={'permissions': (('view_modelswitch', 'Peut voir un objet modelswitch'),)}>, <AlterModelOptions name='port', options={'permissions': (('view_port', 'Peut voir un objet port'),)}>, <AlterModelOptions name='room', options={'ordering': ['name'], 'permissions': (('view_room', 'Peut voir un objet chambre'),)}>, <AlterModelOptions name='stack', options={'permissions': (('view_stack', 'Peut voir un objet stack'),)}>, <AlterModelOptions name='switch', options={'permissions': (('view_switch', 'Peut voir un objet switch'),)}>])
## topologie.migrations.0034_borne module
### class topologie.migrations.0034_borne.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0076_auto_20180130_1623'), ('topologie', '0033_auto_20171231_1743')])
#### operations( = [<CreateModel name='Borne', fields=[('interface_ptr', <django.db.models.fields.related.OneToOneField>), ('location', <django.db.models.fields.CharField>)], options={'permissions': (('view_borne', 'Peut voir une borne'),)}, bases=('machines.interface',)>])
## topologie.migrations.0035_auto_20180324_0023 module
### class topologie.migrations.0035_auto_20180324_0023.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0034_borne')])
#### operations( = [<AlterField model_name='borne', name='location', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0036_transferborne module
### class topologie.migrations.0036_transferborne.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0035_auto_20180324_0023')])
#### operations( = [<RunPython <function Migration.transfer_bornes>, <function Migration.untransfer_bornes>>])
#### transfer_bornes(schema_editor)
#### untransfer_bornes(schema_editor)
## topologie.migrations.0037_auto_20180325_0127 module
### class topologie.migrations.0037_auto_20180325_0127.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0076_auto_20180130_1623'), ('topologie', '0036_transferborne')])
#### operations( = [<CreateModel name='NewSwitch', fields=[('interface_ptr', <django.db.models.fields.related.OneToOneField>), ('location', <django.db.models.fields.CharField>), ('number', <django.db.models.fields.PositiveIntegerField>), ('stack_member_id', <django.db.models.fields.PositiveIntegerField>), ('model', <django.db.models.fields.related.ForeignKey>), ('stack', <django.db.models.fields.related.ForeignKey>)], bases=('machines.interface',)>, <AlterUniqueTogether name='newswitch', unique_together={('stack', 'stack_member_id')}>])
## topologie.migrations.0038_transfersw module
### class topologie.migrations.0038_transfersw.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0037_auto_20180325_0127')])
#### operations( = [<RunPython <function Migration.transfer_sw>, <function Migration.untransfer_sw>>])
#### transfer_sw(schema_editor)
#### untransfer_sw(schema_editor)
## topologie.migrations.0039_port_new_switch module
### class topologie.migrations.0039_port_new_switch.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0038_transfersw')])
#### operations( = [<AddField model_name='port', name='new_switch', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0040_transferports module
### class topologie.migrations.0040_transferports.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0039_port_new_switch')])
#### operations( = [<RunPython <function Migration.transfer_port>, <function Migration.untransfer_port>>])
#### transfer_port(schema_editor)
#### untransfer_port(schema_editor)
## topologie.migrations.0041_transferportsw module
### class topologie.migrations.0041_transferportsw.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0040_transferports')])
#### operations( = [<AlterUniqueTogether name='port', unique_together=set()>, <RemoveField model_name='port', name='switch'>, <RenameField 'Port', 'new_switch', 'switch'>])
## topologie.migrations.0042_transferswitch module
### class topologie.migrations.0042_transferswitch.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0041_transferportsw')])
#### operations( = [<DeleteModel name='Switch'>])
## topologie.migrations.0043_renamenewswitch module
### class topologie.migrations.0043_renamenewswitch.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0042_transferswitch')])
#### operations( = [<RenameModel old_name='NewSwitch', new_name='Switch'>])
## topologie.migrations.0044_auto_20180326_0002 module
### class topologie.migrations.0044_auto_20180326_0002.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0043_renamenewswitch')])
#### operations( = [<RenameModel old_name='Borne', new_name='AccessPoint'>, <AlterModelOptions name='accesspoint', options={'permissions': (('view_ap', 'Peut voir une borne'),)}>, <AlterModelOptions name='switch', options={'permissions': (('view_switch', 'Peut voir un objet switch'),)}>])
## topologie.migrations.0045_auto_20180326_0123 module
### class topologie.migrations.0045_auto_20180326_0123.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0044_auto_20180326_0002')])
#### operations( = [<AlterField model_name='port', name='switch', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0046_auto_20180326_0129 module
### class topologie.migrations.0046_auto_20180326_0129.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0045_auto_20180326_0123')])
#### operations( = [<AlterUniqueTogether name='port', unique_together={('switch', 'port')}>])
## topologie.migrations.0047_ap_machine module
### class topologie.migrations.0047_ap_machine.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0046_auto_20180326_0129')])
#### operations( = [<CreateModel name='NewAccessPoint', fields=[('machine_ptr', <django.db.models.fields.related.OneToOneField>), ('location', <django.db.models.fields.CharField>)], bases=('machines.machine',)>])
## topologie.migrations.0048_ap_machine module
### class topologie.migrations.0048_ap_machine.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0047_ap_machine')])
#### operations( = [<RunPython <function Migration.transfer_ap>, <function Migration.untransfer_ap>>, <DeleteModel name='AccessPoint'>, <RenameModel old_name='NewAccessPoint', new_name='AccessPoint'>])
#### transfer_ap(schema_editor)
#### untransfer_ap(schema_editor)
## topologie.migrations.0049_switchs_machine module
### class topologie.migrations.0049_switchs_machine.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0048_ap_machine')])
#### operations( = [<CreateModel name='NewSw', fields=[('machine_ptr', <django.db.models.fields.related.OneToOneField>), ('location', <django.db.models.fields.CharField>), ('number', <django.db.models.fields.PositiveIntegerField>), ('stack_member_id', <django.db.models.fields.PositiveIntegerField>), ('model', <django.db.models.fields.related.ForeignKey>), ('stack', <django.db.models.fields.related.ForeignKey>)], bases=('machines.machine',)>])
## topologie.migrations.0050_port_new_switch module
### class topologie.migrations.0050_port_new_switch.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0049_switchs_machine')])
#### operations( = [<AddField model_name='port', name='new_sw', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0051_switchs_machine module
### class topologie.migrations.0051_switchs_machine.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0050_port_new_switch')])
#### operations( = [<RunPython <function Migration.transfer_sw>, <function Migration.untransfer_sw>>])
#### transfer_sw(schema_editor)
#### untransfer_sw(schema_editor)
## topologie.migrations.0052_transferports module
### class topologie.migrations.0052_transferports.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0051_switchs_machine')])
#### operations( = [<AlterUniqueTogether name='port', unique_together=set()>, <RunPython <function Migration.transfer_port>, <function Migration.untransfer_port>>, <RemoveField model_name='port', name='switch'>, <RenameField 'Port', 'new_sw', 'switch'>])
#### transfer_port(schema_editor)
#### untransfer_port(schema_editor)
## topologie.migrations.0053_finalsw module
### class topologie.migrations.0053_finalsw.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0052_transferports')])
#### operations( = [<DeleteModel name='Switch'>, <RenameModel old_name='NewSw', new_name='Switch'>])
## topologie.migrations.0054_auto_20180326_1742 module
### class topologie.migrations.0054_auto_20180326_1742.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0053_finalsw')])
#### operations( = [<AlterModelOptions name='accesspoint', options={'permissions': (('view_ap', 'Peut voir une borne'),)}>, <AlterModelOptions name='switch', options={'permissions': (('view_switch', 'Peut voir un objet switch'),)}>, <AlterField model_name='port', name='switch', field=<django.db.models.fields.related.ForeignKey>, preserve_default=False>, <AlterUniqueTogether name='port', unique_together={('switch', 'port')}>, <AlterUniqueTogether name='switch', unique_together={('stack', 'stack_member_id')}>])
## topologie.migrations.0055_auto_20180329_0431 module
### class topologie.migrations.0055_auto_20180329_0431.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0054_auto_20180326_1742')])
#### operations( = [<AlterModelOptions name='accesspoint', options={'permissions': (('view_accesspoint', 'Peut voir une borne'),)}>])
## topologie.migrations.0056_building_switchbay module
### class topologie.migrations.0056_building_switchbay.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0055_auto_20180329_0431')])
#### operations( = [<CreateModel name='Building', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>)], options={'permissions': (('view_building', 'Peut voir un objet batiment'),)}, bases=(<class 're2o.mixins.AclMixin'>, <class 're2o.mixins.RevMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='SwitchBay', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('info', <django.db.models.fields.CharField>), ('building', <django.db.models.fields.related.ForeignKey>), ('members', <django.db.models.fields.related.ManyToManyField>)], options={'permissions': (('view_switchbay', 'Peut voir un objet baie de brassage'),)}, bases=(<class 're2o.mixins.AclMixin'>, <class 're2o.mixins.RevMixin'>, <class 'django.db.models.base.Model'>)>])
## topologie.migrations.0057_auto_20180408_0316 module
### class topologie.migrations.0057_auto_20180408_0316.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0056_building_switchbay')])
#### operations( = [<RemoveField model_name='switchbay', name='members'>, <AddField model_name='switch', name='switchbay', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0058_remove_switch_location module
### class topologie.migrations.0058_remove_switch_location.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0057_auto_20180408_0316')])
#### operations( = [<RemoveField model_name='switch', name='location'>])
## topologie.migrations.0059_auto_20180415_2249 module
### class topologie.migrations.0059_auto_20180415_2249.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0058_remove_switch_location')])
#### operations( = [<AlterField model_name='switch', name='model', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='switch', name='number', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='stack_member_id', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='switchbay', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0060_server module
### class topologie.migrations.0060_server.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0081_auto_20180521_1413'), ('topologie', '0059_auto_20180415_2249')])
#### operations( = [<CreateModel name='Server', fields=[], options={'proxy': True}, bases=('machines.machine',)>])
## topologie.migrations.0061_portprofile module
### class topologie.migrations.0061_portprofile.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('machines', '0082_auto_20180525_2209'), ('topologie', '0060_server')])
#### operations( = [<CreateModel name='PortProfile', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('profil_default', <django.db.models.fields.CharField>), ('radius_type', <django.db.models.fields.CharField>), ('radius_mode', <django.db.models.fields.CharField>), ('speed', <django.db.models.fields.CharField>), ('mac_limit', <django.db.models.fields.IntegerField>), ('flow_control', <django.db.models.fields.BooleanField>), ('dhcp_snooping', <django.db.models.fields.BooleanField>), ('dhcpv6_snooping', <django.db.models.fields.BooleanField>), ('arp_protect', <django.db.models.fields.BooleanField>), ('ra_guard', <django.db.models.fields.BooleanField>), ('loop_protect', <django.db.models.fields.BooleanField>), ('vlan_tagged', <django.db.models.fields.related.ManyToManyField>), ('vlan_untagged', <django.db.models.fields.related.ForeignKey>)], options={'verbose_name': 'Port profile', 'permissions': (('view_port_profile', 'Can view a port profile object'),), 'verbose_name_plural': 'Port profiles'}, bases=(<class 're2o.mixins.AclMixin'>, <class 're2o.mixins.RevMixin'>, <class 'django.db.models.base.Model'>)>, <AddField model_name='port', name='custom_profile', field=<django.db.models.fields.related.ForeignKey>>, <RunPython <function transfer_profil>>, <RemoveField model_name='port', name='radius'>, <RemoveField model_name='port', name='vlan_force'>, <AddField model_name='port', name='state', field=<django.db.models.fields.BooleanField>>])
### topologie.migrations.0061_portprofile.transfer_profil(apps, schema_editor)
## topologie.migrations.0062_auto_20180815_1918 module
### class topologie.migrations.0062_auto_20180815_1918.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0061_portprofile')])
#### operations( = [<AlterModelOptions name='accesspoint', options={'permissions': (('view_accesspoint', 'Can view an access point object'),), 'verbose_name': 'access point', 'verbose_name_plural': 'access points'}>, <AlterModelOptions name='building', options={'permissions': (('view_building', 'Can view a building object'),), 'verbose_name': 'building', 'verbose_name_plural': 'buildings'}>, <AlterModelOptions name='constructorswitch', options={'permissions': (('view_constructorswitch', 'Can view a switch constructor object'),), 'verbose_name': 'switch constructor', 'verbose_name_plural': 'switch constructors'}>, <AlterModelOptions name='modelswitch', options={'permissions': (('view_modelswitch', 'Can view a switch model object'),), 'verbose_name': 'switch model', 'verbose_name_plural': 'switch models'}>, <AlterModelOptions name='port', options={'permissions': (('view_port', 'Can view a port object'),), 'verbose_name': 'port', 'verbose_name_plural': 'ports'}>, <AlterModelOptions name='portprofile', options={'permissions': (('view_port_profile', 'Can view a port profile object'),), 'verbose_name': 'port profile', 'verbose_name_plural': 'port profiles'}>, <AlterModelOptions name='room', options={'ordering': ['name'], 'permissions': (('view_room', 'Can view a room object'),), 'verbose_name': 'room', 'verbose_name_plural': 'rooms'}>, <AlterModelOptions name='stack', options={'permissions': (('view_stack', 'Can view a stack object'),), 'verbose_name': 'switches stack', 'verbose_name_plural': 'switches stacks'}>, <AlterModelOptions name='switch', options={'permissions': (('view_switch', 'Can view a switch object'),), 'verbose_name': 'switch', 'verbose_name_plural': 'switches'}>, <AlterModelOptions name='switchbay', options={'permissions': (('view_switchbay', 'Can view a switch bay object'),), 'verbose_name': 'switch bay', 'verbose_name_plural': 'switch bays'}>, <AlterField model_name='accesspoint', name='location', field=<django.db.models.fields.CharField>>, <AlterField model_name='port', name='state', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='arp_protect', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='dhcp_snooping', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='dhcpv6_snooping', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='flow_control', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='loop_protect', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='mac_limit', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='portprofile', name='profil_default', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='ra_guard', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='radius_mode', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='radius_type', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='speed', field=<django.db.models.fields.CharField>>, <AlterField model_name='switch', name='model', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='switch', name='number', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='stack_member_id', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='switchbay', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='switchbay', name='info', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0063_auto_20180919_2225 module
### class topologie.migrations.0063_auto_20180919_2225.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('preferences', '0051_auto_20180919_2225'), ('topologie', '0062_auto_20180815_1918')])
#### operations( = [<AddField model_name='modelswitch', name='firmware', field=<django.db.models.fields.CharField>>, <AddField model_name='switch', name='management_creds', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='switch', name='radius_key', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0064_switch_automatic_provision module
### class topologie.migrations.0064_switch_automatic_provision.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0063_auto_20180919_2225')])
#### operations( = [<AddField model_name='switch', name='automatic_provision', field=<django.db.models.fields.BooleanField>>])
## topologie.migrations.0065_auto_20180927_1836 module
### class topologie.migrations.0065_auto_20180927_1836.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0064_switch_automatic_provision')])
#### operations( = [<AlterField model_name='portprofile', name='profil_default', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0066_modelswitch_commercial_name module
### class topologie.migrations.0066_modelswitch_commercial_name.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0065_auto_20180927_1836')])
#### operations( = [<AddField model_name='modelswitch', name='commercial_name', field=<django.db.models.fields.CharField>>])
## topologie.migrations.0067_auto_20181230_1819 module
### class topologie.migrations.0067_auto_20181230_1819.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0066_modelswitch_commercial_name')])
#### operations( = [<CreateModel name='ModuleOnSwitch', fields=[('id', <django.db.models.fields.AutoField>), ('slot', <django.db.models.fields.CharField>)], options={'verbose_name': 'link between switchs and modules', 'permissions': (('view_moduleonswitch', 'Can view a moduleonswitch object'),)}, bases=(<class 're2o.mixins.AclMixin'>, <class 're2o.mixins.RevMixin'>, <class 'django.db.models.base.Model'>)>, <CreateModel name='ModuleSwitch', fields=[('id', <django.db.models.fields.AutoField>), ('reference', <django.db.models.fields.CharField>), ('comment', <django.db.models.fields.CharField>)], options={'verbose_name': 'Module of a switch', 'permissions': (('view_moduleswitch', 'Can view a module object'),)}, bases=(<class 're2o.mixins.AclMixin'>, <class 're2o.mixins.RevMixin'>, <class 'django.db.models.base.Model'>)>, <AddField model_name='modelswitch', name='is_itself_module', field=<django.db.models.fields.BooleanField>>, <AddField model_name='modelswitch', name='is_modular', field=<django.db.models.fields.BooleanField>>, <AddField model_name='moduleonswitch', name='module', field=<django.db.models.fields.related.ForeignKey>>, <AddField model_name='moduleonswitch', name='switch', field=<django.db.models.fields.related.ForeignKey>>, <AlterUniqueTogether name='moduleonswitch', unique_together={('slot', 'switch')}>])
## topologie.migrations.0068_auto_20190102_1758 module
### class topologie.migrations.0068_auto_20190102_1758.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0067_auto_20181230_1819')])
#### operations( = [<AlterField model_name='modelswitch', name='is_itself_module', field=<django.db.models.fields.BooleanField>>])
## topologie.migrations.0069_auto_20190108_1439 module
### class topologie.migrations.0069_auto_20190108_1439.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0068_auto_20190102_1758')])
#### operations( = [<AlterModelOptions name='moduleonswitch', options={'permissions': (('view_moduleonswitch', 'Can view a link between switch and module object'),), 'verbose_name': 'link between switch and module', 'verbose_name_plural': 'links between switch and module'}>, <AlterModelOptions name='moduleswitch', options={'permissions': (('view_moduleswitch', 'Can view a switch module object'),), 'verbose_name': 'switch module', 'verbose_name_plural': 'switch modules'}>, <AlterField model_name='modelswitch', name='is_itself_module', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='modelswitch', name='is_modular', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='profil_default', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='radius_type', field=<django.db.models.fields.CharField>>, <AlterField model_name='switch', name='automatic_provision', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='switch', name='management_creds', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='switch', name='radius_key', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0070_auto_20190218_1743 module
### class topologie.migrations.0070_auto_20190218_1743.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### create_dormitory(schema_editor)
#### delete_dormitory(schema_editor)
#### dependencies( = [('topologie', '0069_auto_20190108_1439')])
#### operations( = [<CreateModel name='Dormitory', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>)], options={'verbose_name': 'dormitory', 'permissions': (('view_dormitory', 'Can view a dormitory object'),), 'verbose_name_plural': 'dormitories'}, bases=(<class 're2o.mixins.AclMixin'>, <class 're2o.mixins.RevMixin'>, <class 'django.db.models.base.Model'>)>, <AddField model_name='building', name='dormitory', field=<django.db.models.fields.related.ForeignKey>, preserve_default=False>, <RunPython <function Migration.create_dormitory>, <function Migration.delete_dormitory>>])
## topologie.migrations.0071_auto_20190218_1936 module
### class topologie.migrations.0071_auto_20190218_1936.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0070_auto_20190218_1743')])
#### operations( = [<AlterField model_name='room', name='name', field=<django.db.models.fields.CharField>>, <AddField model_name='room', name='building', field=<django.db.models.fields.related.ForeignKey>>, <AlterUniqueTogether name='room', unique_together={('name', 'building')}>, <AlterField model_name='building', name='dormitory', field=<django.db.models.fields.related.ForeignKey>>, <RunPython <function Migration.transfer_room>, <function Migration.untransfer_room>>, <AlterField model_name='room', name='building', field=<django.db.models.fields.related.ForeignKey>>])
#### transfer_room(schema_editor)
#### untransfer_room(schema_editor)
## topologie.migrations.0072_auto_20190720_2318 module
### class topologie.migrations.0072_auto_20190720_2318.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0071_auto_20190218_1936')])
#### operations( = [<AlterModelOptions name='room', options={'ordering': ['building__name'], 'permissions': (('view_room', 'Can view a room object'),), 'verbose_name': 'room', 'verbose_name_plural': 'rooms'}>, <AddField model_name='portprofile', name='on_dormitory', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='portprofile', name='profil_default', field=<django.db.models.fields.CharField>>, <AlterUniqueTogether name='portprofile', unique_together={('on_dormitory', 'profil_default')}>])
## topologie.migrations.0073_auto_20191120_0159 module
### class topologie.migrations.0073_auto_20191120_0159.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0072_auto_20190720_2318')])
#### operations( = [<AlterField model_name='accesspoint', name='location', field=<django.db.models.fields.CharField>>, <AlterField model_name='moduleonswitch', name='slot', field=<django.db.models.fields.CharField>>, <AlterField model_name='moduleswitch', name='comment', field=<django.db.models.fields.CharField>>, <AlterField model_name='moduleswitch', name='reference', field=<django.db.models.fields.CharField>>, <AlterField model_name='port', name='state', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='arp_protect', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='dhcp_snooping', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='dhcpv6_snooping', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='flow_control', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='loop_protect', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='mac_limit', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='portprofile', name='name', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='on_dormitory', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='portprofile', name='profil_default', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='ra_guard', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='portprofile', name='radius_mode', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='radius_type', field=<django.db.models.fields.CharField>>, <AlterField model_name='portprofile', name='speed', field=<django.db.models.fields.CharField>>, <AlterField model_name='switch', name='automatic_provision', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='switch', name='management_creds', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='switch', name='model', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='switch', name='number', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='switch', name='radius_key', field=<django.db.models.fields.related.ForeignKey>>])
## topologie.migrations.0074_auto_20200419_1640 module
### class topologie.migrations.0074_auto_20200419_1640.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0073_auto_20191120_0159')])
#### operations( = [<AlterModelOptions name='portprofile', options={'permissions': (('view_portprofile', 'Can view a port profile object'),), 'verbose_name': 'port profile', 'verbose_name_plural': 'port profiles'}>])
## Module contents

601
Code-Documentation/autodoc/users.api.md

@ -1,601 +0,0 @@
# users.api package
## Submodules
## users.api.serializers module
### class users.api.serializers.AdherentSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.Adherent objects.
#### class Meta()
Bases: `object`
#### extra_kwargs( = {'shell': {'view_name': 'shell-detail'}})
#### fields( = ('name', 'surname', 'pseudo', 'email', 'local_email_redirect', 'local_email_enabled', 'school', 'shell', 'comment', 'state', 'registered', 'telephone', 'room', 'solde', 'access', 'end_access', 'uid', 'api_url', 'gid'))
#### model()
alias of `users.models.Adherent`
### class users.api.serializers.BanSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.Ban objects.
#### class Meta()
Bases: `object`
#### fields( = ('user', 'raison', 'date_start', 'date_end', 'state', 'active', 'api_url'))
#### model()
alias of `users.models.Ban`
### class users.api.serializers.BasicUserSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize ‘users.models.User’ minimal infos
#### class Meta()
Bases: `object`
#### fields( = ('pseudo', 'uid', 'gid'))
#### model()
alias of `users.models.User`
### class users.api.serializers.ClubSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.Club objects.
#### class Meta()
Bases: `object`
#### extra_kwargs( = {'shell': {'view_name': 'shell-detail'}})
#### fields( = ('name', 'pseudo', 'email', 'local_email_redirect', 'local_email_enabled', 'school', 'shell', 'comment', 'state', 'registered', 'telephone', 'solde', 'room', 'access', 'end_access', 'administrators', 'members', 'mailing', 'uid', 'api_url'))
#### model()
alias of `users.models.Club`
### class users.api.serializers.EMailAddressSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.EMailAddress objects.
#### class Meta()
Bases: `object`
#### fields( = ('user', 'local_part', 'complete_email_address', 'api_url'))
#### model()
alias of `users.models.EMailAddress`
### class users.api.serializers.ListRightSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.ListRight objects.
#### class Meta()
Bases: `object`
#### fields( = ('unix_name', 'gid', 'critical', 'details', 'api_url'))
#### model()
alias of `users.models.ListRight`
### class users.api.serializers.LocalEmailUsersSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
#### class Meta()
Bases: `object`
#### fields( = ('local_email_enabled', 'local_email_redirect', 'email_address', 'email'))
#### model()
alias of `users.models.User`
### class users.api.serializers.MailingMemberSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `users.api.serializers.UserSerializer`
Serialize the data about a mailing member.
#### class Meta()
Bases: `users.api.serializers.UserSerializer.Meta`
#### fields( = ('name', 'pseudo', 'get_mail'))
### class users.api.serializers.MailingSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `users.api.serializers.ClubSerializer`
Serialize the data about a mailing.
#### class Meta()
Bases: `users.api.serializers.ClubSerializer.Meta`
#### fields( = ('name', 'members', 'admins'))
### class users.api.serializers.SchoolSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.School objects.
#### class Meta()
Bases: `object`
#### fields( = ('name', 'api_url'))
#### model()
alias of `users.models.School`
### class users.api.serializers.ServiceUserSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.ServiceUser objects.
#### class Meta()
Bases: `object`
#### fields( = ('pseudo', 'access_group', 'comment', 'api_url'))
#### model()
alias of `users.models.ServiceUser`
### class users.api.serializers.ShellSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.ListShell objects.
#### class Meta()
Bases: `object`
#### extra_kwargs( = {'api_url': {'view_name': 'shell-detail'}})
#### fields( = ('shell', 'api_url'))
#### model()
alias of `users.models.ListShell`
### class users.api.serializers.UserSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.User objects.
#### class Meta()
Bases: `object`
#### extra_kwargs( = {'shell': {'view_name': 'shell-detail'}})
#### fields( = ('surname', 'pseudo', 'email', 'local_email_redirect', 'local_email_enabled', 'school', 'shell', 'comment', 'state', 'registered', 'telephone', 'solde', 'access', 'end_access', 'uid', 'class_type', 'api_url'))
#### model()
alias of `users.models.User`
### class users.api.serializers.WhitelistSerializer(instance=None, data=<class 'rest_framework.fields.empty'>, \*\*kwargs)
Bases: `api.serializers.NamespacedHMSerializer`
Serialize users.models.Whitelist objects.
#### class Meta()
Bases: `object`
#### fields( = ('user', 'raison', 'date_start', 'date_end', 'active', 'api_url'))
#### model()
alias of `users.models.Whitelist`
## users.api.urls module
## users.api.views module
### class users.api.views.AdherentViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.Adherent objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<Adherent: test>, <Adherent: toto>, <Adherent: klafyvel>]>)
#### serializer_class()
alias of `users.api.serializers.AdherentSerializer`
#### suffix( = None)
### class users.api.views.BanViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.Ban objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.BanSerializer`
#### suffix( = None)
### class users.api.views.ClubMailingView(\*\*kwargs)
Bases: `rest_framework.generics.ListAPIView`
Exposes list and details of club mailings (name, members and admins) in
order to build the corresponding mailing lists.
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.MailingSerializer`
### class users.api.views.ClubViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.Club objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.ClubSerializer`
#### suffix( = None)
### class users.api.views.CriticalUserViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes infos of
```
`
```
users.models.Users\`without specific rights objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.BasicUserSerializer`
#### suffix( = None)
### class users.api.views.EMailAddressViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.EMailAddress objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### get_queryset()
Get the list of items for this view.
This must be an iterable, and may be a queryset.
Defaults to using self.queryset.
This method should always be used rather than accessing self.queryset
directly, as self.queryset gets evaluated only once, and those results
are cached for all subsequent requests.
You may want to override this if you need to provide different
querysets depending on the incoming request.
(Eg. return a list of items that is specific to the user)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.EMailAddressSerializer`
#### suffix( = None)
### class users.api.views.HomeCreationViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes infos of users.models.Users objects to create homes.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.BasicUserSerializer`
#### suffix( = None)
### class users.api.views.ListRightViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.ListRight objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<ListRight: bofh>, <ListRight: bureau>, <ListRight: tresorier>, <ListRight: admin>, <ListRight: infra>, <ListRight: serveur>, <ListRight: cableur>]>)
#### serializer_class()
alias of `users.api.serializers.ListRightSerializer`
#### suffix( = None)
### class users.api.views.LocalEmailUsersView(\*\*kwargs)
Bases: `rest_framework.generics.ListAPIView`
Exposes all the aliases of the users that activated the internal address
#### get_queryset()
Get the list of items for this view.
This must be an iterable, and may be a queryset.
Defaults to using self.queryset.
This method should always be used rather than accessing self.queryset
directly, as self.queryset gets evaluated only once, and those results
are cached for all subsequent requests.
You may want to override this if you need to provide different
querysets depending on the incoming request.
(Eg. return a list of items that is specific to the user)
#### serializer_class()
alias of `users.api.serializers.LocalEmailUsersSerializer`
### class users.api.views.NormalUserViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes infos of
```
`
```
users.models.Users\`without specific rights objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<User: klafyvel>, <User: test>, <User: toto>]>)
#### serializer_class()
alias of `users.api.serializers.BasicUserSerializer`
#### suffix( = None)
### class users.api.views.SchoolViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.School objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.SchoolSerializer`
#### suffix( = None)
### class users.api.views.ServiceUserViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.ServiceUser objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.ServiceUserSerializer`
#### suffix( = None)
### class users.api.views.ShellViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.ListShell objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.ShellSerializer`
#### suffix( = None)
### class users.api.views.StandardMailingView(\*\*kwargs)
Bases: `rest_framework.views.APIView`
Exposes list and details of standard mailings (name and members) in
order to building the corresponding mailing lists.
#### get(request, format=None)
#### pagination_class()
alias of `api.pagination.PageSizedPagination`
#### permission_classes( = (<class 'api.permissions.ACLPermission'>,))
#### perms_map( = {'GET': [<function User.can_view_all>]})
### class users.api.views.UserViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.Users objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet [<User: test>, <User: toto>, <User: klafyvel>]>)
#### serializer_class()
alias of `users.api.serializers.UserSerializer`
#### suffix( = None)
### class users.api.views.WhitelistViewSet(\*\*kwargs)
Bases: `rest_framework.viewsets.ReadOnlyModelViewSet`
Exposes list and details of users.models.Whitelist objects.
#### basename( = None)
#### description( = None)
#### detail( = None)
#### name( = None)
#### queryset( = <QuerySet []>)
#### serializer_class()
alias of `users.api.serializers.WhitelistSerializer`
#### suffix( = None)
## Module contents

3243
Code-Documentation/autodoc/users.md

File diff suppressed because it is too large

971
Code-Documentation/autodoc/users.migrations.md

@ -1,971 +0,0 @@
# users.migrations package
## Submodules
## users.migrations.0001_initial module
### class users.migrations.0001_initial.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [])
#### operations( = [<CreateModel name='School', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>)]>, <CreateModel name='User', fields=[('id', <django.db.models.fields.AutoField>), ('name', <django.db.models.fields.CharField>), ('surname', <django.db.models.fields.CharField>), ('pseudo', <django.db.models.fields.CharField>), ('email', <django.db.models.fields.EmailField>), ('promo', <django.db.models.fields.CharField>), ('pwd_ssha', <django.db.models.fields.CharField>), ('pwd_ntlm', <django.db.models.fields.CharField>), ('state', <django.db.models.fields.CharField>), ('school', <django.db.models.fields.related.ForeignKey>)]>])
## users.migrations.0002_auto_20160630_2301 module
### class users.migrations.0002_auto_20160630_2301.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0001_initial')])
#### operations( = [<AlterField model_name='user', name='pseudo', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0003_listrights_rights module
### class users.migrations.0003_listrights_rights.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0002_auto_20160630_2301')])
#### operations( = [<CreateModel name='ListRights', fields=[('id', <django.db.models.fields.AutoField>), ('listright', <django.db.models.fields.CharField>)]>, <CreateModel name='Rights', fields=[('id', <django.db.models.fields.AutoField>), ('right', <django.db.models.fields.related.ForeignKey>), ('user', <django.db.models.fields.related.ForeignKey>)]>])
## users.migrations.0004_auto_20160701_2312 module
### class users.migrations.0004_auto_20160701_2312.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0003_listrights_rights')])
#### operations( = [<RenameModel old_name='ListRights', new_name='ListRight'>, <RenameModel old_name='Rights', new_name='Right'>])
## users.migrations.0005_auto_20160702_0006 module
### class users.migrations.0005_auto_20160702_0006.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0004_auto_20160701_2312')])
#### operations( = [<AlterUniqueTogether name='right', unique_together={('user', 'right')}>])
## users.migrations.0006_ban module
### class users.migrations.0006_ban.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0005_auto_20160702_0006')])
#### operations( = [<CreateModel name='Ban', fields=[('id', <django.db.models.fields.AutoField>), ('raison', <django.db.models.fields.CharField>), ('date_start', <django.db.models.fields.DateTimeField>), ('date_end', <django.db.models.fields.DateTimeField>), ('user', <django.db.models.fields.related.ForeignKey>)]>])
## users.migrations.0007_auto_20160702_2322 module
### class users.migrations.0007_auto_20160702_2322.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0006_ban')])
#### operations( = [<AlterField model_name='ban', name='date_start', field=<django.db.models.fields.DateTimeField>>])
## users.migrations.0008_user_registered module
### class users.migrations.0008_user_registered.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0007_auto_20160702_2322')])
#### operations( = [<AddField model_name='user', name='registered', field=<django.db.models.fields.DateTimeField>, preserve_default=False>])
## users.migrations.0009_user_room module
### class users.migrations.0009_user_room.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0009_auto_20160703_1200'), ('users', '0008_user_registered')])
#### operations( = [<AddField model_name='user', name='room', field=<django.db.models.fields.related.ForeignKey>, preserve_default=False>])
## users.migrations.0010_auto_20160703_1226 module
### class users.migrations.0010_auto_20160703_1226.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0009_user_room')])
#### operations( = [<AlterField model_name='user', name='room', field=<django.db.models.fields.related.ForeignKey>>])
## users.migrations.0011_auto_20160703_1227 module
### class users.migrations.0011_auto_20160703_1227.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0010_auto_20160703_1226')])
#### operations( = [<AlterField model_name='user', name='room', field=<django.db.models.fields.related.ForeignKey>>])
## users.migrations.0012_auto_20160703_1230 module
### class users.migrations.0012_auto_20160703_1230.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0011_auto_20160703_1227')])
#### operations( = [<AlterField model_name='user', name='room', field=<django.db.models.fields.related.OneToOneField>>])
## users.migrations.0013_auto_20160704_1547 module
### class users.migrations.0013_auto_20160704_1547.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0012_auto_20160703_1230')])
#### operations( = [<AddField model_name='user', name='comment', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='promo', field=<django.db.models.fields.CharField>>])
## users.migrations.0014_auto_20160704_1548 module
### class users.migrations.0014_auto_20160704_1548.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0013_auto_20160704_1547')])
#### operations( = [<RemoveField model_name='user', name='promo'>, <AlterField model_name='user', name='comment', field=<django.db.models.fields.CharField>>])
## users.migrations.0015_whitelist module
### class users.migrations.0015_whitelist.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0014_auto_20160704_1548')])
#### operations( = [<CreateModel name='Whitelist', fields=[('id', <django.db.models.fields.AutoField>), ('raison', <django.db.models.fields.CharField>), ('date_start', <django.db.models.fields.DateTimeField>), ('date_end', <django.db.models.fields.DateTimeField>), ('user', <django.db.models.fields.related.ForeignKey>)]>])
## users.migrations.0016_auto_20160706_1220 module
### class users.migrations.0016_auto_20160706_1220.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0015_whitelist')])
#### operations( = [<AlterField model_name='ban', name='date_end', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='user', name='pseudo', field=<django.db.models.fields.CharField>>, <AlterField model_name='whitelist', name='date_end', field=<django.db.models.fields.DateTimeField>>])
## users.migrations.0017_auto_20160707_0105 module
### class users.migrations.0017_auto_20160707_0105.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0016_auto_20160706_1220')])
#### operations( = [<AddField model_name='user', name='last_login', field=<django.db.models.fields.DateTimeField>>, <AddField model_name='user', name='password', field=<django.db.models.fields.CharField>, preserve_default=False>, <RunPython <function move_passwords> reverse_code=<function RunPython.noop>>])
### users.migrations.0017_auto_20160707_0105.move_passwords(apps, schema_editor)
## users.migrations.0018_auto_20160707_0115 module
### class users.migrations.0018_auto_20160707_0115.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0017_auto_20160707_0105')])
#### operations( = [<RemoveField model_name='user', name='pwd_ssha'>])
## users.migrations.0019_auto_20160708_1633 module
### class users.migrations.0019_auto_20160708_1633.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0018_auto_20160707_0115')])
#### operations( = [<AlterField model_name='listright', name='listright', field=<django.db.models.fields.CharField>>])
## users.migrations.0020_request module
### class users.migrations.0020_request.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0019_auto_20160708_1633')])
#### operations( = [<CreateModel name='Request', fields=[('id', <django.db.models.fields.AutoField>), ('type', <django.db.models.fields.CharField>), ('token', <django.db.models.fields.CharField>), ('created_at', <django.db.models.fields.DateTimeField>), ('expires_at', <django.db.models.fields.DateTimeField>), ('user', <django.db.models.fields.related.ForeignKey>)]>])
## users.migrations.0021_ldapuser module
### class users.migrations.0021_ldapuser.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0020_request')])
#### operations( = [<CreateModel name='LdapUser', fields=[('dn', <django.db.models.fields.CharField>), ('gid', <ldapdb.models.fields.IntegerField>), ('name', <ldapdb.models.fields.CharField>), ('uid', <ldapdb.models.fields.CharField>), ('uidNumber', <ldapdb.models.fields.IntegerField>), ('sn', <ldapdb.models.fields.CharField>), ('loginShell', <ldapdb.models.fields.CharField>), ('mail', <ldapdb.models.fields.CharField>), ('given_name', <ldapdb.models.fields.CharField>), ('home_directory', <ldapdb.models.fields.CharField>), ('dialupAccess', <ldapdb.models.fields.CharField>), ('mac_list', <ldapdb.models.fields.CharField>)], options={'abstract': False}>])
## users.migrations.0022_ldapuser_sambasid module
### class users.migrations.0022_ldapuser_sambasid.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0021_ldapuser')])
#### operations( = [<SeparateDatabaseAndState state_operations=[<AddField model_name='ldapuser', name='sambaSID', field=<ldapdb.models.fields.IntegerField>, preserve_default=False>], database_operations=[<RunSQL 'ALTER TABLE "users_ldapuser" ADD COLUMN "sambaSID" integer NULL UNIQUE;'>]>])
## users.migrations.0023_auto_20160724_1908 module
### class users.migrations.0023_auto_20160724_1908.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0022_ldapuser_sambasid')])
#### operations( = [<AlterField model_name='ldapuser', name='sambaSID', field=<ldapdb.models.fields.IntegerField>>])
## users.migrations.0024_remove_ldapuser_mac_list module
### class users.migrations.0024_remove_ldapuser_mac_list.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0023_auto_20160724_1908')])
#### operations( = [<RemoveField model_name='ldapuser', name='mac_list'>])
## users.migrations.0025_listshell module
### class users.migrations.0025_listshell.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0024_remove_ldapuser_mac_list')])
#### operations( = [<CreateModel name='ListShell', fields=[('id', <django.db.models.fields.AutoField>), ('shell', <django.db.models.fields.CharField>)]>])
## users.migrations.0026_user_shell module
### class users.migrations.0026_user_shell.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0025_listshell')])
#### operations( = [<AddField model_name='user', name='shell', field=<django.db.models.fields.related.ForeignKey>, preserve_default=False>])
## users.migrations.0027_auto_20160726_0216 module
### class users.migrations.0027_auto_20160726_0216.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0026_user_shell')])
#### operations( = [<CreateModel name='LdapUserGroup', fields=[('dn', <django.db.models.fields.CharField>), ('gid', <ldapdb.models.fields.IntegerField>), ('members', <ldapdb.models.fields.ListField>), ('name', <ldapdb.models.fields.CharField>)], options={'abstract': False}>])
## users.migrations.0028_auto_20160726_0227 module
### class users.migrations.0028_auto_20160726_0227.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0027_auto_20160726_0216')])
#### operations( = [<SeparateDatabaseAndState state_operations=[<AddField model_name='ldapuser', name='display_name', field=<ldapdb.models.fields.CharField>>, <AddField model_name='ldapuser', name='sambat_nt_password', field=<ldapdb.models.fields.CharField>>, <AddField model_name='ldapuser', name='user_password', field=<ldapdb.models.fields.CharField>>], database_operations=[<RunSQL 'ALTER TABLE users_ldapuser ADD COLUMN "displayName" varchar(200) NULL;'>, <RunSQL 'ALTER TABLE users_ldapuser ADD COLUMN "sambaNTPassword" varchar(200) NULL;'>, <RunSQL 'ALTER TABLE users_ldapuser ADD COLUMN "userPassword" varchar(200) NULL;'>]>, <AddField model_name='ldapuser', name='macs', field=<ldapdb.models.fields.ListField>>, <AddField model_name='listright', name='gid', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='user', name='shell', field=<django.db.models.fields.related.ForeignKey>>])
## users.migrations.0029_auto_20160726_0229 module
### class users.migrations.0029_auto_20160726_0229.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0028_auto_20160726_0227')])
#### operations( = [<AlterField model_name='ldapuser', name='display_name', field=<ldapdb.models.fields.CharField>>])
## users.migrations.0030_auto_20160726_0357 module
### class users.migrations.0030_auto_20160726_0357.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0029_auto_20160726_0229')])
#### operations( = [<AlterField model_name='ldapuser', name='display_name', field=<ldapdb.models.fields.CharField>>])
## users.migrations.0031_auto_20160726_0359 module
### class users.migrations.0031_auto_20160726_0359.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0030_auto_20160726_0357')])
#### operations( = [<AlterField model_name='user', name='shell', field=<django.db.models.fields.related.ForeignKey>>])
## users.migrations.0032_auto_20160727_2122 module
### class users.migrations.0032_auto_20160727_2122.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0031_auto_20160726_0359')])
#### operations( = [<CreateModel name='LdapServiceUser', fields=[('dn', <django.db.models.fields.CharField>), ('name', <ldapdb.models.fields.CharField>), ('user_password', <ldapdb.models.fields.CharField>)], options={'abstract': False}>, <CreateModel name='ServiceUser', fields=[('id', <django.db.models.fields.AutoField>), ('password', <django.db.models.fields.CharField>), ('last_login', <django.db.models.fields.DateTimeField>), ('pseudo', <django.db.models.fields.CharField>)], options={'abstract': False}>])
## users.migrations.0033_remove_ldapuser_loginshell module
### class users.migrations.0033_remove_ldapuser_loginshell.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0032_auto_20160727_2122')])
#### operations( = [<RemoveField model_name='ldapuser', name='loginShell'>])
## users.migrations.0034_auto_20161018_0037 module
### class users.migrations.0034_auto_20161018_0037.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0033_remove_ldapuser_loginshell')])
#### operations( = [<SeparateDatabaseAndState state_operations=[<AddField model_name='ldapuser', name='login_shell', field=<ldapdb.models.fields.CharField>>], database_operations=[<RunSQL 'ALTER TABLE users_ldapuser ADD COLUMN "loginShell" varchar(200) NULL;'>]>, <AddField model_name='user', name='rezo_rez_uid', field=<django.db.models.fields.IntegerField>>, <AddField model_name='user', name='uid_number', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='user', name='school', field=<django.db.models.fields.related.ForeignKey>>])
## users.migrations.0035_auto_20161018_0046 module
### class users.migrations.0035_auto_20161018_0046.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0034_auto_20161018_0037')])
#### operations( = [<AlterField model_name='user', name='uid_number', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0036_auto_20161022_2146 module
### class users.migrations.0036_auto_20161022_2146.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0035_auto_20161018_0046')])
#### operations( = [<AlterField model_name='user', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0037_auto_20161028_1906 module
### class users.migrations.0037_auto_20161028_1906.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0036_auto_20161022_2146')])
#### operations( = [<AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0038_auto_20161031_0258 module
### class users.migrations.0038_auto_20161031_0258.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0037_auto_20161028_1906')])
#### operations( = [<AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0039_auto_20161119_0033 module
### class users.migrations.0039_auto_20161119_0033.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0038_auto_20161031_0258')])
#### operations( = [<AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0040_auto_20161119_1709 module
### class users.migrations.0040_auto_20161119_1709.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0039_auto_20161119_0033')])
#### operations( = [<AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0041_listright_details module
### class users.migrations.0041_listright_details.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0040_auto_20161119_1709')])
#### operations( = [<AddField model_name='listright', name='details', field=<django.db.models.fields.CharField>>])
## users.migrations.0042_auto_20161126_2028 module
### class users.migrations.0042_auto_20161126_2028.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0041_listright_details')])
#### operations( = [<AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0043_auto_20161224_1156 module
### class users.migrations.0043_auto_20161224_1156.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0042_auto_20161126_2028')])
#### operations( = [<AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0043_ban_state module
### class users.migrations.0043_ban_state.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0042_auto_20161126_2028')])
#### operations( = [<AddField model_name='ban', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0044_user_ssh_public_key module
### class users.migrations.0044_user_ssh_public_key.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0043_auto_20161224_1156')])
#### operations( = [<AddField model_name='user', name='ssh_public_key', field=<django.db.models.fields.CharField>>])
## users.migrations.0045_merge module
### class users.migrations.0045_merge.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0043_ban_state'), ('users', '0044_user_ssh_public_key')])
#### operations( = [])
## users.migrations.0046_auto_20170617_1433 module
### class users.migrations.0046_auto_20170617_1433.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0045_merge')])
#### operations( = [<RemoveField model_name='user', name='ssh_public_key'>, <AlterField model_name='ban', name='state', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='ldapserviceuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<django.db.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<django.db.models.fields.CharField>>])
## users.migrations.0047_auto_20170618_0156 module
### class users.migrations.0047_auto_20170618_0156.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0046_auto_20170617_1433')])
#### operations( = [<CreateModel name='LdapServiceUserGroup', fields=[('dn', <django.db.models.fields.CharField>), ('name', <ldapdb.models.fields.CharField>), ('members', <ldapdb.models.fields.ListField>)], options={'abstract': False}>, <AddField model_name='serviceuser', name='access_group', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0048_auto_20170618_0210 module
### class users.migrations.0048_auto_20170618_0210.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0047_auto_20170618_0156')])
#### operations( = [<AlterField model_name='ldapserviceusergroup', name='name', field=<ldapdb.models.fields.CharField>>])
## users.migrations.0049_auto_20170618_1424 module
### class users.migrations.0049_auto_20170618_1424.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0048_auto_20170618_0210')])
#### operations( = [<AlterField model_name='serviceuser', name='access_group', field=<django.db.models.fields.CharField>>])
## users.migrations.0050_serviceuser_comment module
### class users.migrations.0050_serviceuser_comment.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0049_auto_20170618_1424')])
#### operations( = [<AddField model_name='serviceuser', name='comment', field=<django.db.models.fields.CharField>>])
## users.migrations.0051_user_telephone module
### class users.migrations.0051_user_telephone.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0050_serviceuser_comment')])
#### operations( = [<AddField model_name='user', name='telephone', field=<django.db.models.fields.CharField>>])
## users.migrations.0052_ldapuser_shadowexpire module
### class users.migrations.0052_ldapuser_shadowexpire.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0051_user_telephone')])
#### operations( = [<SeparateDatabaseAndState state_operations=[<AddField model_name='ldapuser', name='shadowexpire', field=<ldapdb.models.fields.CharField>>], database_operations=[<RunSQL 'ALTER TABLE users_ldapuser ADD COLUMN "shadowExpire" varchar(200) NULL;'>]>])
## users.migrations.0053_auto_20170626_2105 module
### class users.migrations.0053_auto_20170626_2105.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0052_ldapuser_shadowexpire')])
#### operations( = [<AlterField model_name='ldapuser', name='shadowexpire', field=<ldapdb.models.fields.IntegerField>>])
## users.migrations.0054_auto_20170626_2219 module
### class users.migrations.0054_auto_20170626_2219.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0053_auto_20170626_2105')])
#### operations( = [<AlterField model_name='ldapuser', name='shadowexpire', field=<ldapdb.models.fields.CharField>>])
## users.migrations.0055_auto_20171003_0556 module
### class users.migrations.0055_auto_20171003_0556.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0054_auto_20170626_2219')])
#### operations( = [<AlterField model_name='listright', name='listright', field=<django.db.models.fields.CharField>>])
## users.migrations.0056_auto_20171015_2033 module
### class users.migrations.0056_auto_20171015_2033.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0055_auto_20171003_0556')])
#### operations( = [<AlterField model_name='listright', name='gid', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='listright', name='listright', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='rezo_rez_uid', field=<django.db.models.fields.PositiveIntegerField>>, <AlterField model_name='user', name='uid_number', field=<django.db.models.fields.PositiveIntegerField>>])
## users.migrations.0057_auto_20171023_0301 module
### class users.migrations.0057_auto_20171023_0301.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0056_auto_20171015_2033')])
#### operations( = [<CreateModel name='Adherent', fields=[('user_ptr', <django.db.models.fields.related.OneToOneField>), ('usname', <django.db.models.fields.CharField>)], options={'abstract': False}, bases=('users.user',)>, <CreateModel name='Club', fields=[('user_ptr', <django.db.models.fields.related.OneToOneField>)], options={'abstract': False}, bases=('users.user',)>, <RunSQL 'insert into users_adherent (user_ptr_id, usname) select id, name from users_user' reverse_sql='insert into users_user (name) select usname from users_adherent'>, <RemoveField model_name='user', name='name'>, <RenameField model_name='adherent', old_name='usname', new_name='name'>])
## users.migrations.0058_auto_20171025_0154 module
### class users.migrations.0058_auto_20171025_0154.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('topologie', '0031_auto_20171015_2033'), ('users', '0057_auto_20171023_0301')])
#### operations( = [<AddField model_name='adherent', name='room_adherent', field=<django.db.models.fields.related.OneToOneField>>, <AddField model_name='club', name='room_club', field=<django.db.models.fields.related.ForeignKey>>, <RunPython <function create_move_room>, <function delete_move_room>>, <RemoveField model_name='user', name='room'>])
### users.migrations.0058_auto_20171025_0154.create_move_room(apps, schema_editor)
### users.migrations.0058_auto_20171025_0154.delete_move_room(apps, schema_editor)
## users.migrations.0059_auto_20171025_1854 module
### class users.migrations.0059_auto_20171025_1854.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0058_auto_20171025_0154')])
#### operations( = [<RenameField model_name='adherent', old_name='room_adherent', new_name='room'>, <RenameField model_name='club', old_name='room_club', new_name='room'>])
## users.migrations.0060_auto_20171120_0317 module
### class users.migrations.0060_auto_20171120_0317.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0059_auto_20171025_1854')])
#### operations( = [<AddField model_name='club', name='administrators', field=<django.db.models.fields.related.ManyToManyField>>, <AddField model_name='club', name='members', field=<django.db.models.fields.related.ManyToManyField>>])
## users.migrations.0061_auto_20171230_2033 module
### class users.migrations.0061_auto_20171230_2033.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('auth', '0008_alter_user_username_max_length'), ('users', '0060_auto_20171120_0317')])
#### operations( = [<AddField model_name='user', name='groups', field=<django.db.models.fields.related.ManyToManyField>>, <AddField model_name='user', name='is_superuser', field=<django.db.models.fields.BooleanField>>, <AddField model_name='user', name='user_permissions', field=<django.db.models.fields.related.ManyToManyField>>])
## users.migrations.0062_auto_20171231_0056 module
### class users.migrations.0062_auto_20171231_0056.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### create_groups(schema_editor)
#### delete_groups(schema_editor)
#### dependencies( = [('auth', '0008_alter_user_username_max_length'), ('users', '0061_auto_20171230_2033')])
#### operations( = [<RenameField model_name='listright', old_name='listright', new_name='unix_name'>, <AddField model_name='listright', name='group_ptr', field=<django.db.models.fields.related.OneToOneField>, preserve_default=False>, <RunPython <function Migration.create_groups>, <function Migration.delete_groups>>])
## users.migrations.0063_auto_20171231_0140 module
### class users.migrations.0063_auto_20171231_0140.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0062_auto_20171231_0056')])
#### operations( = [<RunPython <function Migration.transfer_right>, <function Migration.untransfer_right>>])
#### transfer_right(schema_editor)
#### untransfer_right(schema_editor)
## users.migrations.0064_auto_20171231_0150 module
### class users.migrations.0064_auto_20171231_0150.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0063_auto_20171231_0140')])
#### operations( = [<AlterUniqueTogether name='right', unique_together=set()>, <RemoveField model_name='right', name='right'>, <RemoveField model_name='right', name='user'>, <DeleteModel name='Right'>, <RemoveField model_name='listright', name='id'>, <AlterField model_name='listright', name='group_ptr', field=<django.db.models.fields.related.OneToOneField>>])
## users.migrations.0065_auto_20171231_2053 module
### class users.migrations.0065_auto_20171231_2053.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0064_auto_20171231_0150')])
#### operations( = [<AlterModelOptions name='ban', options={'permissions': (('view_ban', "Peut voir un objet ban quelqu'il soit"),)}>, <AlterModelOptions name='listright', options={'permissions': (('view_listright', 'Peut voir un objet Group/ListRight'),)}>, <AlterModelOptions name='school', options={'permissions': (('view_school', 'Peut voir un objet school'),)}>, <AlterModelOptions name='serviceuser', options={'permissions': (('view_serviceuser', 'Peut voir un objet serviceuser'),)}>, <AlterModelOptions name='user', options={'permissions': (('change_user_password', "Peut changer le mot de passe d'un user"), ('change_user_state', "Peut éditer l'etat d'un user"), ('change_user_force', 'Peut forcer un déménagement'), ('change_user_shell', "Peut éditer le shell d'un user"), ('change_user_groups', "Peut éditer les groupes d'un user ! Permission critique"), ('view_user', 'Peut voir un objet user quelquonque'))}>, <AlterModelOptions name='whitelist', options={'permissions': (('view_whitelist', 'Peut voir un objet whitelist'),)}>])
## users.migrations.0066_grouppermissions module
### class users.migrations.0066_grouppermissions.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0065_auto_20171231_2053'), ('cotisations', '0028_auto_20171231_0007'), ('machines', '0071_auto_20171231_2100'), ('preferences', '0025_auto_20171231_2142'), ('topologie', '0033_auto_20171231_1743')])
#### operations( = [<RunPython <function Migration.transfer_permissions>, <function Migration.untransfer_permissions>>])
#### transfer_permissions(schema_editor)
#### untransfer_permissions(schema_editor)
## users.migrations.0067_serveurpermission module
### class users.migrations.0067_serveurpermission.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0066_grouppermissions')])
#### operations( = [<RunPython <function Migration.transfer_permissions>, <function Migration.untransfer_permissions>>])
#### transfer_permissions(schema_editor)
#### untransfer_permissions(schema_editor)
## users.migrations.0068_auto_20180107_2245 module
### class users.migrations.0068_auto_20180107_2245.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0067_serveurpermission')])
#### operations( = [<AlterModelOptions name='user', options={'permissions': (('change_user_password', "Peut changer le mot de passe d'un user"), ('change_user_state', "Peut éditer l'etat d'un user"), ('change_user_force', 'Peut forcer un déménagement'), ('change_user_shell', "Peut éditer le shell d'un user"), ('change_user_groups', "Peut éditer les groupes d'un user ! Permission critique"), ('change_all_users', 'Peut éditer tous les users, y compris ceux dotés de droits. Superdroit'), ('view_user', 'Peut voir un objet user quelquonque'))}>, <AddField model_name='listright', name='critical', field=<django.db.models.fields.BooleanField>>, <RunPython <function Migration.transfer_permissions>, <function Migration.untransfer_permissions>>])
#### transfer_permissions(schema_editor)
#### untransfer_permissions(schema_editor)
## users.migrations.0069_club_mailing module
### class users.migrations.0069_club_mailing.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0068_auto_20180107_2245')])
#### operations( = [<AddField model_name='club', name='mailing', field=<django.db.models.fields.BooleanField>>])
## users.migrations.0070_auto_20180324_1906 module
### class users.migrations.0070_auto_20180324_1906.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0069_club_mailing')])
#### operations( = [<AlterModelOptions name='listshell', options={'permissions': (('view_listshell', "Peut voir un objet shell quelqu'il soit"),)}>])
## users.migrations.0071_auto_20180415_1252 module
### class users.migrations.0071_auto_20180415_1252.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0070_auto_20180324_1906')])
#### operations( = [<AlterField model_name='listright', name='unix_name', field=<django.db.models.fields.CharField>>])
## users.migrations.0072_auto_20180426_2021 module
### class users.migrations.0072_auto_20180426_2021.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0071_auto_20180415_1252')])
#### operations( = [<AlterField model_name='ban', name='date_end', field=<django.db.models.fields.DateTimeField>>, <AlterField model_name='whitelist', name='date_end', field=<django.db.models.fields.DateTimeField>>])
## users.migrations.0073_auto_20180629_1614 module
### class users.migrations.0073_auto_20180629_1614.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### create_initial_email_address(schema_editor)
#### delete_all_email_address(schema_editor)
#### dependencies( = [('users', '0072_auto_20180426_2021')])
#### operations( = [<CreateModel name='EMailAddress', fields=[('id', <django.db.models.fields.AutoField>), ('local_part', <django.db.models.fields.CharField>), ('user', <django.db.models.fields.related.ForeignKey>)], bases=(<class 're2o.mixins.RevMixin'>, <class 're2o.mixins.AclMixin'>, <class 'django.db.models.base.Model'>), options={'permissions': (('view_emailaddress', 'Can see a local email account object'),), 'verbose_name': 'Local email account', 'verbose_name_plural': 'Local email accounts'}>, <AddField model_name='user', name='local_email_enabled', field=<django.db.models.fields.BooleanField>>, <AddField model_name='user', name='local_email_redirect', field=<django.db.models.fields.BooleanField>>, <RunPython <function Migration.create_initial_email_address>, <function Migration.delete_all_email_address>>])
## users.migrations.0074_auto_20180810_2104 module
### class users.migrations.0074_auto_20180810_2104.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0073_auto_20180629_1614')])
#### operations( = [<AddField model_name='adherent', name='gpg_fingerprint', field=<django.db.models.fields.CharField>>])
## users.migrations.0074_auto_20180814_1059 module
### class users.migrations.0074_auto_20180814_1059.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0073_auto_20180629_1614')])
#### operations( = [<AlterField model_name='user', name='email', field=<django.db.models.fields.EmailField>>, <AlterField model_name='user', name='local_email_enabled', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='user', name='local_email_redirect', field=<django.db.models.fields.BooleanField>>])
## users.migrations.0075_merge_20180815_2202 module
### class users.migrations.0075_merge_20180815_2202.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0074_auto_20180814_1059'), ('users', '0074_auto_20180810_2104')])
#### operations( = [])
## users.migrations.0076_auto_20180818_1321 module
### class users.migrations.0076_auto_20180818_1321.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0075_merge_20180815_2202')])
#### operations( = [<AlterModelOptions name='adherent', options={'verbose_name': 'member', 'verbose_name_plural': 'members'}>, <AlterModelOptions name='ban', options={'permissions': (('view_ban', 'Can view a ban object'),), 'verbose_name': 'ban', 'verbose_name_plural': 'bans'}>, <AlterModelOptions name='club', options={'verbose_name': 'club', 'verbose_name_plural': 'clubs'}>, <AlterModelOptions name='emailaddress', options={'permissions': (('view_emailaddress', 'Can view a local email account object'),), 'verbose_name': 'local email account', 'verbose_name_plural': 'local email accounts'}>, <AlterModelOptions name='listright', options={'permissions': (('view_listright', 'Can view a group of rights object'),), 'verbose_name': 'group of rights', 'verbose_name_plural': 'groups of rights'}>, <AlterModelOptions name='listshell', options={'permissions': (('view_listshell', 'Can view a shell object'),), 'verbose_name': 'shell', 'verbose_name_plural': 'shells'}>, <AlterModelOptions name='school', options={'permissions': (('view_school', 'Can view a school object'),), 'verbose_name': 'school', 'verbose_name_plural': 'schools'}>, <AlterModelOptions name='serviceuser', options={'permissions': (('view_serviceuser', 'Can view a service user object'),), 'verbose_name': 'service user', 'verbose_name_plural': 'service users'}>, <AlterModelOptions name='user', options={'permissions': (('change_user_password', 'Can change the password of a user'), ('change_user_state', 'Can edit the state of a user'), ('change_user_force', 'Can force the move'), ('change_user_shell', 'Can edit the shell of a user'), ('change_user_groups', 'Can edit the groups of rights of a user (critical permission)'), ('change_all_users', 'Can edit all users, including those with rights.'), ('view_user', 'Can view a user object')), 'verbose_name': 'user (member or club)', 'verbose_name_plural': 'users (members or clubs)'}>, <AlterModelOptions name='whitelist', options={'permissions': (('view_whitelist', 'Can view a whitelist object'),), 'verbose_name': 'whitelist (free of charge access)', 'verbose_name_plural': 'whitelists (free of charge access)'}>, <AlterField model_name='adherent', name='gpg_fingerprint', field=<django.db.models.fields.CharField>>, <AlterField model_name='ban', name='state', field=<django.db.models.fields.IntegerField>>, <AlterField model_name='emailaddress', name='user', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='listright', name='unix_name', field=<django.db.models.fields.CharField>>, <AlterField model_name='request', name='type', field=<django.db.models.fields.CharField>>, <AlterField model_name='serviceuser', name='comment', field=<django.db.models.fields.CharField>>, <AlterField model_name='serviceuser', name='pseudo', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='comment', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='local_email_redirect', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='user', name='pseudo', field=<django.db.models.fields.CharField>>])
## users.migrations.0077_auto_20180824_1750 module
### class users.migrations.0077_auto_20180824_1750.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0076_auto_20180818_1321')])
#### operations( = [<AlterField model_name='user', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0078_auto_20181011_1405 module
### class users.migrations.0078_auto_20181011_1405.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0077_auto_20180824_1750')])
#### operations( = [<AlterField model_name='request', name='user', field=<django.db.models.fields.related.ForeignKey>>])
## users.migrations.0079_auto_20181228_2039 module
### class users.migrations.0079_auto_20181228_2039.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0078_auto_20181011_1405')])
#### operations( = [<AlterField model_name='adherent', name='gpg_fingerprint', field=<django.db.models.fields.CharField>>])
## users.migrations.0080_auto_20190108_1726 module
### class users.migrations.0080_auto_20190108_1726.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0079_auto_20181228_2039')])
#### operations( = [<AlterField model_name='user', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0081_auto_20190317_0302 module
### class users.migrations.0081_auto_20190317_0302.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0080_auto_20190108_1726')])
#### operations( = [<AlterField model_name='user', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0082_auto_20190908_1338 module
### class users.migrations.0082_auto_20190908_1338.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0081_auto_20190317_0302')])
#### operations( = [<SeparateDatabaseAndState state_operations=[<AlterField model_name='ldapserviceuser', name='dn', field=<ldapdb.models.fields.CharField>>, <AlterField model_name='ldapserviceusergroup', name='dn', field=<ldapdb.models.fields.CharField>>, <AlterField model_name='ldapuser', name='dn', field=<ldapdb.models.fields.CharField>>, <AlterField model_name='ldapusergroup', name='dn', field=<ldapdb.models.fields.CharField>>]>])
## users.migrations.0083_user_shortcuts_enabled module
### class users.migrations.0083_user_shortcuts_enabled.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0082_auto_20190908_1338')])
#### operations( = [<AddField model_name='user', name='shortcuts_enabled', field=<django.db.models.fields.BooleanField>>])
## users.migrations.0084_auto_20191120_0159 module
### class users.migrations.0084_auto_20191120_0159.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0083_user_shortcuts_enabled')])
#### operations( = [<AlterModelOptions name='user', options={'permissions': (('change_user_password', 'Can change the password of a user'), ('change_user_state', 'Can edit the state of a user'), ('change_user_force', 'Can force the move'), ('change_user_shell', 'Can edit the shell of a user'), ('change_user_groups', 'Can edit the groups of rights of a user (critical permission)'), ('change_all_users', 'Can edit all users, including those with rights'), ('view_user', 'Can view a user object')), 'verbose_name': 'user (member or club)', 'verbose_name_plural': 'users (members or clubs)'}>, <AlterField model_name='emailaddress', name='local_part', field=<django.db.models.fields.CharField>>, <AlterField model_name='emailaddress', name='user', field=<django.db.models.fields.related.ForeignKey>>, <AlterField model_name='listright', name='details', field=<django.db.models.fields.CharField>>, <AlterField model_name='listright', name='unix_name', field=<django.db.models.fields.CharField>>, <AlterField model_name='serviceuser', name='comment', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='comment', field=<django.db.models.fields.CharField>>, <AlterField model_name='user', name='shortcuts_enabled', field=<django.db.models.fields.BooleanField>>, <AlterField model_name='user', name='state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0085_user_email_state module
### class users.migrations.0085_user_email_state.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0084_auto_20191120_0159')])
#### flag_verified(schema_editor)
#### operations( = [<AddField model_name='user', name='email_state', field=<django.db.models.fields.IntegerField>>, <RunPython <function Migration.flag_verified>, <function Migration.undo_flag_verified>>])
#### undo_flag_verified(schema_editor)
## users.migrations.0086_user_email_change_date module
### class users.migrations.0086_user_email_change_date.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0085_user_email_state')])
#### operations( = [<AddField model_name='user', name='email_change_date', field=<django.db.models.fields.DateTimeField>>])
## users.migrations.0087_request_email module
### class users.migrations.0087_request_email.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0086_user_email_change_date')])
#### operations( = [<AddField model_name='request', name='email', field=<django.db.models.fields.EmailField>>])
## users.migrations.0088_auto_20200417_2312 module
### class users.migrations.0088_auto_20200417_2312.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0087_request_email')])
#### operations( = [<AlterField model_name='user', name='email_change_date', field=<django.db.models.fields.DateTimeField>, preserve_default=False>])
## users.migrations.0089_auto_20200418_0112 module
### class users.migrations.0089_auto_20200418_0112.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0088_auto_20200417_2312')])
#### operations( = [<AlterField model_name='user', name='email_state', field=<django.db.models.fields.IntegerField>>])
## users.migrations.0090_auto_20200421_1825 module
### class users.migrations.0090_auto_20200421_1825.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0089_auto_20200418_0112')])
#### operations( = [<AlterField model_name='user', name='email', field=<django.db.models.fields.EmailField>>])
## users.migrations.0091_auto_20200423_1256 module
### class users.migrations.0091_auto_20200423_1256.Migration(name, app_label)
Bases: `django.db.migrations.migration.Migration`
#### dependencies( = [('users', '0090_auto_20200421_1825')])
#### operations( = [<AlterModelOptions name='user', options={'permissions': (('change_user_password', 'Can change the password of a user'), ('change_user_state', 'Can edit the state of a user'), ('change_user_force', 'Can force the move'), ('change_user_shell', 'Can edit the shell of a user'), ('change_user_pseudo', 'Can edit the pseudo of a user'), ('change_user_groups', 'Can edit the groups of rights of a user (critical permission)'), ('change_all_users', 'Can edit all users, including those with rights'), ('view_user', 'Can view a user object')), 'verbose_name': 'user (member or club)', 'verbose_name_plural': 'users (members or clubs)'}>])
## users.migrations.0092_auto_20200423_1804 module
## Module contents

782
Code-Documentation/index.md

@ -1,782 +0,0 @@
<!-- Re2o documentation master file, created by
sphinx-quickstart on Sat May 16 14:17:06 2020.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive. -->
# Welcome to Re2o’s documentation!
* api package
* Submodules
* api.acl module
* api.authentication module
* api.pagination module
* api.permissions module
* api.routers module
* api.serializers module
* api.settings module
* api.tests module
* api.urls module
* api.views module
* Module contents
* cotisations package
* Subpackages
* Submodules
* cotisations.acl module
* cotisations.admin module
* cotisations.forms module
* cotisations.models module
* cotisations.test_models module
* cotisations.test_views module
* cotisations.tex module
* cotisations.urls module
* cotisations.utils module
* cotisations.validators module
* cotisations.views module
* Module contents
* cotisations.api package
* Submodules
* cotisations.api.serializers module
* cotisations.api.urls module
* cotisations.api.views module
* Module contents
* cotisations.payment_methods package
* Subpackages
* Submodules
* cotisations.payment_methods.forms module
* cotisations.payment_methods.mixins module
* cotisations.payment_methods.urls module
* Module contents
* cotisations.payment_methods.balance package
* Submodules
* cotisations.payment_methods.balance.models module
* Module contents
* cotisations.payment_methods.cheque package
* Submodules
* cotisations.payment_methods.cheque.forms module
* cotisations.payment_methods.cheque.models module
* cotisations.payment_methods.cheque.urls module
* cotisations.payment_methods.cheque.views module
* Module contents
* cotisations.payment_methods.comnpay package
* Submodules
* cotisations.payment_methods.comnpay.comnpay module
* cotisations.payment_methods.comnpay.models module
* cotisations.payment_methods.comnpay.urls module
* cotisations.payment_methods.comnpay.views module
* Module contents
* cotisations.payment_methods.free package
* Submodules
* cotisations.payment_methods.free.models module
* Module contents
* cotisations.payment_methods.note_kfet package
* Submodules
* cotisations.payment_methods.note_kfet.forms module
* cotisations.payment_methods.note_kfet.models module
* cotisations.payment_methods.note_kfet.note module
* cotisations.payment_methods.note_kfet.urls module
* cotisations.payment_methods.note_kfet.views module
* Module contents
* deployments package
* Submodules
* deployments.admin module
* deployments.apps module
* deployments.forms module
* deployments.models module
* deployments.tests module
* deployments.urls module
* deployments.views module
* Module contents
* logs package
* Subpackages
* Submodules
* logs.acl module
* logs.forms module
* logs.models module
* logs.tests module
* logs.urls module
* logs.views module
* Module contents
* logs.templatetags package
* Submodules
* logs.templatetags.logs_extra module
* Module contents
* machines package
* Subpackages
* Submodules
* machines.acl module
* machines.admin module
* machines.forms module
* machines.models module
* machines.tests module
* machines.urls module
* machines.views module
* Module contents
* machines.api package
* Submodules
* machines.api.serializers module
* machines.api.urls module
* machines.api.views module
* Module contents
* manage module
* manager package
* Submodules
* manager.defaults module
* manager.logger module
* manager.requirements module
* Module contents
* multi_op package
* Submodules
* multi_op.apps module
* multi_op.forms module
* multi_op.tests module
* multi_op.urls module
* multi_op.views module
* Module contents
* preferences package
* Subpackages
* Submodules
* preferences.acl module
* preferences.admin module
* preferences.forms module
* preferences.models module
* preferences.tests module
* preferences.urls module
* preferences.views module
* Module contents
* preferences.api package
* Submodules
* preferences.api.serializers module
* preferences.api.urls module
* preferences.api.views module
* Module contents
* preferences.templatetags package
* Module contents
* re2o package
* Subpackages
* Submodules
* re2o.acl module
* re2o.aes_field module
* re2o.base module
* re2o.context_processors module
* re2o.contributors module
* re2o.field_permissions module
* re2o.login module
* re2o.mail_utils module
* re2o.middleware module
* re2o.mixins module
* re2o.script_utils module
* re2o.settings module
* re2o.settings_local module
* re2o.settings_local module
* re2o.urls module
* re2o.utils module
* re2o.views module
* re2o.wsgi module
* Module contents
* re2o.management package
* Subpackages
* Module contents
* re2o.management.commands package
* Submodules
* re2o.management.commands.gen_contrib module
* Module contents
* re2o.templatetags package
* Submodules
* re2o.templatetags.acl module
* re2o.templatetags.design module
* re2o.templatetags.massive_bootstrap_form module
* re2o.templatetags.pagination_extra module
* re2o.templatetags.self_adhesion module
* re2o.templatetags.url_insert_param module
* Module contents
* search package
* Submodules
* search.acl module
* search.admin module
* search.engine module
* search.forms module
* search.tests module
* search.urls module
* search.views module
* Module contents
* test_utils package
* Submodules
* test_utils.runner module
* Module contents
* tickets package
* Subpackages
* Submodules
* tickets.admin module
* tickets.apps module
* tickets.forms module
* tickets.models module
* tickets.tests module
* tickets.urls module
* tickets.views module
* Module contents
* tickets.preferences package
* Submodules
* tickets.preferences.forms module
* tickets.preferences.models module
* tickets.preferences.views module
* Module contents
* topologie package
* Subpackages
* Submodules
* topologie.acl module
* topologie.admin module
* topologie.forms module
* topologie.models module
* topologie.tests module
* topologie.urls module
* topologie.views module
* Module contents
* topologie.api package
* Submodules
* topologie.api.serializers module
* topologie.api.urls module
* topologie.api.views module
* Module contents
* users package
* Subpackages
* Submodules
* users.acl module
* users.admin module
* users.forms module
* users.models module
* users.test_models module
* users.tests module
* users.urls module
* users.views module
* users.widgets module
* Module contents
* users.api package
* Submodules
* users.api.serializers module
* users.api.urls module
* users.api.views module
* Module contents
I collected the files with
```
sphinx-apidoc -o source/autodoc/ -f /var/www/re2o/ ../*/migrations/*
```
Then
```
make markdown
```
# Indices and tables
* Index
* Module Index
* Search Page

6
Dev-Documentation/Use-emails-for-dev.md

@ -0,0 +1,6 @@
When developping you might want to use functions that send emails. In order to prevent re2o from spamming users, you might find this settings (to be put in `re2o/settings_local.py`) useful :
```python
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
```
See [here](https://docs.djangoproject.com/en/3.0/topics/email/#dummy-backend) for details.

1
home.md

@ -25,6 +25,7 @@ You are now on the project's wiki where it is intendend to found all the documen
* [Fix id issues with PostgreSQL](Dev Documentation/Fix id issues with postgresql)
* [Creating an Optionnal App](Dev Documentation/Apps Optionnelles)
* [Translation](Dev Documentation/Translation)
* [Emails for dev](Dev Documentation/Use emails for dev)
# How to migrate to Re2o
* [Manage legacy passwords](Admin Documentation/Migration)

Loading…
Cancel
Save