From 952701c181b321e15f3d2e860a146c51c8afe976 Mon Sep 17 00:00:00 2001 From: Hugo Levy-Falk Date: Sat, 16 May 2020 17:51:50 +0200 Subject: [PATCH] Added code documentation. --- Code-Documentation/autodoc/api.md | 696 +++ Code-Documentation/autodoc/cotisations.api.md | 293 ++ Code-Documentation/autodoc/cotisations.md | 1759 ++++++++ .../autodoc/cotisations.migrations.md | 439 ++ .../cotisations.payment_methods.balance.md | 83 + .../cotisations.payment_methods.cheque.md | 89 + .../cotisations.payment_methods.comnpay.md | 126 + .../cotisations.payment_methods.free.md | 57 + .../autodoc/cotisations.payment_methods.md | 335 ++ .../cotisations.payment_methods.note_kfet.md | 107 + Code-Documentation/autodoc/deployments.md | 25 + .../autodoc/deployments.migrations.md | 27 + Code-Documentation/autodoc/logs.md | 364 ++ .../autodoc/logs.templatetags.md | 36 + Code-Documentation/autodoc/machines.api.md | 1260 ++++++ Code-Documentation/autodoc/machines.md | 3924 +++++++++++++++++ .../autodoc/machines.migrations.md | 1087 +++++ Code-Documentation/autodoc/manage.md | 1 + Code-Documentation/autodoc/manager.md | 13 + Code-Documentation/autodoc/modules.md | 1936 ++++++++ Code-Documentation/autodoc/multi_op.md | 40 + Code-Documentation/autodoc/preferences.api.md | 355 ++ Code-Documentation/autodoc/preferences.md | 2117 +++++++++ .../autodoc/preferences.migrations.md | 855 ++++ .../autodoc/preferences.templatetags.md | 3 + .../autodoc/re2o.management.commands.md | 23 + Code-Documentation/autodoc/re2o.management.md | 18 + Code-Documentation/autodoc/re2o.md | 989 +++++ .../autodoc/re2o.templatetags.md | 582 +++ Code-Documentation/autodoc/search.md | 183 + Code-Documentation/autodoc/test_utils.md | 7 + Code-Documentation/autodoc/tickets.md | 46 + .../autodoc/tickets.migrations.md | 77 + .../autodoc/tickets.preferences.md | 14 + Code-Documentation/autodoc/topologie.api.md | 537 +++ Code-Documentation/autodoc/topologie.md | 2161 +++++++++ .../autodoc/topologie.migrations.md | 799 ++++ Code-Documentation/autodoc/users.api.md | 601 +++ Code-Documentation/autodoc/users.md | 3243 ++++++++++++++ .../autodoc/users.migrations.md | 971 ++++ Code-Documentation/index.md | 782 ++++ 41 files changed, 27060 insertions(+) create mode 100644 Code-Documentation/autodoc/api.md create mode 100644 Code-Documentation/autodoc/cotisations.api.md create mode 100644 Code-Documentation/autodoc/cotisations.md create mode 100644 Code-Documentation/autodoc/cotisations.migrations.md create mode 100644 Code-Documentation/autodoc/cotisations.payment_methods.balance.md create mode 100644 Code-Documentation/autodoc/cotisations.payment_methods.cheque.md create mode 100644 Code-Documentation/autodoc/cotisations.payment_methods.comnpay.md create mode 100644 Code-Documentation/autodoc/cotisations.payment_methods.free.md create mode 100644 Code-Documentation/autodoc/cotisations.payment_methods.md create mode 100644 Code-Documentation/autodoc/cotisations.payment_methods.note_kfet.md create mode 100644 Code-Documentation/autodoc/deployments.md create mode 100644 Code-Documentation/autodoc/deployments.migrations.md create mode 100644 Code-Documentation/autodoc/logs.md create mode 100644 Code-Documentation/autodoc/logs.templatetags.md create mode 100644 Code-Documentation/autodoc/machines.api.md create mode 100644 Code-Documentation/autodoc/machines.md create mode 100644 Code-Documentation/autodoc/machines.migrations.md create mode 100644 Code-Documentation/autodoc/manage.md create mode 100644 Code-Documentation/autodoc/manager.md create mode 100644 Code-Documentation/autodoc/modules.md create mode 100644 Code-Documentation/autodoc/multi_op.md create mode 100644 Code-Documentation/autodoc/preferences.api.md create mode 100644 Code-Documentation/autodoc/preferences.md create mode 100644 Code-Documentation/autodoc/preferences.migrations.md create mode 100644 Code-Documentation/autodoc/preferences.templatetags.md create mode 100644 Code-Documentation/autodoc/re2o.management.commands.md create mode 100644 Code-Documentation/autodoc/re2o.management.md create mode 100644 Code-Documentation/autodoc/re2o.md create mode 100644 Code-Documentation/autodoc/re2o.templatetags.md create mode 100644 Code-Documentation/autodoc/search.md create mode 100644 Code-Documentation/autodoc/test_utils.md create mode 100644 Code-Documentation/autodoc/tickets.md create mode 100644 Code-Documentation/autodoc/tickets.migrations.md create mode 100644 Code-Documentation/autodoc/tickets.preferences.md create mode 100644 Code-Documentation/autodoc/topologie.api.md create mode 100644 Code-Documentation/autodoc/topologie.md create mode 100644 Code-Documentation/autodoc/topologie.migrations.md create mode 100644 Code-Documentation/autodoc/users.api.md create mode 100644 Code-Documentation/autodoc/users.md create mode 100644 Code-Documentation/autodoc/users.migrations.md create mode 100644 Code-Documentation/index.md diff --git a/Code-Documentation/autodoc/api.md b/Code-Documentation/autodoc/api.md new file mode 100644 index 0000000..7d231a7 --- /dev/null +++ b/Code-Documentation/autodoc/api.md @@ -0,0 +1,696 @@ +# 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': [, >], 'HEAD': [, >], 'OPTIONS': [, >], 'PATCH': [], 'POST': [, >], 'PUT': []}) + +#### perms_obj_map( = {'DELETE': [, >], 'GET': [, >], 'HEAD': [, >], 'OPTIONS': [, >], 'PATCH': [, >], 'POST': [], 'PUT': [, >]}) + +### 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=, \*\*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 diff --git a/Code-Documentation/autodoc/cotisations.api.md b/Code-Documentation/autodoc/cotisations.api.md new file mode 100644 index 0000000..9640588 --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.api.md @@ -0,0 +1,293 @@ +# cotisations.api package + +## Submodules + +## cotisations.api.serializers module + + +### class cotisations.api.serializers.ArticleSerializer(instance=None, data=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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( = ) + +#### 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( = ) + +#### 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( = ) + +#### 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( = ) + +#### 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( = ) + +#### 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( = ) + +#### 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( = ) + +#### serializer_class() +alias of `cotisations.api.serializers.VenteSerializer` + + +#### suffix( = None) +## Module contents diff --git a/Code-Documentation/autodoc/cotisations.md b/Code-Documentation/autodoc/cotisations.md new file mode 100644 index 0000000..9fdcb7e --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.md @@ -0,0 +1,1759 @@ +# cotisations package + +## Subpackages + + +* cotisations.api package + + + * Submodules + + + * cotisations.api.serializers module + + + * cotisations.api.urls module + + + * cotisations.api.views module + + + * Module contents + + +* 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 + + + * cotisations.payment_methods.mixins module + + + * cotisations.payment_methods.urls module + + + * Module contents + + + * ] + + +## Submodules + +## cotisations.acl module + +cotisations.acl + +Here are defined some functions to check acl on the application. + + +### cotisations.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). + + +## cotisations.admin module + +cotisations.admin +The objects, fields and datastructures visible in the Django admin view + + +### class cotisations.admin.ArticleAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin d’un article en vente + + +#### property media() + +### class cotisations.admin.BanqueAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin de la liste des banques (facture related) + + +#### property media() + +### class cotisations.admin.CostEstimateAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin class for cost estimates. + + +#### property media() + +### class cotisations.admin.CotisationAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin d’une cotisation (date de debut et de fin), +Vente related + + +#### property media() + +### class cotisations.admin.CustomInvoiceAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin class for custom invoices. + + +#### property media() + +### class cotisations.admin.FactureAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin d’une facture, tous les champs + + +#### property media() + +### class cotisations.admin.PaiementAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin d’un moyen de paiement (facture related + + +#### property media() + +### class cotisations.admin.VenteAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin d’une vente, tous les champs (facture related) + + +#### property media() +## cotisations.forms module + +Forms for the ‘cotisation’ app of re2o. It highly depends on +:cotisations:models and is mainly used by :cotisations:views. + +The following forms are mainly used to create, edit or delete +anything related to ‘cotisations’ : + +> +> * Payments Methods + + +> * Banks + + +> * Invoices + + +> * Articles + +See the details for each of these operations in the documentation +of each of the method. + + +### class cotisations.forms.ArticleForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to create an article. + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `cotisations.models.Article` + + +#### base_fields( = {'available_for_everyone': , 'duration': , 'duration_days': , 'name': , 'prix': , 'type_cotisation': , 'type_user': }) + +#### declared_fields( = {}) + +#### property media() + +### class cotisations.forms.BanqueForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to create a bank. + + +#### class Meta() +Bases: `object` + + +#### fields( = ['name']) + +#### model() +alias of `cotisations.models.Banque` + + +#### base_fields( = {'name': }) + +#### declared_fields( = {}) + +#### property media() + +### class cotisations.forms.CostEstimateForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to create a cost estimate. + + +#### class Meta() +Bases: `object` + + +#### exclude( = ['paid', 'final_invoice']) + +#### model() +alias of `cotisations.models.CostEstimate` + + +#### base_fields( = {'address': , 'payment': , 'recipient': , 'remark': , 'validity': }) + +#### declared_fields( = {}) + +#### property media() + +### class cotisations.forms.CustomInvoiceForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to create a custom invoice. + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `cotisations.models.CustomInvoice` + + +#### base_fields( = {'address': , 'paid': , 'payment': , 'recipient': , 'remark': }) + +#### declared_fields( = {}) + +#### property media() + +### class cotisations.forms.DelArticleForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Form used to delete one or more of the currently available articles. +The user must choose the one to delete by checking the boxes. + + +#### base_fields( = {'articles': }) + +#### declared_fields( = {'articles': }) + +#### property media() + +### class cotisations.forms.DelBanqueForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Form used to delete one or more banks. +The use must choose the one to delete by checking the boxes. + + +#### base_fields( = {'banques': }) + +#### declared_fields( = {'banques': }) + +#### property media() + +### class cotisations.forms.DelPaiementForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Form used to delete one or more payment methods. +The user must choose the one to delete by checking the boxes. + + +#### base_fields( = {'paiements': }) + +#### declared_fields( = {'paiements': }) + +#### property media() + +### class cotisations.forms.DiscountForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=, label_suffix=None, empty_permitted=False, field_order=None, use_required_attribute=None, renderer=None) +Bases: `django.forms.forms.Form` + +Form used in oder to create a discount on an invoice. + + +#### apply_to_invoice(invoice) + +#### base_fields( = {'discount': , 'is_relative': }) + +#### declared_fields( = {'discount': , 'is_relative': }) + +#### property media() + +### class cotisations.forms.FactureForm(\*args, creation=False, \*\*kwargs) +Bases: `re2o.field_permissions.FieldPermissionFormMixin`, `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to manage and create an invoice and its fields. + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `cotisations.models.Facture` + + +#### base_fields( = {'banque': , 'cheque': , 'control': , 'paiement': , 'user': , 'valid': }) + +#### clean() +Hook for doing any extra form-wide cleaning after Field.clean() has been +called on every field. Any ValidationError raised by this method will +not be associated with a particular field; it will have a special-case +association with the field named ‘__all__’. + + +#### declared_fields( = {}) + +#### property media() + +### class cotisations.forms.PaiementForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to create a new payment method. +The ‘cheque’ type is used to associate a specific behaviour requiring +a cheque number and a bank. + + +#### class Meta() +Bases: `object` + + +#### fields( = ['moyen', 'available_for_everyone']) + +#### model() +alias of `cotisations.models.Paiement` + + +#### base_fields( = {'available_for_everyone': , 'moyen': }) + +#### declared_fields( = {}) + +#### property media() + +### class cotisations.forms.RechargeForm(\*args, user=None, user_source=None, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Form used to refill a user’s balance + + +#### base_fields( = {'payment': , 'value': }) + +#### clean() +Returns a cleaned value from the received form by validating +the value is well inside the possible limits + + +#### declared_fields( = {'payment': , 'value': }) + +#### property media() + +### class cotisations.forms.SelectArticleForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Form used to select an article during the creation of an invoice for a +member. + + +#### base_fields( = {'article': , 'quantity': }) + +#### declared_fields( = {'article': , 'quantity': }) + +#### property media() +## cotisations.models module + +The database models for the ‘cotisation’ app of re2o. +The goal is to keep the main actions here, i.e. the ‘clean’ and ‘save’ +function are higly reposnsible for the changes, checking the coherence of the +data and the good behaviour in general for not breaking the database. + +For further details on each of those models, see the documentation details for +each. + + +### class cotisations.models.Article(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +The definition of an article model. It represents a type of object +that can be sold to the user. + +It’s represented by: + + + * a name + + + * a price + + + * a cotisation type (indicating if this article reprensents a + + cotisation or not) + + + * a duration (if it is a cotisation) + + + * a type of user (indicating what kind of user can buy this article) + + +#### COTISATION_TYPE( = (('Connexion', 'Connection'), ('Adhesion', 'Membership'), ('All', 'Both of them'))) + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### USER_TYPES( = (('Adherent', 'Member'), ('Club', 'Club'), ('All', 'Both of them'))) + +#### available_for_everyone() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### can_buy_article(user, \*_args, \*\*_kwargs) +Check if a user can buy this article. + + +* **Parameters** + + + * **self** – The article + + + * **user** – The user requesting buying + + + +* **Returns** + + A boolean stating if usage is granted and an explanation + message if the boolean is False. + + + +#### clean() +Hook for doing any extra model-wide validation after clean() has been +called on every field by self.clean_fields. Any ValidationError raised +by this method will not be associated with a particular field; it will +have a special-case association with the field defined by NON_FIELD_ERRORS. + + +#### duration() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### duration_days() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### classmethod find_allowed_articles(user, target_user) +Finds every allowed articles for an user, on a target user. + + +* **Parameters** + + + * **user** – The user requesting articles. + + + * **target_user** – The user to sell articles + + + +#### get_type_cotisation_display(\*\*morekwargs) + +#### get_type_user_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### prix() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### type_cotisation() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### type_user() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unique_together( = ('name', 'type_user')) + +### class cotisations.models.Banque(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +The model defining a bank. It represents a user’s bank. It’s mainly used +for statistics by regrouping the user under their bank’s name and avoid +the use of a simple name which leads (by experience) to duplicates that +only differs by a capital letter, a space, a misspelling, … That’s why +it’s easier to use simple object for the banks. + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### facture_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +### class cotisations.models.BaseInvoice(id, date) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `re2o.field_permissions.FieldPermissionModelMixin`, `django.db.models.base.Model` + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### custominvoice() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### date() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### facture() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### get_next_by_date(\*\*morekwargs) + +#### get_previous_by_date(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +Returns : a string with the name of all the articles in the invoice. +Used for reprensenting the invoice with a string. + + +#### objects( = ) + +#### prix() +Returns: the raw price without the quantities. +Deprecated, use :total_price instead. + + +#### prix_total() +Returns: the total price for an invoice. Sum all the articles’ prices +and take the quantities into account. + + +#### vente_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +### class cotisations.models.CostEstimate(id, date, baseinvoice_ptr, recipient, payment, address, paid, remark, custominvoice_ptr, validity, final_invoice) +Bases: `cotisations.models.CustomInvoice` + + +#### exception DoesNotExist() +Bases: `cotisations.models.DoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `cotisations.models.MultipleObjectsReturned` + + +#### 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 + + +#### create_invoice() +Create a CustomInvoice from the CostEstimate. + + +#### custominvoice_ptr() +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. + + +#### custominvoice_ptr_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### final_invoice() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### final_invoice_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### validity() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class cotisations.models.Cotisation(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +The model defining a cotisation. It holds information about the time a user +is allowed when he has paid something. +It characterised by : + +> +> * a date_start (the date when the cotisaiton begins/began + + +> * a date_end (the date when the cotisation ends/ended + + +> * a type of cotisation (which indicates the implication of such + +> cotisation) + + +> * a purchase (the related objects this cotisation is linked to) + + +#### COTISATION_TYPE( = (('Connexion', 'Connection'), ('Adhesion', 'Membership'), ('All', 'Both of them'))) + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### 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 + + +#### date_end() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### date_start() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_next_by_date_end(\*\*morekwargs) + +#### get_next_by_date_start(\*\*morekwargs) + +#### get_previous_by_date_end(\*\*morekwargs) + +#### get_previous_by_date_start(\*\*morekwargs) + +#### get_type_cotisation_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### type_cotisation() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### vente() +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. + + +#### vente_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class cotisations.models.CustomInvoice(id, date, baseinvoice_ptr, recipient, payment, address, paid, remark) +Bases: `cotisations.models.BaseInvoice` + + +#### exception DoesNotExist() +Bases: `cotisations.models.DoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `cotisations.models.MultipleObjectsReturned` + + +#### address() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### baseinvoice_ptr() +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. + + +#### baseinvoice_ptr_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### costestimate() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### objects( = ) + +#### origin_cost_estimate() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### paid() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### payment() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### recipient() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### remark() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class cotisations.models.Facture(\*args, \*\*kwargs) +Bases: `cotisations.models.BaseInvoice` + +The model for an invoice. It reprensents the fact that a user paid for +something (it can be multiple article paid at once). + +An invoice is linked to : + + + * one or more purchases (one for each article sold that time) + + + * a user (the one who bought those articles) + + + * a payment method (the one used by the user) + + + * (if applicable) a bank + + + * (if applicable) a cheque number. + +Every invoice is dated throught the ‘date’ value. +An invoice has a ‘controlled’ value (default : False) which means that +someone with high enough rights has controlled that invoice and taken it +into account. It also has a ‘valid’ value (default : True) which means +that someone with high enough rights has decided that this invoice was not +valid (thus it’s like the user never paid for his articles). It may be +necessary in case of non-payment. + + +#### exception DoesNotExist() +Bases: `cotisations.models.DoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `cotisations.models.MultipleObjectsReturned` + + +#### banque() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### banque_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### baseinvoice_ptr() +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. + + +#### baseinvoice_ptr_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### static can_change_control(user_request, \*_args, \*\*_kwargs) +Returns True if the user can change the ‘controlled’ status of +this invoice + + +#### static can_create(user_request, \*_args, \*\*_kwargs) +Check if a user can create an invoice. + + +* **Parameters** + + **user_request** – The user who wants to create an invoice. + + + +* **Returns** + + a message and a boolean which is True if the user can create + an invoice or if the options.allow_self_subscription is set. + + + +#### 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 + + +#### cheque() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### control() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_subscription() +Returns every subscription associated with this invoice. + + +#### is_subscription() +Returns True if this invoice contains at least one subscribtion. + + +#### linked_objects() +Return linked objects : machine and domain. +Usefull in history display + + +#### objects( = ) + +#### paiement() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### paiement_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### reorder_purchases() + +#### save(\*args, \*\*kwargs) +Creates a version of this object and save it to database + + +#### user() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### user_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### valid() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class cotisations.models.Paiement(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +The model defining a payment method. It is how the user is paying for the +invoice. It’s easier to know this information when doing the accouts. +It is represented by: + +> +> * a name + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### available_for_everyone() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### can_use_payment(user, \*_args, \*\*_kwargs) +Check if a user can use this payment. + + +* **Parameters** + + + * **self** – The payment + + + * **user** – The user requesting usage + + + +* **Returns** + + A boolean stating if usage is granted and an explanation + message if the boolean is False. + + + +#### clean() +l +Override of the herited clean function to get a correct name + + +#### end_payment(invoice, request, use_payment_method=True) +The general way of ending a payment. + + +* **Parameters** + + + * **invoice** – The invoice being created. + + + * **request** – Request sent by the user. + + + * **use_payment_method** – If this flag is set to True and\`self\` has + an attribute payment_method, returns the result of + self.payment_method.end_payment(invoice, request) + + + +* **Returns** + + An HttpResponse-like object. + + + +#### facture_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### classmethod find_allowed_payments(user) +Finds every allowed payments for an user. + + +* **Parameters** + + **user** – The user requesting payment methods. + + + +#### get_payment_method_name() + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### is_balance() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### moyen() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### payment_method_balance() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### payment_method_cheque() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### payment_method_comnpay() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### payment_method_free() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### payment_method_note() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +### class cotisations.models.Vente(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +The model defining a purchase. It consist of one type of article being +sold. In particular there may be multiple purchases in a single invoice. + +It’s reprensentated by: + + + * an amount (the number of items sold) + + + * an invoice (whose the purchase is part of) + + + * an article + + + * (if applicable) a cotisation (which holds some informations about + + the effect of the purchase on the time agreed for this user) + + +#### COTISATION_TYPE( = (('Connexion', 'Connection'), ('Adhesion', 'Membership'), ('All', 'Both of them'))) + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### 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 + + +#### cotisation() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### create_cotis(date_start=False) +Creates a cotisation without initializing the dates (start and end ar set to self.facture.facture.date) and without saving it. You should use Facture.reorder_purchases to set the right dates. + + +#### duration() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### duration_days() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### facture() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### facture_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_type_cotisation_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### number() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### prix() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### prix_total() +Returns: the total of price for this amount of items. + + +#### save(\*args, \*\*kwargs) +Save a purchase object and check if all the fields are coherents +It also update the associated cotisation in the changes have some +effect on the user’s cotisation + + +#### type_cotisation() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### update_cotisation() +Update the related object ‘cotisation’ if there is one. Based on the +duration of the purchase. + + +### cotisations.models.cotisation_post_delete(\*\*_kwargs) +Mark some services as needing a regeneration after the deletion of a +cotisation. Indeed the membership status may have changed. + + +### cotisations.models.cotisation_post_save(\*\*_kwargs) +Mark some services as needing a regeneration after the edition of a +cotisation. Indeed the membership status may have changed. + + +### cotisations.models.facture_post_delete(\*\*kwargs) +Synchronise the LDAP user after an invoice has been deleted. + + +### cotisations.models.facture_post_save(\*\*kwargs) +Synchronise the LDAP user after an invoice has been saved. + + +### cotisations.models.vente_post_delete(\*\*kwargs) +Synchronise the LDAP user after a purchase has been deleted. + + +### cotisations.models.vente_post_save(\*\*kwargs) +Creates a ‘cotisation’ related object if needed and synchronise the +LDAP user when a purchase has been saved. + +## cotisations.test_models module + + +### class cotisations.test_models.FactureModelTests(methodName='runTest') +Bases: `django.test.testcases.TestCase` + + +#### setUp() +Hook method for setting up the test fixture before exercising it. + + +#### tearDown() +Hook method for deconstructing the test fixture after testing it. + + +#### test_cotisations_prolongation() +When user already have one valid cotisation, the new one should be +added at the end of the existing one. + + +### class cotisations.test_models.VenteModelTests(methodName='runTest') +Bases: `django.test.testcases.TestCase` + + +#### setUp() +Hook method for setting up the test fixture before exercising it. + + +#### tearDown() +Hook method for deconstructing the test fixture after testing it. + + +#### test_date_start_cotisation() +It should be possible to add a cotisation with a specific start date + + +#### test_one_day_cotisation() +It should be possible to have one day membership. + + +#### test_one_month_and_one_week_cotisation() +It should be possible to have one day membership. + + +#### test_one_month_cotisation() +It should be possible to have one day membership. + +## cotisations.test_views module + + +### class cotisations.test_views.NewFactureTests(methodName='runTest') +Bases: `django.test.testcases.TestCase` + + +#### setUp() +Hook method for setting up the test fixture before exercising it. + + +#### tearDown() +Hook method for deconstructing the test fixture after testing it. + + +#### test_invoice_with_one_day() + +#### test_invoice_with_one_month() + +#### test_invoice_with_one_month_and_one_week() + +#### test_several_articles_creates_several_purchases() +## cotisations.tex module + +tex.py +Module in charge of rendering some LaTex templates. +Used to generated PDF invoice. + + +### cotisations.tex.create_pdf(template, ctx={}) +Creates and returns a PDF from a LaTeX template using pdflatex. + +It create a temporary file for the PDF then read it to return its content. + + +* **Parameters** + + + * **template** – Path to the LaTeX template. + + + * **ctx** – Dict with the context for rendering the template. + + + +* **Returns** + + The content of the temporary PDF file generated. + + + +### cotisations.tex.escape_chars(string) +Escape the ‘%’ and the ‘€’ signs to avoid messing with LaTeX + + +### cotisations.tex.render_invoice(_request, ctx={}) +Render an invoice using some available information such as the current +date, the user, the articles, the prices, … + + +### cotisations.tex.render_tex(_request, template, ctx={}) +Creates a PDF from a LaTex templates using pdflatex. + +Calls create_pdf and send back an HTTP response for +accessing this file. + + +* **Parameters** + + + * **_request** – Unused, but allow using this function as a Django view. + + + * **template** – Path to the LaTeX template. + + + * **ctx** – Dict with the context for rendering the template. + + + +* **Returns** + + An HttpResponse with type application/pdf containing the PDF file. + + + +### cotisations.tex.render_voucher(_request, ctx={}) +Render a subscribtion voucher. + +## cotisations.urls module + +cotisations.urls +The defined URLs for the Cotisations app + +## cotisations.utils module + + +### cotisations.utils.find_payment_method(payment) +Finds the payment method associated to the payment if it exists. + + +### cotisations.utils.send_mail_invoice(invoice, request=None) +Creates the pdf of the invoice and sends it by email to the client + + +### cotisations.utils.send_mail_voucher(invoice, request=None) +Creates a voucher from an invoice and sends it by email to the client + +## cotisations.validators module + + +### cotisations.validators.check_no_balance(is_balance) +This functions checks that no Paiement with is_balance=True exists + + +* **Parameters** + + **is_balance** – True if the model is balance. + + + +* **Raises** + + **ValidationError** – if such a Paiement exists. + + +## cotisations.views module + +cotisations.views +The different views used in the Cotisations module + +## Module contents + +cotisations +The app in charge of all the members’s cotisations diff --git a/Code-Documentation/autodoc/cotisations.migrations.md b/Code-Documentation/autodoc/cotisations.migrations.md new file mode 100644 index 0000000..6f8a6f0 --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.migrations.md @@ -0,0 +1,439 @@ +# 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( = [), ('name', ), ('prix', )]>, ), ('name', )]>, ), ('cheque', ), ('number', ), ('date', ), ('name', ), ('prix', ), ('article', ), ('banque', )]>, ), ('moyen', )]>, >, >]) +## 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( = []) +## 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( = [>]) +## 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( = [>, >]) +## 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( = [>]) +## 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( = [>, >]) +## 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( = [, preserve_default=False>, , 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( = [), ('date_start', ), ('date_end', )]>, , preserve_default=False>, >, >, >, >]) +## 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( = []) +## 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( = [, >]) +## 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( = [>]) +## 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( = [>]) +## 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( = [), ('name', ), ('prix', ), ('cotisation', ), ('duration', )]>, , , >]) +## 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( = [, , 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( = [>, >, >, >]) +## 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( = [, , , , 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( = [>, >]) +## 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( = [, 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( = [>]) +## 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( = [>]) +## 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( = [>]) +## 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( = [>]) +## 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( = [>]) +## 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( = [>, >]) +## 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( = [>]) +## 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( = [>, >, >, , >, , ]) + +### 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( = [>]) +## 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( = [, , , , , ]) +## 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( = [, , , , , , >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## 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( = [, , >, >, >, ), ('payment', )], bases=(, ), options={'verbose_name': 'Cheque'}>, ), ('payment_credential', ), ('payment_pass', ), ('payment', ), ('minimum_payment', )], bases=(, ), options={'verbose_name': 'ComNpay'}>, ), ('minimum_balance', ), ('payment', ), ('maximum_balance', ), ('credit_balance_allowed', )], bases=(, ), options={'verbose_name': 'User Balance'}>, >, >, >, ]) + +### 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( = [>]) +## 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( = [), ('date', )], bases=(, , , )>, ), ('recipient', ), ('payment', ), ('address', ), ('paid', )], bases=('cotisations.baseinvoice',), options={'permissions': (('view_custominvoice', 'Can view a custom invoice'),)}>, , preserve_default=False>, >, >, , , >, >, ]) + +### 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( = [, , , , , , , , >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## 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( = [>]) +## 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( = [), ('server', ), ('port', ), ('id_note', ), ('payment', )], options={'verbose_name': 'NoteKfet'}, bases=(, )>]) +## 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( = [>]) +## 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( = [), ('validity', ), ('final_invoice', )], 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( = [>, >, >]) +## 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( = [), ('payment', )], options={'verbose_name': 'Free payment'}, bases=(, )>]) +## 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( = [>, >]) +## 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( = [>, >, >, >, >]) +## 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( = [, >, >, >, >, >, >, >, >, >, >, >, >]) +## Module contents diff --git a/Code-Documentation/autodoc/cotisations.payment_methods.balance.md b/Code-Documentation/autodoc/cotisations.payment_methods.balance.md new file mode 100644 index 0000000..4c6ee06 --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.payment_methods.balance.md @@ -0,0 +1,83 @@ +# 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( = ) + +#### 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. diff --git a/Code-Documentation/autodoc/cotisations.payment_methods.cheque.md b/Code-Documentation/autodoc/cotisations.payment_methods.cheque.md new file mode 100644 index 0000000..a06db1e --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.payment_methods.cheque.md @@ -0,0 +1,89 @@ +# 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=, 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': , 'cheque': }) + +#### 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( = ) + +#### 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. diff --git a/Code-Documentation/autodoc/cotisations.payment_methods.comnpay.md b/Code-Documentation/autodoc/cotisations.payment_methods.comnpay.md new file mode 100644 index 0000000..bcd0071 --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.payment_methods.comnpay.md @@ -0,0 +1,126 @@ +# 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( = ) + +#### 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. diff --git a/Code-Documentation/autodoc/cotisations.payment_methods.free.md b/Code-Documentation/autodoc/cotisations.payment_methods.free.md new file mode 100644 index 0000000..b21d0ad --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.payment_methods.free.md @@ -0,0 +1,57 @@ +# 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( = ) + +#### 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. diff --git a/Code-Documentation/autodoc/cotisations.payment_methods.md b/Code-Documentation/autodoc/cotisations.payment_methods.md new file mode 100644 index 0000000..ccc6f42 --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.payment_methods.md @@ -0,0 +1,335 @@ +# 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': }) + +#### 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': }) + +#### 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. diff --git a/Code-Documentation/autodoc/cotisations.payment_methods.note_kfet.md b/Code-Documentation/autodoc/cotisations.payment_methods.note_kfet.md new file mode 100644 index 0000000..aeea91b --- /dev/null +++ b/Code-Documentation/autodoc/cotisations.payment_methods.note_kfet.md @@ -0,0 +1,107 @@ +# 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=, 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': , 'password': }) + +#### declared_fields( = {'login': , 'password': }) + +#### 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( = ) + +#### 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. diff --git a/Code-Documentation/autodoc/deployments.md b/Code-Documentation/autodoc/deployments.md new file mode 100644 index 0000000..56cd075 --- /dev/null +++ b/Code-Documentation/autodoc/deployments.md @@ -0,0 +1,25 @@ +# 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 diff --git a/Code-Documentation/autodoc/deployments.migrations.md b/Code-Documentation/autodoc/deployments.migrations.md new file mode 100644 index 0000000..b11a11f --- /dev/null +++ b/Code-Documentation/autodoc/deployments.migrations.md @@ -0,0 +1,27 @@ +# 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( = [), ('machine', )], bases=(, , )>, ), ('name', ), ('_value', ), ('object_id', ), ('update_required', ), ('content_type', )], bases=(, , )>, ), ('name', ), ('value', ), ('default_value', ), ('dynamic_field', ), ('content_type', )], bases=(, , )>, ), ('compagnon_url', )], bases=(, , )>, ), ('name', ), ('description', )], bases=(, , )>, >, >, >]) +## 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( = [), ('compagnon_url', )], bases=(, , )>, ]) +## Module contents diff --git a/Code-Documentation/autodoc/logs.md b/Code-Documentation/autodoc/logs.md new file mode 100644 index 0000000..3f53d05 --- /dev/null +++ b/Code-Documentation/autodoc/logs.md @@ -0,0 +1,364 @@ +# 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': , 's': , 't': , 'u': }) + +#### declared_fields( = {'e': , 's': , 't': , 'u': }) + +#### property media() + +### class logs.forms.MachineHistorySearchForm(\*args, \*\*kwargs) +Bases: `django.forms.forms.Form` + +The form for a simple search + + +#### base_fields( = {'e': , 'q': , 's': , 't': }) + +#### declared_fields( = {'e': , 'q': , 's': , 't': }) + +#### 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 diff --git a/Code-Documentation/autodoc/logs.templatetags.md b/Code-Documentation/autodoc/logs.templatetags.md new file mode 100644 index 0000000..9fbfb60 --- /dev/null +++ b/Code-Documentation/autodoc/logs.templatetags.md @@ -0,0 +1,36 @@ +# 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 diff --git a/Code-Documentation/autodoc/machines.api.md b/Code-Documentation/autodoc/machines.api.md new file mode 100644 index 0000000..b5db872 --- /dev/null +++ b/Code-Documentation/autodoc/machines.api.md @@ -0,0 +1,1260 @@ +# machines.api package + +## Submodules + +## machines.api.serializers module + + +### class machines.api.serializers.AAAARecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize machines.models.Interface objects with the data needed to +generate a AAAA DNS record. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('hostname', 'ipv6', 'ttl')) + +#### model() +alias of `machines.models.Interface` + + +### class machines.api.serializers.ARecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize machines.models.Interface objects with the data needed to +generate a A DNS record. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('hostname', 'ipv4', 'ttl')) + +#### model() +alias of `machines.models.Interface` + + +### class machines.api.serializers.CNAMERecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize machines.models.Domain objects with the data needed to +generate a CNAME DNS record. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('alias', 'hostname', 'ttl')) + +#### model() +alias of `machines.models.Domain` + + +### class machines.api.serializers.DNAMERecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize machines.models.Domain objects with the data needed to +generate a DNAME DNS record. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('alias', 'zone', 'ttl')) + +#### model() +alias of `machines.models.DName` + + +### class machines.api.serializers.DNSReverseZonesSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize the data about DNS Zones. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'extension', 'soa', 'ns_records', 'mx_records', 'txt_records', 'ptr_records', 'ptr_v6_records', 'cidrs', 'prefix_v6', 'prefix_v6_length')) + +#### model() +alias of `machines.models.IpType` + + +### class machines.api.serializers.DNSZonesSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize the data about DNS Zones. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'soa', 'ns_records', 'originv4', 'originv6', 'mx_records', 'txt_records', 'srv_records', 'a_records', 'aaaa_records', 'cname_records', 'dname_records', 'sshfp_records')) + +#### model() +alias of `machines.models.Extension` + + +### class machines.api.serializers.DNameSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.DName objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('zone', 'alias', 'api_url')) + +#### model() +alias of `machines.models.DName` + + +### class machines.api.serializers.DomainSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Domain objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('interface_parent', 'name', 'extension', 'cname', 'api_url')) + +#### model() +alias of `machines.models.Domain` + + +### class machines.api.serializers.ExtensionSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Extension objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'need_infra', 'origin', 'origin_v6', 'soa', 'api_url')) + +#### model() +alias of `machines.models.Extension` + + +### class machines.api.serializers.FirewallOuverturePortListSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + + +#### class Meta() +Bases: `object` + + +#### fields( = ('tcp_ports_in', 'udp_ports_in', 'tcp_ports_out', 'udp_ports_out')) + +#### model() +alias of `machines.models.OuverturePortList` + + +### class machines.api.serializers.FirewallPortListSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + + +#### class Meta() +Bases: `object` + + +#### fields( = ('begin', 'end', 'protocole', 'io', 'show_port')) + +#### model() +alias of `machines.models.OuverturePort` + + +### class machines.api.serializers.HostMacIpSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize the data about the hostname-ipv4-mac address association +to build the DHCP lease files. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('hostname', 'extension', 'mac_address', 'ipv4', 'ip_type')) + +#### model() +alias of `machines.models.Interface` + + +### class machines.api.serializers.InterfacePortsOpenSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + + +#### class Meta() +Bases: `object` + + +#### fields( = ('port_lists', 'ipv4', 'ipv6')) + +#### model() +alias of `machines.models.Interface` + + +### class machines.api.serializers.InterfaceSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Interface objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('ipv4', 'mac_address', 'machine', 'machine_type', 'details', 'port_lists', 'active', 'api_url')) + +#### model() +alias of `machines.models.Interface` + + +### class machines.api.serializers.IpListSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.IpList objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('ipv4', 'ip_type', 'need_infra', 'api_url')) + +#### model() +alias of `machines.models.IpList` + + +### class machines.api.serializers.IpTypeSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.IpType objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'extension', 'need_infra', 'domaine_ip_start', 'domaine_ip_stop', 'prefix_v6', 'vlan', 'ouverture_ports', 'api_url')) + +#### model() +alias of `machines.models.IpType` + + +### class machines.api.serializers.Ipv6ListSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Ipv6List objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('ipv6', 'interface', 'slaac_ip', 'api_url')) + +#### model() +alias of `machines.models.Ipv6List` + + +### class machines.api.serializers.MXRecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.MxSerializer` + +Serialize machines.models.Mx objects with the data needed to +generate a MX DNS record. + + +#### class Meta() +Bases: `machines.api.serializers.MxSerializer.Meta` + + +#### fields( = ('target', 'priority', 'ttl')) + +### class machines.api.serializers.MachineSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Machine objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('user', 'name', 'active', 'api_url')) + +#### model() +alias of `machines.models.Machine` + + +### class machines.api.serializers.MachineTypeSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.MachineType objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'ip_type', 'api_url')) + +#### model() +alias of `machines.models.MachineType` + + +### class machines.api.serializers.MxSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Mx objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('zone', 'priority', 'name', 'api_url')) + +#### model() +alias of `machines.models.Mx` + + +### class machines.api.serializers.NSRecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.NsSerializer` + +Serialize machines.models.Ns objects with the data needed to +generate a NS DNS record. + + +#### class Meta() +Bases: `machines.api.serializers.NsSerializer.Meta` + + +#### fields( = ('target', 'ttl')) + +### class machines.api.serializers.NasSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Nas objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'nas_type', 'machine_type', 'port_access_mode', 'autocapture_mac', 'api_url')) + +#### model() +alias of `machines.models.Nas` + + +### class machines.api.serializers.NsSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Ns objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('zone', 'ns', 'api_url')) + +#### model() +alias of `machines.models.Ns` + + +### class machines.api.serializers.OriginV4RecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.IpListSerializer` + +Serialize machines.models.IpList objects with the data needed to +generate an IPv4 Origin DNS record. + + +#### class Meta() +Bases: `machines.api.serializers.IpListSerializer.Meta` + + +#### fields( = ('ipv4',)) + +### class machines.api.serializers.OuverturePortListSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.OuverturePortList objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'tcp_ports_in', 'udp_ports_in', 'tcp_ports_out', 'udp_ports_out', 'api_url')) + +#### model() +alias of `machines.models.OuverturePortList` + + +### class machines.api.serializers.OuverturePortSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.OuverturePort objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('begin', 'end', 'port_list', 'protocole', 'io', 'api_url')) + +#### model() +alias of `machines.models.OuverturePort` + + +### class machines.api.serializers.RoleSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.OuverturePort objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('role_type', 'servers', 'api_url')) + +#### model() +alias of `machines.models.Role` + + +### class machines.api.serializers.SOARecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.SOASerializer` + +Serialize machines.models.SOA objects with the data needed to +generate a SOA DNS record. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'mail', 'refresh', 'retry', 'expire', 'ttl')) + +#### model() +alias of `machines.models.SOA` + + +### class machines.api.serializers.SOASerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.SOA objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'mail', 'refresh', 'retry', 'expire', 'ttl', 'api_url')) + +#### model() +alias of `machines.models.SOA` + + +### class machines.api.serializers.SRVRecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.SrvSerializer` + +Serialize machines.models.Srv objects with the data needed to +generate a SRV DNS record. + + +#### class Meta() +Bases: `machines.api.serializers.SrvSerializer.Meta` + + +#### fields( = ('service', 'protocole', 'ttl', 'priority', 'weight', 'port', 'target')) + +### class machines.api.serializers.SSHFPInterfaceSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + +Serialize machines.models.Domain objects with the data needed to +generate a CNAME DNS record. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('hostname', 'sshfp')) + +#### model() +alias of `machines.models.Interface` + + +### class machines.api.serializers.SSHFPRecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.SshFpSerializer` + +Serialize machines.models.SshFp objects with the data needed to +generate a SSHFP DNS record. + + +#### class Meta() +Bases: `machines.api.serializers.SshFpSerializer.Meta` + + +#### fields( = ('algo_id', 'hash')) + +### class machines.api.serializers.ServiceLinkSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Service_link objects. + + +#### class Meta() +Bases: `object` + + +#### extra_kwargs( = {'api_url': {'view_name': 'servicelink-detail'}}) + +#### fields( = ('service', 'server', 'last_regen', 'asked_regen', 'need_regen', 'api_url')) + +#### model() +alias of `machines.models.Service_link` + + +### class machines.api.serializers.ServiceRegenSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize the data about the services to regen. + + +#### class Meta() +Bases: `object` + + +#### extra_kwargs( = {'api_url': {'view_name': 'serviceregen-detail'}}) + +#### fields( = ('hostname', 'service_name', 'need_regen', 'api_url')) + +#### model() +alias of `machines.models.Service_link` + + +### class machines.api.serializers.ServiceSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Service objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('service_type', 'min_time_regen', 'regular_time_regen', 'servers', 'api_url')) + +#### model() +alias of `machines.models.Service` + + +### class machines.api.serializers.SrvSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Srv objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('service', 'protocole', 'extension', 'ttl', 'priority', 'weight', 'port', 'target', 'api_url')) + +#### model() +alias of `machines.models.Srv` + + +### class machines.api.serializers.SshFpSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.SSHFP objects. + + +#### class Meta() +Bases: `object` + + +#### field( = ('machine', 'pub_key_entry', 'algo', 'comment', 'api_url')) + +#### model() +alias of `machines.models.SshFp` + + +### class machines.api.serializers.SubnetPortsOpenSerializer(instance=None, data=, \*\*kwargs) +Bases: `rest_framework.serializers.ModelSerializer` + + +#### class Meta() +Bases: `object` + + +#### fields( = ('name', 'domaine_ip_start', 'domaine_ip_stop', 'complete_prefixv6', 'ouverture_ports')) + +#### model() +alias of `machines.models.IpType` + + +### class machines.api.serializers.TXTRecordSerializer(instance=None, data=, \*\*kwargs) +Bases: `machines.api.serializers.TxtSerializer` + +Serialize machines.models.Txt objects with the data needed to +generate a TXT DNS record. + + +#### class Meta() +Bases: `machines.api.serializers.TxtSerializer.Meta` + + +#### fields( = ('field1', 'field2', 'ttl')) + +### class machines.api.serializers.TxtSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Txt objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('zone', 'field1', 'field2', 'api_url')) + +#### model() +alias of `machines.models.Txt` + + +### class machines.api.serializers.VlanSerializer(instance=None, data=, \*\*kwargs) +Bases: `api.serializers.NamespacedHMSerializer` + +Serialize machines.models.Vlan objects. + + +#### class Meta() +Bases: `object` + + +#### fields( = ('vlan_id', 'name', 'comment', 'arp_protect', 'dhcp_snooping', 'dhcpv6_snooping', 'igmp', 'mld', 'api_url')) + +#### model() +alias of `machines.models.Vlan` + +## machines.api.urls module + +## machines.api.views module + + +### class machines.api.views.DNSReverseZonesView(\*\*kwargs) +Bases: `rest_framework.generics.ListAPIView` + +Exposes the detailed information about each extension (hostnames, +IPs, DNS records, etc.) in order to build the DNS zone files. + + +#### queryset( = , ]>) + +#### serializer_class() +alias of `machines.api.serializers.DNSReverseZonesSerializer` + + +### class machines.api.views.DNSZonesView(\*\*kwargs) +Bases: `rest_framework.generics.ListAPIView` + +Exposes the detailed information about each extension (hostnames, +IPs, DNS records, etc.) in order to build the DNS zone files. + + +#### queryset( = , ]>) + +#### serializer_class() +alias of `machines.api.serializers.DNSZonesSerializer` + + +### class machines.api.views.DNameViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.DName objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.DNameSerializer` + + +#### suffix( = None) + +### class machines.api.views.DomainViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Domain objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , , ]>) + +#### serializer_class() +alias of `machines.api.serializers.DomainSerializer` + + +#### suffix( = None) + +### class machines.api.views.ExtensionViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Extension objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , ]>) + +#### serializer_class() +alias of `machines.api.serializers.ExtensionSerializer` + + +#### suffix( = None) + +### class machines.api.views.HostMacIpView(\*\*kwargs) +Bases: `rest_framework.generics.ListAPIView` + +Exposes the associations between hostname, mac address and IPv4 in +order to build the DHCP lease files. + + +#### 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 `machines.api.serializers.HostMacIpSerializer` + + +### class machines.api.views.InterfacePortsOpenView(\*\*kwargs) +Bases: `rest_framework.generics.ListAPIView` + + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.InterfacePortsOpenSerializer` + + +### class machines.api.views.InterfaceViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Interface objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , , ]>) + +#### serializer_class() +alias of `machines.api.serializers.InterfaceSerializer` + + +#### suffix( = None) + +### class machines.api.views.IpListViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.IpList objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , , , , , , , , , , , , , , , , , , , , '...(remaining elements truncated)...']>) + +#### serializer_class() +alias of `machines.api.serializers.IpListSerializer` + + +#### suffix( = None) + +### class machines.api.views.IpTypeViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.IpType objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , ]>) + +#### serializer_class() +alias of `machines.api.serializers.IpTypeSerializer` + + +#### suffix( = None) + +### class machines.api.views.Ipv6ListViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Ipv6List objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.Ipv6ListSerializer` + + +#### suffix( = None) + +### class machines.api.views.MachineTypeViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.MachineType objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , ]>) + +#### serializer_class() +alias of `machines.api.serializers.MachineTypeSerializer` + + +#### suffix( = None) + +### class machines.api.views.MachineViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Machine objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = , , ]>) + +#### serializer_class() +alias of `machines.api.serializers.MachineSerializer` + + +#### suffix( = None) + +### class machines.api.views.MxViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Mx objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.MxSerializer` + + +#### suffix( = None) + +### class machines.api.views.NasViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Nas objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.NasSerializer` + + +#### suffix( = None) + +### class machines.api.views.NsViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Ns objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.NsSerializer` + + +#### suffix( = None) + +### class machines.api.views.OuverturePortListViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.OuverturePortList +objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.OuverturePortListSerializer` + + +#### suffix( = None) + +### class machines.api.views.OuverturePortViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.OuverturePort objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.OuverturePortSerializer` + + +#### suffix( = None) + +### class machines.api.views.RoleViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Machine objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.RoleSerializer` + + +#### suffix( = None) + +### class machines.api.views.SOAViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.SOA objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ]>) + +#### serializer_class() +alias of `machines.api.serializers.SOASerializer` + + +#### suffix( = None) + +### class machines.api.views.ServiceLinkViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Service_link objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.ServiceLinkSerializer` + + +#### suffix( = None) + +### class machines.api.views.ServiceRegenViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ModelViewSet` + +Exposes list and details of the services to regen + + +#### 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) + +#### serializer_class() +alias of `machines.api.serializers.ServiceRegenSerializer` + + +#### suffix( = None) + +### class machines.api.views.ServiceViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Service objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.ServiceSerializer` + + +#### suffix( = None) + +### class machines.api.views.SrvViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Srv objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.SrvSerializer` + + +#### suffix( = None) + +### class machines.api.views.SshFpViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.SshFp objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.SshFpSerializer` + + +#### suffix( = None) + +### class machines.api.views.SubnetPortsOpenView(\*\*kwargs) +Bases: `rest_framework.generics.ListAPIView` + + +#### queryset( = , ]>) + +#### serializer_class() +alias of `machines.api.serializers.SubnetPortsOpenSerializer` + + +### class machines.api.views.TxtViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Txt objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.TxtSerializer` + + +#### suffix( = None) + +### class machines.api.views.VlanViewSet(\*\*kwargs) +Bases: `rest_framework.viewsets.ReadOnlyModelViewSet` + +Exposes list and details of machines.models.Vlan objects. + + +#### basename( = None) + +#### description( = None) + +#### detail( = None) + +#### name( = None) + +#### queryset( = ) + +#### serializer_class() +alias of `machines.api.serializers.VlanSerializer` + + +#### suffix( = None) +## Module contents diff --git a/Code-Documentation/autodoc/machines.md b/Code-Documentation/autodoc/machines.md new file mode 100644 index 0000000..307918a --- /dev/null +++ b/Code-Documentation/autodoc/machines.md @@ -0,0 +1,3924 @@ +# machines package + +## Subpackages + + +* machines.api package + + + * Submodules + + + * machines.api.serializers module + + + * machines.api.urls module + + + * machines.api.views module + + + * Module contents + + +## Submodules + +## machines.acl module + +machines.acl + +Here are defined some functions to check acl on the application. + + +### machines.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). + + +## machines.admin module + +machines.admin +The objects, fields and datastructures visible in the Django admin view + + +### class machines.admin.DNameAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a DName object + + +#### property media() + +### class machines.admin.DomainAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Domain object + + +#### list_display( = ('interface_parent', 'name', 'extension', 'cname')) + +#### property media() + +### class machines.admin.ExtensionAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Extension object + + +#### property media() + +### class machines.admin.InterfaceAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Interface object + + +#### list_display( = ('machine', 'machine_type', 'mac_address', 'ipv4', 'details')) + +#### property media() + +### class machines.admin.IpListAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Ipv4List object + + +#### property media() + +### class machines.admin.IpTypeAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a IpType object + + +#### property media() + +### class machines.admin.Ipv6ListAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Ipv6List object + + +#### property media() + +### class machines.admin.MachineAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Machine object + + +#### property media() + +### class machines.admin.MachineTypeAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a MachineType object + + +#### property media() + +### class machines.admin.MxAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a MX object + + +#### property media() + +### class machines.admin.NasAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Nas object + + +#### property media() + +### class machines.admin.NsAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a NS object + + +#### property media() + +### class machines.admin.OuverturePortAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a OuverturePort object + + +#### property media() + +### class machines.admin.OuverturePortListAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a OuverturePortList object + + +#### property media() + +### class machines.admin.RoleAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a RoleAdmin object + + +#### property media() + +### class machines.admin.SOAAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a SOA object + + +#### property media() + +### class machines.admin.ServiceAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a ServiceAdmin object + + +#### list_display( = ('service_type', 'min_time_regen', 'regular_time_regen')) + +#### property media() + +### class machines.admin.SrvAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a SRV object + + +#### property media() + +### class machines.admin.SshFpAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a SSHFP object + + +#### property media() + +### class machines.admin.TxtAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a TXT object + + +#### property media() + +### class machines.admin.VlanAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin view of a Vlan object + + +#### property media() +## machines.forms module + +Formulaires d’ajout, edition et suppressions de : + + + * machines + + + * interfaces + + + * domain (noms de machine) + + + * alias (cname) + + + * service (dhcp, dns..) + + + * ns (serveur dns) + + + * mx (serveur mail) + + + * ports ouverts et profils d’ouverture par interface + + +### class machines.forms.AddInterfaceForm(\*args, \*\*kwargs) +Bases: `machines.forms.EditInterfaceForm` + +Ajout d’une interface à une machine. En fonction des droits, +affiche ou non l’ensemble des ip disponibles + + +#### class Meta() +Bases: `machines.forms.EditInterfaceForm.Meta` + + +#### fields( = ['machine_type', 'ipv4', 'mac_address', 'details']) + +#### base_fields( = {'details': , 'ipv4': , 'mac_address': , 'machine_type': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.AliasForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `re2o.field_permissions.FieldPermissionFormMixin`, `django.forms.models.ModelForm` + +Ajout d’un alias (et edition), CNAME, contenant nom et extension + + +#### class Meta() +Bases: `object` + + +#### fields( = ['name', 'extension', 'ttl']) + +#### model() +alias of `machines.models.Domain` + + +#### base_fields( = {'extension': , 'name': , 'ttl': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.DNameForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Add a DNAME entry for a zone + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.DName` + + +#### base_fields( = {'alias': , 'ttl': , 'zone': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.DelAliasForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs objets alias + + +#### base_fields( = {'alias': }) + +#### declared_fields( = {'alias': }) + +#### property media() + +### class machines.forms.DelDNameForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Delete a set of DNAME entries + + +#### base_fields( = {'dnames': }) + +#### declared_fields( = {'dnames': }) + +#### property media() + +### class machines.forms.DelExtensionForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’une ou plusieurs extensions + + +#### base_fields( = {'extensions': }) + +#### declared_fields( = {'extensions': }) + +#### property media() + +### class machines.forms.DelIpTypeForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs iptype + + +#### base_fields( = {'iptypes': }) + +#### declared_fields( = {'iptypes': }) + +#### property media() + +### class machines.forms.DelMachineTypeForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs machinetype + + +#### base_fields( = {'machinetypes': }) + +#### declared_fields( = {'machinetypes': }) + +#### property media() + +### class machines.forms.DelMxForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs MX + + +#### base_fields( = {'mx': }) + +#### declared_fields( = {'mx': }) + +#### property media() + +### class machines.forms.DelNasForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs nas + + +#### base_fields( = {'nas': }) + +#### declared_fields( = {'nas': }) + +#### property media() + +### class machines.forms.DelNsForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppresion d’un ou plusieurs NS + + +#### base_fields( = {'nss': }) + +#### declared_fields( = {'nss': }) + +#### property media() + +### class machines.forms.DelRoleForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Deletion of one or several roles. + + +#### base_fields( = {'role': }) + +#### declared_fields( = {'role': }) + +#### property media() + +### class machines.forms.DelSOAForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs SOA + + +#### base_fields( = {'soa': }) + +#### declared_fields( = {'soa': }) + +#### property media() + +### class machines.forms.DelServiceForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs service + + +#### base_fields( = {'service': }) + +#### declared_fields( = {'service': }) + +#### property media() + +### class machines.forms.DelSrvForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs Srv + + +#### base_fields( = {'srv': }) + +#### declared_fields( = {'srv': }) + +#### property media() + +### class machines.forms.DelTxtForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs TXT + + +#### base_fields( = {'txt': }) + +#### declared_fields( = {'txt': }) + +#### property media() + +### class machines.forms.DelVlanForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Suppression d’un ou plusieurs vlans + + +#### base_fields( = {'vlan': }) + +#### declared_fields( = {'vlan': }) + +#### property media() + +### class machines.forms.DomainForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `re2o.field_permissions.FieldPermissionFormMixin`, `django.forms.models.ModelForm` + +Ajout et edition d’un enregistrement de nom, relié à interface + + +#### class Meta() +Bases: `object` + + +#### fields( = ['name', 'ttl']) + +#### model() +alias of `machines.models.Domain` + + +#### base_fields( = {'name': , 'ttl': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.EditInterfaceForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `re2o.field_permissions.FieldPermissionFormMixin`, `django.forms.models.ModelForm` + +Edition d’une interface. Edition complète + + +#### class Meta() +Bases: `object` + + +#### fields( = ['machine', 'machine_type', 'ipv4', 'mac_address', 'details']) + +#### model() +alias of `machines.models.Interface` + + +#### base_fields( = {'details': , 'ipv4': , 'mac_address': , 'machine': , 'machine_type': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.EditIpTypeForm(\*args, \*\*kwargs) +Bases: `machines.forms.IpTypeForm` + +Edition d’un iptype. Pas d’edition du rangev4 possible, car il faudrait +synchroniser les objets iplist + + +#### class Meta() +Bases: `machines.forms.IpTypeForm.Meta` + + +#### fields( = ['extension', 'name', 'need_infra', 'domaine_ip_network', 'domaine_ip_netmask', 'prefix_v6', 'prefix_v6_length', 'vlan', 'reverse_v4', 'reverse_v6', 'ouverture_ports']) + +#### base_fields( = {'domaine_ip_netmask': , 'domaine_ip_network': , 'extension': , 'name': , 'need_infra': , 'ouverture_ports': , 'prefix_v6': , 'prefix_v6_length': , 'reverse_v4': , 'reverse_v6': , 'vlan': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.EditMachineForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `re2o.field_permissions.FieldPermissionFormMixin`, `django.forms.models.ModelForm` + +Formulaire d’édition d’une machine + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Machine` + + +#### base_fields( = {'active': , 'name': , 'user': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.EditOptionVlanForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout d’un vlan : id, nom + + +#### class Meta() +Bases: `object` + + +#### fields( = ['dhcp_snooping', 'dhcpv6_snooping', 'arp_protect', 'igmp', 'mld']) + +#### model() +alias of `machines.models.Vlan` + + +#### base_fields( = {'arp_protect': , 'dhcp_snooping': , 'dhcpv6_snooping': , 'igmp': , 'mld': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.EditOuverturePortConfigForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Edition de la liste des profils d’ouverture de ports +pour l’interface + + +#### class Meta() +Bases: `object` + + +#### fields( = ['port_lists']) + +#### model() +alias of `machines.models.Interface` + + +#### base_fields( = {'port_lists': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.EditOuverturePortListForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Edition de la liste des ports et profils d’ouverture +des ports + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.OuverturePortList` + + +#### base_fields( = {'name': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.ExtensionForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Formulaire d’ajout et edition d’une extension + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Extension` + + +#### base_fields( = {'dnssec': , 'name': , 'need_infra': , 'origin': , 'origin_v6': , 'soa': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.IpTypeForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Formulaire d’ajout d’un iptype. Pas d’edition de l’ip de start et de +stop après creation + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.IpType` + + +#### base_fields( = {'domaine_ip_netmask': , 'domaine_ip_network': , 'domaine_ip_start': , 'domaine_ip_stop': , 'extension': , 'name': , 'need_infra': , 'ouverture_ports': , 'prefix_v6': , 'prefix_v6_length': , 'reverse_v4': , 'reverse_v6': , 'vlan': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.Ipv6ListForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `re2o.field_permissions.FieldPermissionFormMixin`, `django.forms.models.ModelForm` + +Gestion des ipv6 d’une machine + + +#### class Meta() +Bases: `object` + + +#### fields( = ['ipv6', 'slaac_ip']) + +#### model() +alias of `machines.models.Ipv6List` + + +#### base_fields( = {'ipv6': , 'slaac_ip': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.MachineTypeForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout et edition d’un machinetype, relié à un iptype + + +#### class Meta() +Bases: `object` + + +#### fields( = ['name', 'ip_type']) + +#### model() +alias of `machines.models.MachineType` + + +#### base_fields( = {'ip_type': , 'name': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.MxForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout et edition d’un MX + + +#### class Meta() +Bases: `object` + + +#### fields( = ['zone', 'priority', 'name', 'ttl']) + +#### model() +alias of `machines.models.Mx` + + +#### base_fields( = {'name': , 'priority': , 'ttl': , 'zone': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.NasForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout d’un type de nas (machine d’authentification, +swicths, bornes…) + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Nas` + + +#### base_fields( = {'autocapture_mac': , 'machine_type': , 'name': , 'nas_type': , 'port_access_mode': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.NewMachineForm(\*args, \*\*kwargs) +Bases: `machines.forms.EditMachineForm` + +Creation d’une machine, ne renseigne que le nom + + +#### class Meta() +Bases: `machines.forms.EditMachineForm.Meta` + + +#### fields( = ['name']) + +#### base_fields( = {'name': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.NsForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout d’un NS pour une zone +On exclue les CNAME dans les objets domain (interdit par la rfc) +donc on prend uniquemet + + +#### class Meta() +Bases: `object` + + +#### fields( = ['zone', 'ns', 'ttl']) + +#### model() +alias of `machines.models.Ns` + + +#### base_fields( = {'ns': , 'ttl': , 'zone': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.RoleForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Add and edit role. + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Role` + + +#### base_fields( = {'role_type': , 'servers': , 'specific_role': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.SOAForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout et edition d’un SOA + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.SOA` + + +#### base_fields( = {'expire': , 'mail': , 'name': , 'refresh': , 'retry': , 'ttl': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.ServiceForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout et edition d’une classe de service : dns, dhcp, etc + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Service` + + +#### base_fields( = {'min_time_regen': , 'regular_time_regen': , 'servers': , 'service_type': }) + +#### declared_fields( = {}) + +#### property media() + +#### save(commit=True) +Create a version of this object and save it to database + + +### class machines.forms.SrvForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout d’un srv pour une zone + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Srv` + + +#### base_fields( = {'extension': , 'port': , 'priority': , 'protocole': , 'service': , 'target': , 'ttl': , 'weight': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.SshFpForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Edits a SSHFP record. + + +#### class Meta() +Bases: `object` + + +#### exclude( = ('machine',)) + +#### model() +alias of `machines.models.SshFp` + + +#### base_fields( = {'algo': , 'comment': , 'pub_key_entry': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.TxtForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout d’un txt pour une zone + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `machines.models.Txt` + + +#### base_fields( = {'field1': , 'field2': , 'ttl': , 'zone': }) + +#### declared_fields( = {}) + +#### property media() + +### class machines.forms.VlanForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Ajout d’un vlan : id, nom + + +#### class Meta() +Bases: `object` + + +#### fields( = ['vlan_id', 'name', 'comment']) + +#### model() +alias of `machines.models.Vlan` + + +#### base_fields( = {'comment': , 'name': , 'vlan_id': }) + +#### declared_fields( = {}) + +#### property media() +## machines.models module + +machines.models +The models definitions for the Machines app + + +### class machines.models.DName(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +A DNAME entry for the DNS. + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### alias() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### dns_entry() +Returns the DNAME record for the DNS zone file. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### zone() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### zone_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Domain(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `re2o.field_permissions.FieldPermissionModelMixin`, `django.db.models.base.Model` + +Objet domain. Enregistrement A et CNAME en même temps : permet de +stocker les alias et les nom de machines, suivant si interface_parent +ou cname sont remplis + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### static can_change_ttl(user_request, \*_args, \*\*_kwargs) + +#### static can_create(user_request, interfaceid, \*_args, \*\*_kwargs) +Verifie que l’user a les bons droits infra pour créer +un domain, ou possède l’interface associée +:param interfaceid: Id de l’interface associée à cet objet domain +: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 delete object pour del +cette instance domain, ou qu’elle lui appartient +:param self: Instance domain à del +: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 domain +:param self: Instance domain à 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 ou qu’elle appartient à l’user +:param self: instance domain à voir +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### clean() +Validation : +- l’objet est bien soit A soit CNAME +- le cname est pas pointé sur lui-même +- le nom contient bien les caractères autorisés par la norme +dns et moins de 63 caractères au total +- le couple nom/extension est bien unique + + +#### cname() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### cname_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### dns_entry() +Une entrée DNS + + +#### extension() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### extension_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_extension() +Retourne l’extension de l’interface parente si c’est un A +Retourne l’extension propre si c’est un cname, renvoie None sinon + + +#### get_source_interface() +Renvoie l’interface source: +- l’interface reliée si c’est un A +- si c’est un cname, suit le cname jusqu’à atteindre le A +et renvoie l’interface parente +Fonction récursive + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### interface_parent() +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. + + +#### interface_parent_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### mx_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ns_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### objects( = ) + +#### related_domain() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### save(\*args, \*\*kwargs) +Empèche le save sans extension valide. +Force à avoir appellé clean avant + + +#### srv_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Extension(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Extension dns type example.org. Précise si tout le monde peut +l’utiliser, associé à un origin (ip d’origine) + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### static can_use_all(user_request, \*_args, \*\*_kwargs) +Superdroit qui permet d’utiliser toutes les extensions sans +restrictions +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### clean(\*args, \*\*kwargs) +Hook for doing any extra model-wide validation after clean() has been +called on every field by self.clean_fields. Any ValidationError raised +by this method will not be associated with a particular field; it will +have a special-case association with the field defined by NON_FIELD_ERRORS. + + +#### dname_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### dns_entry() +Une entrée DNS A et AAAA sur origin (zone self) + + +#### dnssec() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### domain_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### get_associated_a_records() + +#### get_associated_aaaa_records() + +#### get_associated_cname_records() + +#### get_associated_dname_records() + +#### get_associated_sshfp_records() + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### iptype_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### mx_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### need_infra() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ns_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### objects( = ) + +#### origin() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### origin_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### origin_v6() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### soa() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### soa_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### srv_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### txt_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +### class machines.models.Interface(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `re2o.field_permissions.FieldPermissionModelMixin`, `django.db.models.base.Model` + +Une interface. Objet clef de l’application machine : +- une address mac unique. Possibilité de la rendre unique avec le +typemachine +- une onetoone vers IpList pour attribution ipv4 +- le type parent associé au range ip et à l’extension +- un objet domain associé contenant son nom +- la liste des ports oiuvert + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### assign_ipv4() +Assigne une ip à l’interface + + +#### static can_change_machine(user_request, \*_args, \*\*_kwargs) +Check if a user can change the machine associated with an +Interface object + + +#### static can_create(user_request, machineid, \*_args, \*\*_kwargs) +Verifie que l’user a les bons droits infra pour créer +une interface, ou bien que la machine appartient bien à l’user +:param macineid: Id de la machine parente de l’interface +: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 delete object pour del +cette instance interface, ou qu’elle lui appartient +:param self: Instance interface à del +: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 infra pour editer +cette instance interface, ou qu’elle lui appartient +:param self: Instance interface à 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 ou qu’elle appartient à l’user +:param self: instance interface à voir +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### clean(\*args, \*\*kwargs) +Formate l’addresse mac en mac_bare (fonction filter_mac) +et assigne une ipv4 dans le bon range si inexistante ou incohérente + + +#### details() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### domain() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### filter_macaddress() +Tente un formatage mac_bare, si échoue, lève une erreur de +validation + + +#### gen_ipv6_dhcpv6() +Cree une ip, à assigner avec dhcpv6 sur une machine + + +#### get_vendor() +Retourne le vendeur associé à la mac de l’interface + + +#### has_private_ip() +True si l’ip associée est privée + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ipv4() +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. + + +#### ipv4_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ipv6() +Renvoie le queryset de la liste des ipv6 +On renvoie l’ipv6 slaac que si le mode slaac est activé +(et non dhcpv6) + + +#### ipv6_slaac() +Renvoie un objet type ipv6 à partir du prefix associé à +l’iptype parent + + +#### ipv6list() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### is_active() +Renvoie si une interface doit avoir accès ou non + + +#### mac_address() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### mac_bare() +Formatage de la mac type mac_bare + + +#### machine() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### machine_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### machine_type() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### machine_type_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### classmethod mass_assign_ipv4(interface_list) + +#### classmethod mass_unassign_ipv4(interface_list) +Unassign ipv4 to multiple interfaces + + +#### may_have_port_open() +True si l’interface a une ip et une ip publique. +Permet de ne pas exporter des ouvertures sur des ip privées +(useless) + + +#### objects( = ) + +#### port_lists() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### port_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### role_set() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### save(\*args, \*\*kwargs) +Creates a version of this object and save it to database + + +#### service_link_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### service_set() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### sync_ipv6() +Cree et met à jour l’ensemble des ipv6 en fonction du mode choisi + + +#### sync_ipv6_dhcpv6() +Affecte une ipv6 dhcpv6 calculée à partir de l’id de la machine + + +#### sync_ipv6_slaac() +Cree, mets à jour et supprime si il y a lieu l’ipv6 slaac associée +à la machine +Sans prefixe ipv6, on return +Si l’ip slaac n’est pas celle qu’elle devrait être, on maj + + +#### unassign_ipv4() +Sans commentaire, désassigne une ipv4 + + +#### update_type() +Lorsque le machinetype est changé de type d’ip, on réassigne + + +#### validate_unique(\*args, \*\*kwargs) +Checks unique constraints on the model and raises `ValidationError` +if any failed. + + +### class machines.models.IpList(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +A list of IPv4 + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### clean() +Erreur si l’ip_type est incorrect + + +#### extension_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### interface() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### ip_type() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### ip_type_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ipv4() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### need_infra() +Permet de savoir si un user basique peut assigner cette ip ou +non + + +#### objects( = ) + +#### save(\*args, \*\*kwargs) +Creates a version of this object and save it to database + + +### class machines.models.IpType(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Type d’ip, définissant un range d’ip, affecté aux machine types + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### static can_use_all(user_request, \*_args, \*\*_kwargs) +Superdroit qui permet d’utiliser toutes les extensions sans +restrictions +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### check_replace_prefixv6() +Remplace les prefixv6 des interfaces liées à ce type d’ip + + +#### clean() +Nettoyage. Vérifie : +- Que ip_stop est après ip_start +- Qu’on ne crée pas plus gros qu’un /16 +- Que le range crée ne recoupe pas un range existant +- Formate l’ipv6 donnée en /64 + + +#### complete_prefixv6() +Return the complete prefix v6 as cidr + + +#### del_ip_range() +Methode dépréciée, IpList est en mode cascade et supprimé +automatiquement + + +#### domaine_ip_netmask() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### domaine_ip_network() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### domaine_ip_start() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### domaine_ip_stop() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### extension() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### extension_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### free_ip() +Renvoie toutes les ip libres associées au type donné (self) + + +#### gen_ip_range() +Cree les IpList associées au type self. Parcours pédestrement et +crée les ip une par une. Si elles existent déjà, met à jour le type +associé à l’ip + + +#### get_associated_ptr_records() + +#### get_associated_ptr_v6_records() + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ip6_set_full_info() + +#### ip_net_full_info() +Renvoie les infos du network contenant du range + + +#### ip_network() +Renvoie le network parent du range start-stop, si spécifié +Différent de ip_set_cidrs ou iP_set, car lui est supérieur ou égal + + +#### ip_objects() +Renvoie tous les objets ipv4 relié à ce type + + +#### ip_range() +Renvoie un objet IPRange à partir de l’objet IpType + + +#### ip_set() +Renvoie une IPSet à partir de l’iptype + + +#### ip_set_as_str() +Renvoie une liste des ip en string + + +#### ip_set_cidrs_as_str() +Renvoie la liste des cidrs du range en str + + +#### ip_set_full_info() +Iter sur les range cidr, et renvoie network, broacast , etc + + +#### iplist_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### machinetype_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### need_infra() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### optionaltopologie() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### ouverture_ports() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### ouverture_ports_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### prefix_v6() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### prefix_v6_length() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### reverse_v4() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### reverse_v6() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### save(\*args, \*\*kwargs) +Creates a version of this object and save it to database + + +#### vlan() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Ipv6List(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `re2o.field_permissions.FieldPermissionModelMixin`, `django.db.models.base.Model` + +A list of IPv6 + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### static can_change_slaac_ip(user_request, \*_args, \*\*_kwargs) +Check if a user can change the slaac value + + +#### static can_create(user_request, interfaceid, \*_args, \*\*_kwargs) +Verifie que l’user a les bons droits infra pour créer +une ipv6, ou possède l’interface associée +:param interfaceid: Id de l’interface associée à cet objet domain +: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 delete object pour del +cette instance interface, ou qu’elle lui appartient +:param self: Instance interface à del +: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 infra pour editer +cette instance interface, ou qu’elle lui appartient +:param self: Instance interface à 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 ou qu’elle appartient à l’user +:param self: instance interface à voir +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### check_and_replace_prefix(prefix=None) +Si le prefixe v6 est incorrect, on maj l’ipv6 + + +#### clean(\*args, \*\*kwargs) +Hook for doing any extra model-wide validation after clean() has been +called on every field by self.clean_fields. Any ValidationError raised +by this method will not be associated with a particular field; it will +have a special-case association with the field defined by NON_FIELD_ERRORS. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### interface() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### interface_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ipv6() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### save(\*args, \*\*kwargs) +Force à avoir appellé clean avant + + +#### slaac_ip() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Machine(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.field_permissions.FieldPermissionModelMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Class définissant une machine, object parent user, objets fils +interfaces + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### accesspoint() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### active() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### all_complete_names() +Renvoie tous les tls complets de la machine + + +#### all_short_names() +Renvoie de manière unique, le nom des interfaces de cette +machine + + +#### static can_change_user(user_request, \*_args, \*\*_kwargs) +Checks if an user is allowed to change the user who owns a +Machine. + + +* **Parameters** + + **user_request** – The user requesting to change owner. + + + +* **Returns** + + A tuple with a boolean stating if edition is allowed and an + explanation message. + + + +#### static can_create(user_request, userid, \*_args, \*\*_kwargs) +Vérifie qu’un user qui fait la requète peut bien créer la machine +et n’a pas atteint son quota, et crée bien une machine à lui +:param user_request: Utilisateur qui fait la requête +:param userid: id de l’user dont on va créer une machine +:return: soit True, soit False avec la raison de l’échec + + +#### can_delete(user_request, \*args, \*\*kwargs) +Vérifie qu’on peut bien supprimer cette instance particulière (soit +machine de soi, soit droit particulier +:param self: instance machine à supprimer +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### can_edit(user_request, \*args, \*\*kwargs) +Vérifie qu’on peut bien éditer cette instance particulière (soit +machine de soi, soit droit particulier +:param self: instance machine à éditer +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison le cas échéant + + +#### can_view(user_request, \*_args, \*\*_kwargs) +Vérifie qu’on peut bien voir cette instance particulière (soit +machine de soi, soit droit particulier +:param self: instance machine à éditer +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### static can_view_all(user_request, \*_args, \*\*_kwargs) +Vérifie qu’on peut bien afficher l’ensemble des machines, +droit particulier correspondant +:param user_request: instance user qui fait l’edition +:return: True ou False avec la raison de l’échec le cas échéant + + +#### complete_name() +Par defaut, renvoie le nom de la première interface +de cette machine + + +#### get_name() +user provided name or first interface name + + +* **Type** + + Return a name + + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### interface_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### linked_objects() +Return linked objects : machine and domain. +Usefull in history display + + +#### classmethod mass_delete(machine_queryset) +Mass delete for machine queryset + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### short_name() +Par defaut, renvoie le nom de la première interface +de cette machine + + +#### sshfp_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### switch() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### user() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### user_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.MachineType(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Type de machine, relié à un type d’ip, affecté aux interfaces + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### all_interfaces() +Renvoie toutes les interfaces (cartes réseaux) de type +machinetype + + +#### static can_use_all(user_request, \*_args, \*\*_kwargs) +Check if an user can use every MachineType. + + +* **Parameters** + + **user_request** – The user requesting edition. + + + +* **Returns** + + A tuple with a boolean stating if user can acces and an explanation + message is acces is not allowed. + + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### interface_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### ip_type() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### ip_type_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### machinetype_on_nas() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### nas_type() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### objects( = ) + +### class machines.models.Mx(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Entrées des MX. Enregistre la zone (extension) associée et la +priorité +Todo : pouvoir associer un MX à une interface + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### dns_entry() +Renvoie l’entrée DNS complète pour un MX à mettre dans les +fichiers de zones + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### name_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### priority() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### zone() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### zone_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Nas(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Les nas. Associé à un machine_type. +Permet aussi de régler le port_access_mode (802.1X ou mac-address) pour +le radius. Champ autocapture de la mac à true ou false + + +#### AUTH( = (('802.1X', '802.1X'), ('Mac-address', 'MAC-address'))) + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### autocapture_mac() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### default_mode( = '802.1X') + +#### get_port_access_mode_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### machine_type() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### machine_type_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### nas_type() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### nas_type_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### port_access_mode() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Ns(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Liste des enregistrements name servers par zone considéérée + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### dns_entry() +Renvoie un enregistrement NS complet pour les filezones + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ns() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### ns_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### zone() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### zone_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.OuverturePort(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Représente un simple port ou une plage de ports. + +Les ports de la plage sont compris entre begin et en inclus. +Si begin == end alors on ne représente qu’un seul port. + +On limite les ports entre 0 et 65535, tels que défini par la RFC + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### IN( = 'I') + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### OUT( = 'O') + +#### TCP( = 'T') + +#### UDP( = 'U') + +#### begin() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### end() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_io_display(\*\*morekwargs) + +#### get_protocole_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### io() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### port_list() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### port_list_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### protocole() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### show_port() +Formatage plus joli, alias pour str + + +### class machines.models.OuverturePortList(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Liste des ports ouverts sur une interface. + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### can_delete(user_request, \*_args, \*\*_kwargs) +Verifie que l’user a les bons droits bureau pour delete +cette instance ouvertureportlist +:param self: Instance ouvertureportlist à delete +:param user_request: Utilisateur qui fait la requête +:return: soit True, soit False avec la raison de l’échec + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### interface_set() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### iptype_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### ouvertureport_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### tcp_ports_in() +Renvoie la liste des ports ouverts en TCP IN pour ce profil + + +#### tcp_ports_out() +Renvoie la liste des ports ouverts en TCP OUT pour ce profil + + +#### udp_ports_in() +Renvoie la liste des ports ouverts en UDP IN pour ce profil + + +#### udp_ports_out() +Renvoie la liste des ports ouverts en UDP OUT pour ce profil + + +### class machines.models.Role(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Define the role of a machine. +Allow automated generation of the server configuration. + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### ROLE( = (('dhcp-server', 'DHCP server'), ('switch-conf-server', 'Switches configuration server'), ('dns-recursive-server', 'Recursive DNS server'), ('ntp-server', 'NTP server'), ('radius-server', 'RADIUS server'), ('log-server', 'Log server'), ('ldap-master-server', 'LDAP master server'), ('ldap-backup-server', 'LDAP backup server'), ('smtp-server', 'SMTP server'), ('postgresql-server', 'postgreSQL server'), ('mysql-server', 'mySQL server'), ('sql-client', 'SQL client'), ('gateway', 'Gateway'))) + +#### classmethod all_interfaces_for_roletype(roletype) +Return all interfaces for a roletype + + +#### get_specific_role_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### classmethod interface_for_roletype(roletype) +Return interfaces for a roletype + + +#### objects( = ) + +#### role_type() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### save(\*args, \*\*kwargs) +Creates a version of this object and save it to database + + +#### servers() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### specific_role() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.SOA(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Un enregistrement SOA associé à une extension +Les valeurs par défault viennent des recommandations RIPE : +[https://www.ripe.net/publications/docs/ripe-203](https://www.ripe.net/publications/docs/ripe-203) + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### dns_soa_mail() +Renvoie le mail dans l’enregistrement SOA + + +#### dns_soa_param() +Renvoie la partie de l’enregistrement SOA correspondant aux champs: + ; refresh + ; retry + ; expire + ; TTL + + +#### expire() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### extension_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### mail() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### classmethod new_default_soa() +Fonction pour créer un SOA par défaut, utile pour les nouvelles +extensions . +/!Ne jamais supprimer ou renommer cette fonction car elle est +utilisée dans les migrations de la BDD. + + +#### objects( = ) + +#### refresh() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### retry() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Service(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Definition d’un service (dhcp, dns, etc) + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### ask_regen() +Marque à True la demande de régénération pour un service x + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### min_time_regen() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### process_link(servers) +Django ne peut créer lui meme les relations manytomany avec table +intermediaire explicite + + +#### regular_time_regen() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### save(\*args, \*\*kwargs) +Creates a version of this object and save it to database + + +#### servers() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### service_link_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### service_type() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Service_link(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Definition du lien entre serveurs et services + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### asked_regen() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### done_regen() +Appellé lorsqu’un serveur a regénéré son service + + +#### get_next_by_last_regen(\*\*morekwargs) + +#### get_previous_by_last_regen(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### last_regen() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### property need_regen() +Décide si le temps minimal écoulé est suffisant pour provoquer une +régénération de service + + +#### objects( = ) + +#### server() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### server_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### service() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### service_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Srv(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +A SRV record + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### TCP( = 'TCP') + +#### UDP( = 'UDP') + +#### dns_entry() +Renvoie l’enregistrement SRV complet pour le fichier de zone + + +#### extension() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### extension_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_protocole_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### port() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### priority() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### protocole() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### service() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### target() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### target_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### weight() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.SshFp(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +A fingerprint of an SSH public key + + +#### ALGO( = (('ssh-rsa', 'ssh-rsa'), ('ssh-ed25519', 'ssh-ed25519'), ('ecdsa-sha2-nistp256', 'ecdsa-sha2-nistp256'), ('ecdsa-sha2-nistp384', 'ecdsa-sha2-nistp384'), ('ecdsa-sha2-nistp521', 'ecdsa-sha2-nistp521'))) + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### algo() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### algo_id() +Return the id of the algorithm for this key + + +#### 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 + + +#### comment() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_algo_display(\*\*morekwargs) + +#### hash() +Return the hashess for the pub key with correct id +cf RFC, 1 is sha1 , 2 sha256 + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### machine() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### machine_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### pub_key_entry() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Txt(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Un enregistrement TXT associé à une extension + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### dns_entry() +Renvoie l’enregistrement TXT complet pour le fichier de zone + + +#### field1() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### field2() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### zone() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### zone_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class machines.models.Vlan(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Un vlan : vlan_id et nom +On limite le vlan id entre 0 et 4096, comme défini par la norme + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### arp_protect() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### banned_vlan() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### comment() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### dhcp_snooping() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### dhcpv6_snooping() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### igmp() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### iptype_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### mld() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### non_member_vlan() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### objects( = ) + +#### unknown_machine_vlan() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_port_vlan() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_room_vlan() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### vlan_ok_option() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### vlan_tagged() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### vlan_untagged() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +### machines.models.dname_post_delete(\*\*_kwargs) +Updates the DNS regen after deletion of a DName object. + + +### machines.models.dname_post_save(\*\*_kwargs) +Updates the DNS regen after modification of a DName object. + + +### machines.models.domain_post_delete(\*\*_kwargs) +Regeneration dns après suppression d’un domain object + + +### machines.models.domain_post_save(\*\*_kwargs) +Regeneration dns après modification d’un domain object + + +### machines.models.extension_post_delete(\*\*_kwargs) +Regeneration dns après suppression d’une extension + + +### machines.models.extension_post_save(\*\*_kwargs) +Regeneration dns après modification d’une extension + + +### machines.models.interface_post_delete(\*\*kwargs) +Synchronisation ldap et régen parefeu/dhcp lors de la suppression +d’une interface + + +### machines.models.interface_post_save(\*\*kwargs) +Synchronisation ldap et régen parefeu/dhcp lors de la modification +d’une interface + + +### machines.models.iptype_post_save(\*\*kwargs) +Generation des objets ip après modification d’un range ip + + +### machines.models.machine_post_delete(\*\*kwargs) +Synchronisation ldap et régen parefeu/dhcp lors de la suppression +d’une machine + + +### machines.models.machine_post_save(\*\*kwargs) +Synchronisation ldap et régen parefeu/dhcp lors de la modification +d’une machine + + +### machines.models.machinetype_post_save(\*\*kwargs) +Mise à jour des interfaces lorsque changement d’attribution +d’une machinetype (changement iptype parent) + + +### machines.models.mx_post_delete(\*\*_kwargs) +Regeneration dns après suppresson d’un MX + + +### machines.models.mx_post_save(\*\*_kwargs) +Regeneration dns après modification d’un MX + + +### machines.models.ns_post_delete(\*\*_kwargs) +Regeneration dns après modification d’un NS + + +### machines.models.ns_post_save(\*\*_kwargs) +Regeneration dns après modification d’un NS + + +### machines.models.regen(service) +Fonction externe pour régérération d’un service, prend un objet service +en arg + + +### machines.models.soa_post_delete(\*\*_kwargs) +Regeneration dns après suppresson d’un SOA + + +### machines.models.soa_post_save(\*\*_kwargs) +Regeneration dns après modification d’un SOA + + +### machines.models.srv_post_delete(\*\*_kwargs) +Regeneration dns après modification d’un SRV + + +### machines.models.srv_post_save(\*\*_kwargs) +Regeneration dns après modification d’un SRV + + +### machines.models.text_post_delete(\*\*_kwargs) +Regeneration dns après modification d’un TX + + +### machines.models.text_post_save(\*\*_kwargs) +Regeneration dns après modification d’un TXT + +## machines.tests module + +machines.tests +The tests for the API module. + +## machines.urls module + +machines.urls +The defined URLs for the Machines app + +## machines.views module + +machines.views +The views for the Machines app + + +### machines.views.f_type_id(is_type_tt) +The id that will be used in HTML to store the value of the field +type. Depends on the fact that type is generate using typeahead or not + + +### machines.views.generate_ipv4_choices(form_obj) +Generate the parameter choices for the massive_bootstrap_form tag + + +### machines.views.generate_ipv4_engine(is_type_tt) +Generate the parameter engine for the massive_bootstrap_form tag + + +### machines.views.generate_ipv4_match_func(is_type_tt) +Generate the parameter match_func for the massive_bootstrap_form tag + + +### machines.views.generate_ipv4_mbf_param(form_obj, is_type_tt) +Generate all the parameters to use with the massive_bootstrap_form +tag + +## Module contents + +machines +The app in charge of everything related to the machines, the interface, … diff --git a/Code-Documentation/autodoc/machines.migrations.md b/Code-Documentation/autodoc/machines.migrations.md new file mode 100644 index 0000000..688b7f8 --- /dev/null +++ b/Code-Documentation/autodoc/machines.migrations.md @@ -0,0 +1,1087 @@ +# machines.migrations package + +## Submodules + +## machines.migrations.0001_initial module + + +### class machines.migrations.0001_initial.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('users', '0005_auto_20160702_0006')]) + +#### operations( = [)]>, ), ('type', )]>, >, >]) +## machines.migrations.0002_auto_20160703_1444 module + + +### class machines.migrations.0002_auto_20160703_1444.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0001_initial')]) + +#### operations( = [), ('ipv6', ), ('mac_address', ), ('details', ), ('name', )]>, ), ('ipv4', )]>, >, >]) +## machines.migrations.0003_auto_20160703_1450 module + + +### class machines.migrations.0003_auto_20160703_1450.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0002_auto_20160703_1444')]) + +#### operations( = [>]) +## machines.migrations.0004_auto_20160703_1451 module + + +### class machines.migrations.0004_auto_20160703_1451.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0003_auto_20160703_1450')]) + +#### operations( = [>]) +## machines.migrations.0005_auto_20160703_1523 module + + +### class machines.migrations.0005_auto_20160703_1523.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0004_auto_20160703_1451')]) + +#### operations( = [, >]) +## machines.migrations.0006_auto_20160703_1813 module + + +### class machines.migrations.0006_auto_20160703_1813.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0005_auto_20160703_1523')]) + +#### operations( = [>, >]) +## machines.migrations.0007_auto_20160703_1816 module + + +### class machines.migrations.0007_auto_20160703_1816.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0006_auto_20160703_1813')]) + +#### operations( = [>]) +## machines.migrations.0008_remove_interface_ipv6 module + + +### class machines.migrations.0008_remove_interface_ipv6.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0007_auto_20160703_1816')]) + +#### operations( = []) +## machines.migrations.0009_auto_20160703_2358 module + + +### class machines.migrations.0009_auto_20160703_2358.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0008_remove_interface_ipv6')]) + +#### operations( = [>]) +## machines.migrations.0010_auto_20160704_0104 module + + +### class machines.migrations.0010_auto_20160704_0104.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0009_auto_20160703_2358')]) + +#### operations( = [>]) +## machines.migrations.0011_auto_20160704_0105 module + + +### class machines.migrations.0011_auto_20160704_0105.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0010_auto_20160704_0104')]) + +#### operations( = [>]) +## machines.migrations.0012_auto_20160704_0118 module + + +### class machines.migrations.0012_auto_20160704_0118.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0011_auto_20160704_0105')]) + +#### operations( = [>]) +## machines.migrations.0013_auto_20160705_1014 module + + +### class machines.migrations.0013_auto_20160705_1014.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0012_auto_20160704_0118')]) + +#### operations( = [>, >]) +## machines.migrations.0014_auto_20160706_1220 module + + +### class machines.migrations.0014_auto_20160706_1220.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0013_auto_20160705_1014')]) + +#### operations( = [>]) +## machines.migrations.0015_auto_20160707_0105 module + + +### class machines.migrations.0015_auto_20160707_0105.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0014_auto_20160706_1220')]) + +#### operations( = [>]) +## machines.migrations.0016_auto_20160708_1633 module + + +### class machines.migrations.0016_auto_20160708_1633.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0015_auto_20160707_0105')]) + +#### operations( = [), ('name', )]>, >, >]) +## machines.migrations.0017_auto_20160708_1645 module + + +### class machines.migrations.0017_auto_20160708_1645.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0016_auto_20160708_1633')]) + +#### operations( = [, preserve_default=False>]) +## machines.migrations.0018_auto_20160708_1813 module + + +### class machines.migrations.0018_auto_20160708_1813.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0017_auto_20160708_1645')]) + +#### operations( = [>]) +## machines.migrations.0019_auto_20160718_1141 module + + +### class machines.migrations.0019_auto_20160718_1141.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0018_auto_20160708_1813')]) + +#### operations( = [>]) +## machines.migrations.0020_auto_20160718_1849 module + + +### class machines.migrations.0020_auto_20160718_1849.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0019_auto_20160718_1141')]) + +#### operations( = [, , preserve_default=False>]) +## machines.migrations.0021_auto_20161006_1943 module + + +### class machines.migrations.0021_auto_20161006_1943.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0020_auto_20160718_1849')]) + +#### operations( = [>]) +## machines.migrations.0022_auto_20161011_1829 module + + +### class machines.migrations.0022_auto_20161011_1829.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0021_auto_20161006_1943')]) + +#### operations( = [>]) +## machines.migrations.0023_iplist_ip_type module + + +### class machines.migrations.0023_iplist_ip_type.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0022_auto_20161011_1829')]) + +#### operations( = [, preserve_default=False>]) +## machines.migrations.0024_machinetype_need_infra module + + +### class machines.migrations.0024_machinetype_need_infra.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0023_iplist_ip_type')]) + +#### operations( = [>]) +## machines.migrations.0025_auto_20161023_0038 module + + +### class machines.migrations.0025_auto_20161023_0038.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0024_machinetype_need_infra')]) + +#### operations( = [), ('type', ), ('need_infra', ), ('extension', )]>, , , >, >]) +## machines.migrations.0026_auto_20161026_1348 module + + +### class machines.migrations.0026_auto_20161026_1348.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0025_auto_20161023_0038')]) + +#### operations( = [>]) +## machines.migrations.0027_alias module + + +### class machines.migrations.0027_alias.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0026_auto_20161026_1348')]) + +#### operations( = [), ('alias', ), ('interface_parent', )]>]) +## machines.migrations.0028_iptype_domaine_ip module + + +### class machines.migrations.0028_iptype_domaine_ip.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0027_alias')]) + +#### operations( = [>]) +## machines.migrations.0029_iptype_domaine_range module + + +### class machines.migrations.0029_iptype_domaine_range.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0028_iptype_domaine_ip')]) + +#### operations( = [>]) +## machines.migrations.0030_auto_20161118_1730 module + + +### class machines.migrations.0030_auto_20161118_1730.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0029_iptype_domaine_range')]) + +#### operations( = [, preserve_default=False>, >, ]) +## machines.migrations.0031_auto_20161119_1709 module + + +### class machines.migrations.0031_auto_20161119_1709.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0030_auto_20161118_1730')]) + +#### operations( = [), ('priority', ), ('name', ), ('zone', )]>, ), ('interface', ), ('zone', )]>, >, >]) +## machines.migrations.0032_auto_20161119_1850 module + + +### class machines.migrations.0032_auto_20161119_1850.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0031_auto_20161119_1709')]) + +#### operations( = [>, >]) +## machines.migrations.0033_extension_need_infra module + + +### class machines.migrations.0033_extension_need_infra.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0032_auto_20161119_1850')]) + +#### operations( = [>]) +## machines.migrations.0034_iplist_need_infra module + + +### class machines.migrations.0034_iplist_need_infra.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0033_extension_need_infra')]) + +#### operations( = [>]) +## machines.migrations.0035_auto_20161224_1201 module + + +### class machines.migrations.0035_auto_20161224_1201.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0034_iplist_need_infra')]) + +#### operations( = []) +## machines.migrations.0036_auto_20161224_1204 module + + +### class machines.migrations.0036_auto_20161224_1204.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0035_auto_20161224_1201')]) + +#### operations( = [, >, ]) +## machines.migrations.0037_domain_cname module + + +### class machines.migrations.0037_domain_cname.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0036_auto_20161224_1204')]) + +#### operations( = [>]) +## machines.migrations.0038_auto_20161224_1721 module + + +### class machines.migrations.0038_auto_20161224_1721.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0037_domain_cname')]) + +#### operations( = [>]) +## machines.migrations.0039_auto_20161224_1732 module + + +### class machines.migrations.0039_auto_20161224_1732.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0038_auto_20161224_1721')]) + +#### operations( = [>]) +## machines.migrations.0040_remove_interface_dns module + + +### class machines.migrations.0040_remove_interface_dns.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0039_auto_20161224_1732')]) + +#### operations( = []) +## machines.migrations.0041_remove_ns_interface module + + +### class machines.migrations.0041_remove_ns_interface.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0040_remove_interface_dns')]) + +#### operations( = []) +## machines.migrations.0042_ns_ns module + + +### class machines.migrations.0042_ns_ns.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0041_remove_ns_interface')]) + +#### operations( = [, preserve_default=False>]) +## machines.migrations.0043_auto_20170721_0350 module + + +### class machines.migrations.0043_auto_20170721_0350.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0042_ns_ns')]) + +#### operations( = [, >]) +## machines.migrations.0044_auto_20170808_0233 module + + +### class machines.migrations.0044_auto_20170808_0233.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0043_auto_20170721_0350')]) + +#### operations( = [), ('service_type', ), ('time_regen', )]>, ), ('last_regen', ), ('asked_regen', ), ('server', ), ('service', )]>, >]) +## machines.migrations.0045_auto_20170808_0348 module + + +### class machines.migrations.0045_auto_20170808_0348.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0044_auto_20170808_0233')]) + +#### operations( = [>, >]) +## machines.migrations.0046_auto_20170808_1423 module + + +### class machines.migrations.0046_auto_20170808_1423.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0045_auto_20170808_0348')]) + +#### operations( = [>]) +## machines.migrations.0047_auto_20170809_0606 module + + +### class machines.migrations.0047_auto_20170809_0606.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0046_auto_20170808_1423')]) + +#### operations( = [, >, >]) +## machines.migrations.0048_auto_20170823_2315 module + + +### class machines.migrations.0048_auto_20170823_2315.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0047_auto_20170809_0606')]) + +#### operations( = [>]) +## machines.migrations.0049_vlan module + + +### class machines.migrations.0049_vlan.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0048_auto_20170823_2315')]) + +#### operations( = [), ('vlan_id', ), ('name', ), ('comment', )]>]) +## machines.migrations.0050_auto_20170826_0022 module + + +### class machines.migrations.0050_auto_20170826_0022.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0049_vlan')]) + +#### operations( = [>]) +## machines.migrations.0051_iptype_vlan module + + +### class machines.migrations.0051_iptype_vlan.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0050_auto_20170826_0022')]) + +#### operations( = [>]) +## machines.migrations.0052_auto_20170828_2322 module + + +### class machines.migrations.0052_auto_20170828_2322.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0051_iptype_vlan')]) + +#### operations( = [, , , preserve_default=False>]) +## machines.migrations.0053_text module + + +### class machines.migrations.0053_text.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0052_auto_20170828_2322')]) + +#### operations( = [), ('field1', ), ('field2', )]>]) +## machines.migrations.0054_text_zone module + + +### class machines.migrations.0054_text_zone.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0053_text')]) + +#### operations( = [, preserve_default=False>]) +## machines.migrations.0055_nas module + + +### class machines.migrations.0055_nas.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0054_text_zone')]) + +#### operations( = [), ('name', ), ('machine_type', ), ('nas_type', )]>]) +## machines.migrations.0056_nas_port_access_mode module + + +### class machines.migrations.0056_nas_port_access_mode.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0055_nas')]) + +#### operations( = [>]) +## machines.migrations.0057_nas_autocapture_mac module + + +### class machines.migrations.0057_nas_autocapture_mac.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0056_nas_port_access_mode')]) + +#### operations( = [>]) +## machines.migrations.0058_auto_20171002_0350 module + + +### class machines.migrations.0058_auto_20171002_0350.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0057_nas_autocapture_mac')]) + +#### operations( = [), ('begin', ), ('end', ), ('protocole', ), ('io', )]>, ), ('name', )]>, >, >]) +## machines.migrations.0059_iptype_prefix_v6 module + + +### class machines.migrations.0059_iptype_prefix_v6.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0058_auto_20171002_0350')]) + +#### operations( = [>]) +## machines.migrations.0060_iptype_ouverture_ports module + + +### class machines.migrations.0060_iptype_ouverture_ports.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0059_iptype_prefix_v6')]) + +#### operations( = [>]) +## machines.migrations.0061_auto_20171015_2033 module + + +### class machines.migrations.0061_auto_20171015_2033.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0060_iptype_ouverture_ports')]) + +#### operations( = [>, >, >, >]) +## machines.migrations.0062_extension_origin_v6 module + + +### class machines.migrations.0062_extension_origin_v6.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0061_auto_20171015_2033')]) + +#### operations( = [>]) +## machines.migrations.0063_auto_20171020_0040 module + + +### class machines.migrations.0063_auto_20171020_0040.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0062_extension_origin_v6'), ('reversion', '0001_squashed_0004_auto_20160611_1202')]) + +#### operations( = [), ('name', ), ('mail', ), ('refresh', ), ('retry', ), ('expire', ), ('ttl', )]>, >]) +## machines.migrations.0064_auto_20171115_0253 module + + +### class machines.migrations.0064_auto_20171115_0253.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0063_auto_20171020_0040')]) + +#### operations( = [>]) +## machines.migrations.0065_auto_20171115_1514 module + + +### class machines.migrations.0065_auto_20171115_1514.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0064_auto_20171115_0253')]) + +#### operations( = []) +## machines.migrations.0066_srv module + + +### class machines.migrations.0066_srv.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0065_auto_20171115_1514')]) + +#### operations( = [), ('service', ), ('protocole', ), ('ttl', ), ('priority', ), ('weight', ), ('port', ), ('extension', ), ('target', )]>]) +## machines.migrations.0067_auto_20171116_0152 module + + +### class machines.migrations.0067_auto_20171116_0152.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0066_srv')]) + +#### operations( = [>, >, >, >]) +## machines.migrations.0068_auto_20171116_0252 module + + +### class machines.migrations.0068_auto_20171116_0252.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0067_auto_20171116_0152')]) + +#### operations( = [>, >, >, >, >]) +## machines.migrations.0069_auto_20171116_0822 module + + +### class machines.migrations.0069_auto_20171116_0822.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0068_auto_20171116_0252')]) + +#### operations( = [>]) +## machines.migrations.0070_auto_20171231_1947 module + + +### class machines.migrations.0070_auto_20171231_1947.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0069_auto_20171116_0822')]) + +#### operations( = [, , , , , , , , , , , , , , , ]) +## machines.migrations.0071_auto_20171231_2100 module + + +### class machines.migrations.0071_auto_20171231_2100.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0070_auto_20171231_1947')]) + +#### operations( = []) +## machines.migrations.0072_auto_20180108_1822 module + + +### class machines.migrations.0072_auto_20180108_1822.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0071_auto_20171231_2100')]) + +#### operations( = []) +## machines.migrations.0073_auto_20180128_2203 module + + +### class machines.migrations.0073_auto_20180128_2203.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0072_auto_20180108_1822')]) + +#### operations( = [), ('ipv6', ), ('slaac_ip', ), ('interface', )]>, ]) +## machines.migrations.0074_auto_20180129_0352 module + + +### class machines.migrations.0074_auto_20180129_0352.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0073_auto_20180128_2203')]) + +#### operations( = []) +## machines.migrations.0075_auto_20180130_0052 module + + +### class machines.migrations.0075_auto_20180130_0052.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0074_auto_20180129_0352')]) + +#### operations( = []) +## machines.migrations.0076_auto_20180130_1623 module + + +### class machines.migrations.0076_auto_20180130_1623.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0075_auto_20180130_0052')]) + +#### operations( = [>]) +## machines.migrations.0077_auto_20180409_2243 module + + +### class machines.migrations.0077_auto_20180409_2243.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0076_auto_20180130_1623')]) + +#### operations( = [>]) +## machines.migrations.0078_auto_20180415_1252 module + + +### class machines.migrations.0078_auto_20180415_1252.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0077_auto_20180409_2243')]) + +#### operations( = [>]) +## machines.migrations.0079_auto_20180416_0107 module + + +### class machines.migrations.0079_auto_20180416_0107.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0078_auto_20180415_1252')]) + +#### operations( = [>, ]) + +### machines.migrations.0079_auto_20180416_0107.rename_permission_soa_to_srv(apps, schema_editor) +## machines.migrations.0080_auto_20180502_2334 module + + +### class machines.migrations.0080_auto_20180502_2334.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0079_auto_20180416_0107')]) + +#### operations( = [>]) +## machines.migrations.0081_auto_20180521_1413 module + + +### class machines.migrations.0081_auto_20180521_1413.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0080_auto_20180502_2334')]) + +#### operations( = [>]) +## machines.migrations.0082_auto_20180525_2209 module + + +### class machines.migrations.0082_auto_20180525_2209.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0081_auto_20180521_1413')]) + +#### operations( = []) +## machines.migrations.0083_remove_duplicate_rights module + + +### class machines.migrations.0083_remove_duplicate_rights.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0082_auto_20180525_2209')]) + +#### operations( = [>, >]) + +### machines.migrations.0083_remove_duplicate_rights.remove_permission_alias(apps, schema_editor) + +### machines.migrations.0083_remove_duplicate_rights.remove_permission_text(apps, schema_editor) +## machines.migrations.0084_dname module + + +### class machines.migrations.0084_dname.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0083_remove_duplicate_rights')]) + +#### operations( = [), ('alias', ), ('zone', )], options={'permissions': (('view_dname', 'Can see a dname object'),), 'verbose_name': 'DNAME entry', 'verbose_name_plural': 'DNAME entries'}, bases=(, , )>]) +## machines.migrations.0085_sshfingerprint module + + +### class machines.migrations.0085_sshfingerprint.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0084_dname')]) + +#### operations( = [), ('pub_key_entry', ), ('algo', ), ('comment', ), ('machine', )], options={'verbose_name': 'SSHFP record', 'verbose_name_plural': 'SSHFP records', 'permissions': (('view_sshfp', 'Can see an SSHFP record'),)}, bases=(, , )>]) +## machines.migrations.0086_role module + + +### class machines.migrations.0086_role.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0085_sshfingerprint')]) + +#### operations( = [), ('role_type', ), ('servers', ), ('specific_role', )], options={'permissions': (('view_role', 'Can view a role.'),), 'verbose_name': 'Server role'}, bases=(, , )>]) +## machines.migrations.0087_dnssec module + + +### class machines.migrations.0087_dnssec.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0086_role')]) + +#### operations( = [>, >]) +## machines.migrations.0088_iptype_prefix_v6_length module + + +### class machines.migrations.0088_iptype_prefix_v6_length.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0087_dnssec')]) + +#### operations( = [>]) +## machines.migrations.0089_auto_20180805_1148 module + + +### class machines.migrations.0089_auto_20180805_1148.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0088_iptype_prefix_v6_length')]) + +#### operations( = [>]) +## machines.migrations.0090_auto_20180805_1459 module + + +### class machines.migrations.0090_auto_20180805_1459.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0089_auto_20180805_1148')]) + +#### operations( = [>]) +## machines.migrations.0091_auto_20180806_2310 module + + +### class machines.migrations.0091_auto_20180806_2310.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0090_auto_20180805_1459')]) + +#### operations( = [>, >]) +## machines.migrations.0092_auto_20180807_0926 module + + +### class machines.migrations.0092_auto_20180807_0926.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0091_auto_20180806_2310')]) + +#### operations( = [, ]) +## machines.migrations.0093_auto_20180807_1115 module + + +### class machines.migrations.0093_auto_20180807_1115.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0092_auto_20180807_0926')]) + +#### operations( = [>, >]) +## machines.migrations.0094_auto_20180815_1918 module + + +### class machines.migrations.0094_auto_20180815_1918.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0093_auto_20180807_1115')]) + +#### operations( = [, , , , , , , , , , , , , , , , , , , , , , >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## machines.migrations.0095_auto_20180919_2225 module + + +### class machines.migrations.0095_auto_20180919_2225.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0094_auto_20180815_1918')]) + +#### operations( = [>, >, >, >, >]) +## machines.migrations.0096_auto_20181013_1417 module + + +### class machines.migrations.0096_auto_20181013_1417.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0095_auto_20180919_2225')]) + +#### operations( = [>]) +## machines.migrations.0097_extension_dnssec module + + +### class machines.migrations.0097_extension_dnssec.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0096_auto_20181013_1417')]) + +#### operations( = [>]) +## machines.migrations.0098_auto_20190102_1745 module + + +### class machines.migrations.0098_auto_20190102_1745.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0097_extension_dnssec')]) + +#### operations( = [>]) +## machines.migrations.0099_role_recursive_dns module + + +### class machines.migrations.0099_role_recursive_dns.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0098_auto_20190102_1745')]) + +#### operations( = [>]) + +### machines.migrations.0099_role_recursive_dns.migrate(apps, schema_editor) +## machines.migrations.0100_auto_20190102_1753 module + + +### class machines.migrations.0100_auto_20190102_1753.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0099_role_recursive_dns')]) + +#### operations( = [>]) +## machines.migrations.0101_auto_20190108_1623 module + + +### class machines.migrations.0101_auto_20190108_1623.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0100_auto_20190102_1753')]) + +#### operations( = [, >, >, >]) +## machines.migrations.0102_auto_20190303_1611 module + + +### class machines.migrations.0102_auto_20190303_1611.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0101_auto_20190108_1623')]) + +#### operations( = [, , ]) +## machines.migrations.0103_auto_20191002_2222 module + + +### class machines.migrations.0103_auto_20191002_2222.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0102_auto_20190303_1611'), ('preferences', '0066_optionalmachine_default_dns_ttl')]) + +#### operations( = [>, >, >, >]) +## machines.migrations.0104_auto_20191002_2231 module + + +### class machines.migrations.0104_auto_20191002_2231.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0103_auto_20191002_2222')]) + +#### operations( = []) +## machines.migrations.0105_dname_ttl module + + +### class machines.migrations.0105_dname_ttl.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0104_auto_20191002_2231')]) + +#### operations( = [>]) +## machines.migrations.0106_auto_20191120_0159 module + + +### class machines.migrations.0106_auto_20191120_0159.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0105_dname_ttl')]) + +#### operations( = [, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## machines.migrations.0107_fix_lowercase_domain module + + +### class machines.migrations.0107_fix_lowercase_domain.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0106_auto_20191120_0159')]) + +#### operations( = [, >]) + +### machines.migrations.0107_fix_lowercase_domain.fix_duplicate(apps, schema_editor) + +### machines.migrations.0107_fix_lowercase_domain.unfix_duplicate(apps, schema_editor) +## Module contents diff --git a/Code-Documentation/autodoc/manage.md b/Code-Documentation/autodoc/manage.md new file mode 100644 index 0000000..4468201 --- /dev/null +++ b/Code-Documentation/autodoc/manage.md @@ -0,0 +1 @@ +# manage module diff --git a/Code-Documentation/autodoc/manager.md b/Code-Documentation/autodoc/manager.md new file mode 100644 index 0000000..37cdf22 --- /dev/null +++ b/Code-Documentation/autodoc/manager.md @@ -0,0 +1,13 @@ +# manager package + +## Submodules + +## manager.defaults module + +## manager.logger module + +## manager.requirements module + +## Module contents + +This is a module to manage Re2o diff --git a/Code-Documentation/autodoc/modules.md b/Code-Documentation/autodoc/modules.md new file mode 100644 index 0000000..28c83c7 --- /dev/null +++ b/Code-Documentation/autodoc/modules.md @@ -0,0 +1,1936 @@ +# re2o + + +* 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 + + + * cotisations.api package + + + * Submodules + + + * cotisations.api.serializers module + + + * cotisations.api.urls module + + + * cotisations.api.views module + + + * Module contents + + + * cotisations.migrations package + + + * Submodules + + + * cotisations.migrations.0001_initial module + + + * cotisations.migrations.0002_remove_facture_article module + + + * cotisations.migrations.0003_auto_20160702_1448 module + + + * cotisations.migrations.0004_auto_20160702_1528 module + + + * cotisations.migrations.0005_auto_20160702_1532 module + + + * cotisations.migrations.0006_auto_20160702_1534 module + + + * cotisations.migrations.0007_auto_20160702_1543 module + + + * cotisations.migrations.0008_auto_20160702_1614 module + + + * cotisations.migrations.0009_remove_cotisation_user module + + + * cotisations.migrations.0010_auto_20160702_1840 module + + + * cotisations.migrations.0011_auto_20160702_1911 module + + + * cotisations.migrations.0012_auto_20160704_0118 module + + + * cotisations.migrations.0013_auto_20160711_2240 module + + + * cotisations.migrations.0014_auto_20160712_0245 module + + + * cotisations.migrations.0015_auto_20160714_2142 module + + + * cotisations.migrations.0016_auto_20160715_0110 module + + + * cotisations.migrations.0017_auto_20170718_2329 module + + + * cotisations.migrations.0018_paiement_type_paiement module + + + * cotisations.migrations.0019_auto_20170819_0055 module + + + * cotisations.migrations.0020_auto_20170819_0057 module + + + * cotisations.migrations.0021_auto_20170819_0104 module + + + * cotisations.migrations.0022_auto_20170824_0128 module + + + * cotisations.migrations.0023_auto_20170902_1303 module + + + * cotisations.migrations.0024_auto_20171015_2033 module + + + * cotisations.migrations.0025_article_type_user module + + + * cotisations.migrations.0026_auto_20171028_0126 module + + + * cotisations.migrations.0027_auto_20171029_1156 module + + + * cotisations.migrations.0028_auto_20171231_0007 module + + + * cotisations.migrations.0029_auto_20180414_2056 module + + + * cotisations.migrations.0030_custom_payment module + + + * cotisations.migrations.0031_comnpaypayment_production module + + + * cotisations.migrations.0032_custom_invoice module + + + * cotisations.migrations.0033_auto_20180818_1319 module + + + * cotisations.migrations.0034_auto_20180831_1532 module + + + * cotisations.migrations.0035_notepayment module + + + * cotisations.migrations.0036_custominvoice_remark module + + + * cotisations.migrations.0037_costestimate module + + + * cotisations.migrations.0038_auto_20181231_1657 module + + + * cotisations.migrations.0039_freepayment module + + + * cotisations.migrations.0040_auto_20191002_2335 module + + + * cotisations.migrations.0041_auto_20191103_2131 module + + + * cotisations.migrations.0042_auto_20191120_0159 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 + + + * 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 + + +* deployments package + + + * Subpackages + + + * deployments.migrations package + + + * Submodules + + + * deployments.migrations.0001_initial module + + + * deployments.migrations.0002_auto_20200418_2016 module + + + * Module contents + + + * 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 + + + * logs.templatetags package + + + * Submodules + + + * logs.templatetags.logs_extra module + + + * Module contents + + + * Submodules + + + * logs.acl module + + + * logs.forms module + + + * logs.models module + + + * logs.tests module + + + * logs.urls module + + + * logs.views module + + + * Module contents + + +* machines package + + + * Subpackages + + + * machines.api package + + + * Submodules + + + * machines.api.serializers module + + + * machines.api.urls module + + + * machines.api.views module + + + * Module contents + + + * machines.migrations package + + + * Submodules + + + * machines.migrations.0001_initial module + + + * machines.migrations.0002_auto_20160703_1444 module + + + * machines.migrations.0003_auto_20160703_1450 module + + + * machines.migrations.0004_auto_20160703_1451 module + + + * machines.migrations.0005_auto_20160703_1523 module + + + * machines.migrations.0006_auto_20160703_1813 module + + + * machines.migrations.0007_auto_20160703_1816 module + + + * machines.migrations.0008_remove_interface_ipv6 module + + + * machines.migrations.0009_auto_20160703_2358 module + + + * machines.migrations.0010_auto_20160704_0104 module + + + * machines.migrations.0011_auto_20160704_0105 module + + + * machines.migrations.0012_auto_20160704_0118 module + + + * machines.migrations.0013_auto_20160705_1014 module + + + * machines.migrations.0014_auto_20160706_1220 module + + + * machines.migrations.0015_auto_20160707_0105 module + + + * machines.migrations.0016_auto_20160708_1633 module + + + * machines.migrations.0017_auto_20160708_1645 module + + + * machines.migrations.0018_auto_20160708_1813 module + + + * machines.migrations.0019_auto_20160718_1141 module + + + * machines.migrations.0020_auto_20160718_1849 module + + + * machines.migrations.0021_auto_20161006_1943 module + + + * machines.migrations.0022_auto_20161011_1829 module + + + * machines.migrations.0023_iplist_ip_type module + + + * machines.migrations.0024_machinetype_need_infra module + + + * machines.migrations.0025_auto_20161023_0038 module + + + * machines.migrations.0026_auto_20161026_1348 module + + + * machines.migrations.0027_alias module + + + * machines.migrations.0028_iptype_domaine_ip module + + + * machines.migrations.0029_iptype_domaine_range module + + + * machines.migrations.0030_auto_20161118_1730 module + + + * machines.migrations.0031_auto_20161119_1709 module + + + * machines.migrations.0032_auto_20161119_1850 module + + + * machines.migrations.0033_extension_need_infra module + + + * machines.migrations.0034_iplist_need_infra module + + + * machines.migrations.0035_auto_20161224_1201 module + + + * machines.migrations.0036_auto_20161224_1204 module + + + * machines.migrations.0037_domain_cname module + + + * machines.migrations.0038_auto_20161224_1721 module + + + * machines.migrations.0039_auto_20161224_1732 module + + + * machines.migrations.0040_remove_interface_dns module + + + * machines.migrations.0041_remove_ns_interface module + + + * machines.migrations.0042_ns_ns module + + + * machines.migrations.0043_auto_20170721_0350 module + + + * machines.migrations.0044_auto_20170808_0233 module + + + * machines.migrations.0045_auto_20170808_0348 module + + + * machines.migrations.0046_auto_20170808_1423 module + + + * machines.migrations.0047_auto_20170809_0606 module + + + * machines.migrations.0048_auto_20170823_2315 module + + + * machines.migrations.0049_vlan module + + + * machines.migrations.0050_auto_20170826_0022 module + + + * machines.migrations.0051_iptype_vlan module + + + * machines.migrations.0052_auto_20170828_2322 module + + + * machines.migrations.0053_text module + + + * machines.migrations.0054_text_zone module + + + * machines.migrations.0055_nas module + + + * machines.migrations.0056_nas_port_access_mode module + + + * machines.migrations.0057_nas_autocapture_mac module + + + * machines.migrations.0058_auto_20171002_0350 module + + + * machines.migrations.0059_iptype_prefix_v6 module + + + * machines.migrations.0060_iptype_ouverture_ports module + + + * machines.migrations.0061_auto_20171015_2033 module + + + * machines.migrations.0062_extension_origin_v6 module + + + * machines.migrations.0063_auto_20171020_0040 module + + + * machines.migrations.0064_auto_20171115_0253 module + + + * machines.migrations.0065_auto_20171115_1514 module + + + * machines.migrations.0066_srv module + + + * machines.migrations.0067_auto_20171116_0152 module + + + * machines.migrations.0068_auto_20171116_0252 module + + + * machines.migrations.0069_auto_20171116_0822 module + + + * machines.migrations.0070_auto_20171231_1947 module + + + * machines.migrations.0071_auto_20171231_2100 module + + + * machines.migrations.0072_auto_20180108_1822 module + + + * machines.migrations.0073_auto_20180128_2203 module + + + * machines.migrations.0074_auto_20180129_0352 module + + + * machines.migrations.0075_auto_20180130_0052 module + + + * machines.migrations.0076_auto_20180130_1623 module + + + * machines.migrations.0077_auto_20180409_2243 module + + + * machines.migrations.0078_auto_20180415_1252 module + + + * machines.migrations.0079_auto_20180416_0107 module + + + * machines.migrations.0080_auto_20180502_2334 module + + + * machines.migrations.0081_auto_20180521_1413 module + + + * machines.migrations.0082_auto_20180525_2209 module + + + * machines.migrations.0083_remove_duplicate_rights module + + + * machines.migrations.0084_dname module + + + * machines.migrations.0085_sshfingerprint module + + + * machines.migrations.0086_role module + + + * machines.migrations.0087_dnssec module + + + * machines.migrations.0088_iptype_prefix_v6_length module + + + * machines.migrations.0089_auto_20180805_1148 module + + + * machines.migrations.0090_auto_20180805_1459 module + + + * machines.migrations.0091_auto_20180806_2310 module + + + * machines.migrations.0092_auto_20180807_0926 module + + + * machines.migrations.0093_auto_20180807_1115 module + + + * machines.migrations.0094_auto_20180815_1918 module + + + * machines.migrations.0095_auto_20180919_2225 module + + + * machines.migrations.0096_auto_20181013_1417 module + + + * machines.migrations.0097_extension_dnssec module + + + * machines.migrations.0098_auto_20190102_1745 module + + + * machines.migrations.0099_role_recursive_dns module + + + * machines.migrations.0100_auto_20190102_1753 module + + + * machines.migrations.0101_auto_20190108_1623 module + + + * machines.migrations.0102_auto_20190303_1611 module + + + * machines.migrations.0103_auto_20191002_2222 module + + + * machines.migrations.0104_auto_20191002_2231 module + + + * machines.migrations.0105_dname_ttl module + + + * machines.migrations.0106_auto_20191120_0159 module + + + * machines.migrations.0107_fix_lowercase_domain module + + + * Module contents + + + * Submodules + + + * machines.acl module + + + * machines.admin module + + + * machines.forms module + + + * machines.models module + + + * machines.tests module + + + * machines.urls module + + + * machines.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 + + + * preferences.api package + + + * Submodules + + + * preferences.api.serializers module + + + * preferences.api.urls module + + + * preferences.api.views module + + + * Module contents + + + * preferences.migrations package + + + * Submodules + + + * preferences.migrations.0001_initial module + + + * preferences.migrations.0002_auto_20170625_1923 module + + + * preferences.migrations.0003_optionaluser_solde_negatif module + + + * preferences.migrations.0004_assooption_services module + + + * preferences.migrations.0005_auto_20170824_0139 module + + + * preferences.migrations.0006_auto_20170824_0143 module + + + * preferences.migrations.0007_auto_20170824_2056 module + + + * preferences.migrations.0008_auto_20170824_2122 module + + + * preferences.migrations.0009_assooption_utilisateur_asso module + + + * preferences.migrations.0010_auto_20170825_0459 module + + + * preferences.migrations.0011_auto_20170825_2307 module + + + * preferences.migrations.0012_generaloption_req_expire_hrs module + + + * preferences.migrations.0013_generaloption_site_name module + + + * preferences.migrations.0014_generaloption_email_from module + + + * preferences.migrations.0015_optionaltopologie_radius_general_policy module + + + * preferences.migrations.0016_auto_20170902_1520 module + + + * preferences.migrations.0017_mailmessageoption module + + + * preferences.migrations.0018_optionaltopologie_mac_autocapture module + + + * preferences.migrations.0019_remove_optionaltopologie_mac_autocapture module + + + * preferences.migrations.0020_optionalmachine_ipv6 module + + + * preferences.migrations.0021_auto_20171015_1741 module + + + * preferences.migrations.0022_auto_20171015_1758 module + + + * preferences.migrations.0023_auto_20171015_2033 module + + + * preferences.migrations.0024_optionaluser_all_can_create module + + + * preferences.migrations.0025_auto_20171231_2142 module + + + * preferences.migrations.0025_generaloption_general_message module + + + * preferences.migrations.0026_auto_20171216_0401 module + + + * preferences.migrations.0027_merge_20180106_2019 module + + + * preferences.migrations.0028_assooption_description module + + + * preferences.migrations.0028_auto_20180111_1129 module + + + * preferences.migrations.0028_auto_20180128_2203 module + + + * preferences.migrations.0029_auto_20180111_1134 module + + + * preferences.migrations.0029_auto_20180318_0213 module + + + * preferences.migrations.0029_auto_20180318_1005 module + + + * preferences.migrations.0030_auto_20180111_2346 module + + + * preferences.migrations.0030_merge_20180320_1419 module + + + * preferences.migrations.0031_auto_20180323_0218 module + + + * preferences.migrations.0031_optionaluser_self_adhesion module + + + * preferences.migrations.0032_optionaluser_min_online_payment module + + + * preferences.migrations.0032_optionaluser_shell_default module + + + * preferences.migrations.0033_accueiloption module + + + * preferences.migrations.0033_generaloption_gtu_sum_up module + + + * preferences.migrations.0034_auto_20180114_2025 module + + + * preferences.migrations.0034_auto_20180416_1120 module + + + * preferences.migrations.0035_auto_20180114_2132 module + + + * preferences.migrations.0035_optionaluser_allow_self_subscription module + + + * preferences.migrations.0036_auto_20180114_2141 module + + + * preferences.migrations.0037_auto_20180114_2156 module + + + * preferences.migrations.0038_auto_20180114_2209 module + + + * preferences.migrations.0039_auto_20180115_0003 module + + + * preferences.migrations.0040_auto_20180129_1745 module + + + * preferences.migrations.0041_merge_20180130_0052 module + + + * preferences.migrations.0042_auto_20180222_1743 module + + + * preferences.migrations.0043_optionalmachine_create_machine module + + + * preferences.migrations.0044_remove_payment_pass module + + + * preferences.migrations.0045_remove_unused_payment_fields module + + + * preferences.migrations.0046_optionaluser_mail_extension module + + + * preferences.migrations.0047_mailcontact module + + + * preferences.migrations.0048_auto_20180811_1515 module + + + * preferences.migrations.0049_optionaluser_self_change_shell module + + + * preferences.migrations.0050_auto_20180818_1329 module + + + * preferences.migrations.0051_auto_20180919_2225 module + + + * preferences.migrations.0052_optionaluser_delete_notyetactive module + + + * preferences.migrations.0053_optionaluser_self_change_room module + + + * preferences.migrations.0055_generaloption_main_site_url module + + + * preferences.migrations.0056_1_radiusoption module + + + * preferences.migrations.0056_2_radiusoption module + + + * preferences.migrations.0056_3_radiusoption module + + + * preferences.migrations.0056_4_radiusoption module + + + * preferences.migrations.0057_optionaluser_all_users_active module + + + * preferences.migrations.0058_auto_20190108_1650 module + + + * preferences.migrations.0059_auto_20190120_1739 module + + + * preferences.migrations.0060_auto_20190712_1821 module + + + * preferences.migrations.0061_optionaluser_allow_archived_connexion module + + + * preferences.migrations.0062_auto_20190910_1909 module + + + * preferences.migrations.0063_mandate module + + + * preferences.migrations.0064_auto_20191008_1335 module + + + * preferences.migrations.0065_auto_20191010_1227 module + + + * preferences.migrations.0066_optionalmachine_default_dns_ttl module + + + * preferences.migrations.0067_auto_20191120_0159 module + + + * preferences.migrations.0068_optionaluser_allow_set_password_during_user_creation module + + + * preferences.migrations.0069_optionaluser_disable_emailnotyetconfirmed module + + + * preferences.migrations.0070_auto_20200419_0225 module + + + * preferences.migrations.0071_optionaluser_self_change_pseudo module + + + * Module contents + + + * preferences.templatetags package + + + * Module contents + + + * Submodules + + + * preferences.acl module + + + * preferences.admin module + + + * preferences.forms module + + + * preferences.models module + + + * preferences.tests module + + + * preferences.urls module + + + * preferences.views module + + + * Module contents + + +* re2o package + + + * Subpackages + + + * re2o.management package + + + * Subpackages + + + * 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 + + + * 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 + + +* 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 + + + * tickets.migrations package + + + * Submodules + + + * tickets.migrations.0001_initial module + + + * tickets.migrations.0002_auto_20191120_0159 module + + + * tickets.migrations.0003_auto_20200422_1839 module + + + * tickets.migrations.0004_auto_20200422_2127 module + + + * tickets.migrations.0005_auto_20200422_2309 module + + + * tickets.migrations.0006_auto_20200423_0202 module + + + * tickets.migrations.0007_ticket_language module + + + * Module contents + + + * Submodules + + + * tickets.admin module + + + * tickets.apps module + + + * tickets.forms module + + + * tickets.models module + + + * tickets.tests module + + + * tickets.urls module + + + * tickets.views module + + + * Module contents + + +* topologie package + + + * Subpackages + + + * topologie.api package + + + * Submodules + + + * topologie.api.serializers module + + + * topologie.api.urls module + + + * topologie.api.views module + + + * Module contents + + + * topologie.migrations package + + + * Submodules + + + * topologie.migrations.0001_initial module + + + * topologie.migrations.0002_auto_20160703_1118 module + + + * topologie.migrations.0003_room module + + + * topologie.migrations.0004_auto_20160703_1122 module + + + * topologie.migrations.0005_auto_20160703_1123 module + + + * topologie.migrations.0006_auto_20160703_1129 module + + + * topologie.migrations.0007_auto_20160703_1148 module + + + * topologie.migrations.0008_port_room module + + + * topologie.migrations.0009_auto_20160703_1200 module + + + * topologie.migrations.0010_auto_20160704_2148 module + + + * topologie.migrations.0011_auto_20160704_2153 module + + + * topologie.migrations.0012_port_machine_interface module + + + * topologie.migrations.0013_port_related module + + + * topologie.migrations.0014_auto_20160706_1238 module + + + * topologie.migrations.0015_auto_20160706_1452 module + + + * topologie.migrations.0016_auto_20160706_1531 module + + + * topologie.migrations.0017_auto_20160718_1141 module + + + * topologie.migrations.0018_room_details module + + + * topologie.migrations.0019_auto_20161026_1348 module + + + * topologie.migrations.0020_auto_20161119_0033 module + + + * topologie.migrations.0021_port_radius module + + + * topologie.migrations.0022_auto_20161211_1622 module + + + * topologie.migrations.0023_auto_20170817_1654 module + + + * topologie.migrations.0023_auto_20170826_1530 module + + + * topologie.migrations.0024_auto_20170818_1021 module + + + * topologie.migrations.0024_auto_20170826_1800 module + + + * topologie.migrations.0025_merge_20170902_1242 module + + + * topologie.migrations.0026_auto_20170902_1245 module + + + * topologie.migrations.0027_auto_20170905_1442 module + + + * topologie.migrations.0028_auto_20170913_1503 module + + + * topologie.migrations.0029_auto_20171002_0334 module + + + * topologie.migrations.0030_auto_20171004_0235 module + + + * topologie.migrations.0031_auto_20171015_2033 module + + + * topologie.migrations.0032_auto_20171026_0338 module + + + * topologie.migrations.0033_auto_20171231_1743 module + + + * topologie.migrations.0034_borne module + + + * topologie.migrations.0035_auto_20180324_0023 module + + + * topologie.migrations.0036_transferborne module + + + * topologie.migrations.0037_auto_20180325_0127 module + + + * topologie.migrations.0038_transfersw module + + + * topologie.migrations.0039_port_new_switch module + + + * topologie.migrations.0040_transferports module + + + * topologie.migrations.0041_transferportsw module + + + * topologie.migrations.0042_transferswitch module + + + * topologie.migrations.0043_renamenewswitch module + + + * topologie.migrations.0044_auto_20180326_0002 module + + + * topologie.migrations.0045_auto_20180326_0123 module + + + * topologie.migrations.0046_auto_20180326_0129 module + + + * topologie.migrations.0047_ap_machine module + + + * topologie.migrations.0048_ap_machine module + + + * topologie.migrations.0049_switchs_machine module + + + * topologie.migrations.0050_port_new_switch module + + + * topologie.migrations.0051_switchs_machine module + + + * topologie.migrations.0052_transferports module + + + * topologie.migrations.0053_finalsw module + + + * topologie.migrations.0054_auto_20180326_1742 module + + + * topologie.migrations.0055_auto_20180329_0431 module + + + * topologie.migrations.0056_building_switchbay module + + + * topologie.migrations.0057_auto_20180408_0316 module + + + * topologie.migrations.0058_remove_switch_location module + + + * topologie.migrations.0059_auto_20180415_2249 module + + + * topologie.migrations.0060_server module + + + * topologie.migrations.0061_portprofile module + + + * topologie.migrations.0062_auto_20180815_1918 module + + + * topologie.migrations.0063_auto_20180919_2225 module + + + * topologie.migrations.0064_switch_automatic_provision module + + + * topologie.migrations.0065_auto_20180927_1836 module + + + * topologie.migrations.0066_modelswitch_commercial_name module + + + * topologie.migrations.0067_auto_20181230_1819 module + + + * topologie.migrations.0068_auto_20190102_1758 module + + + * topologie.migrations.0069_auto_20190108_1439 module + + + * topologie.migrations.0070_auto_20190218_1743 module + + + * topologie.migrations.0071_auto_20190218_1936 module + + + * topologie.migrations.0072_auto_20190720_2318 module + + + * topologie.migrations.0073_auto_20191120_0159 module + + + * topologie.migrations.0074_auto_20200419_1640 module + + + * Module contents + + + * Submodules + + + * topologie.acl module + + + * topologie.admin module + + + * topologie.forms module + + + * topologie.models module + + + * topologie.tests module + + + * topologie.urls module + + + * topologie.views module + + + * Module contents + + +* users package + + + * Subpackages + + + * users.api package + + + * Submodules + + + * users.api.serializers module + + + * users.api.urls module + + + * users.api.views module + + + * Module contents + + + * users.migrations package + + + * Submodules + + + * users.migrations.0001_initial module + + + * users.migrations.0002_auto_20160630_2301 module + + + * users.migrations.0003_listrights_rights module + + + * users.migrations.0004_auto_20160701_2312 module + + + * users.migrations.0005_auto_20160702_0006 module + + + * users.migrations.0006_ban module + + + * users.migrations.0007_auto_20160702_2322 module + + + * users.migrations.0008_user_registered module + + + * users.migrations.0009_user_room module + + + * users.migrations.0010_auto_20160703_1226 module + + + * users.migrations.0011_auto_20160703_1227 module + + + * users.migrations.0012_auto_20160703_1230 module + + + * users.migrations.0013_auto_20160704_1547 module + + + * users.migrations.0014_auto_20160704_1548 module + + + * users.migrations.0015_whitelist module + + + * users.migrations.0016_auto_20160706_1220 module + + + * users.migrations.0017_auto_20160707_0105 module + + + * users.migrations.0018_auto_20160707_0115 module + + + * users.migrations.0019_auto_20160708_1633 module + + + * users.migrations.0020_request module + + + * users.migrations.0021_ldapuser module + + + * users.migrations.0022_ldapuser_sambasid module + + + * users.migrations.0023_auto_20160724_1908 module + + + * users.migrations.0024_remove_ldapuser_mac_list module + + + * users.migrations.0025_listshell module + + + * users.migrations.0026_user_shell module + + + * users.migrations.0027_auto_20160726_0216 module + + + * users.migrations.0028_auto_20160726_0227 module + + + * users.migrations.0029_auto_20160726_0229 module + + + * users.migrations.0030_auto_20160726_0357 module + + + * users.migrations.0031_auto_20160726_0359 module + + + * users.migrations.0032_auto_20160727_2122 module + + + * users.migrations.0033_remove_ldapuser_loginshell module + + + * users.migrations.0034_auto_20161018_0037 module + + + * users.migrations.0035_auto_20161018_0046 module + + + * users.migrations.0036_auto_20161022_2146 module + + + * users.migrations.0037_auto_20161028_1906 module + + + * users.migrations.0038_auto_20161031_0258 module + + + * users.migrations.0039_auto_20161119_0033 module + + + * users.migrations.0040_auto_20161119_1709 module + + + * users.migrations.0041_listright_details module + + + * users.migrations.0042_auto_20161126_2028 module + + + * users.migrations.0043_auto_20161224_1156 module + + + * users.migrations.0043_ban_state module + + + * users.migrations.0044_user_ssh_public_key module + + + * users.migrations.0045_merge module + + + * users.migrations.0046_auto_20170617_1433 module + + + * users.migrations.0047_auto_20170618_0156 module + + + * users.migrations.0048_auto_20170618_0210 module + + + * users.migrations.0049_auto_20170618_1424 module + + + * users.migrations.0050_serviceuser_comment module + + + * users.migrations.0051_user_telephone module + + + * users.migrations.0052_ldapuser_shadowexpire module + + + * users.migrations.0053_auto_20170626_2105 module + + + * users.migrations.0054_auto_20170626_2219 module + + + * users.migrations.0055_auto_20171003_0556 module + + + * users.migrations.0056_auto_20171015_2033 module + + + * users.migrations.0057_auto_20171023_0301 module + + + * users.migrations.0058_auto_20171025_0154 module + + + * users.migrations.0059_auto_20171025_1854 module + + + * users.migrations.0060_auto_20171120_0317 module + + + * users.migrations.0061_auto_20171230_2033 module + + + * users.migrations.0062_auto_20171231_0056 module + + + * users.migrations.0063_auto_20171231_0140 module + + + * users.migrations.0064_auto_20171231_0150 module + + + * users.migrations.0065_auto_20171231_2053 module + + + * users.migrations.0066_grouppermissions module + + + * users.migrations.0067_serveurpermission module + + + * users.migrations.0068_auto_20180107_2245 module + + + * users.migrations.0069_club_mailing module + + + * users.migrations.0070_auto_20180324_1906 module + + + * users.migrations.0071_auto_20180415_1252 module + + + * users.migrations.0072_auto_20180426_2021 module + + + * users.migrations.0073_auto_20180629_1614 module + + + * users.migrations.0074_auto_20180810_2104 module + + + * users.migrations.0074_auto_20180814_1059 module + + + * users.migrations.0075_merge_20180815_2202 module + + + * users.migrations.0076_auto_20180818_1321 module + + + * users.migrations.0077_auto_20180824_1750 module + + + * users.migrations.0078_auto_20181011_1405 module + + + * users.migrations.0079_auto_20181228_2039 module + + + * users.migrations.0080_auto_20190108_1726 module + + + * users.migrations.0081_auto_20190317_0302 module + + + * users.migrations.0082_auto_20190908_1338 module + + + * users.migrations.0083_user_shortcuts_enabled module + + + * users.migrations.0084_auto_20191120_0159 module + + + * users.migrations.0085_user_email_state module + + + * users.migrations.0086_user_email_change_date module + + + * users.migrations.0087_request_email module + + + * users.migrations.0088_auto_20200417_2312 module + + + * users.migrations.0089_auto_20200418_0112 module + + + * users.migrations.0090_auto_20200421_1825 module + + + * users.migrations.0091_auto_20200423_1256 module + + + * users.migrations.0092_auto_20200423_1804 module + + + * Module contents + + + * 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 diff --git a/Code-Documentation/autodoc/multi_op.md b/Code-Documentation/autodoc/multi_op.md new file mode 100644 index 0000000..0245aab --- /dev/null +++ b/Code-Documentation/autodoc/multi_op.md @@ -0,0 +1,40 @@ +# 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': }) + +#### declared_fields( = {'dormitory': }) + +#### property media() +## multi_op.tests module + +## multi_op.urls module + +## multi_op.views module + +## Module contents diff --git a/Code-Documentation/autodoc/preferences.api.md b/Code-Documentation/autodoc/preferences.api.md new file mode 100644 index 0000000..e768a64 --- /dev/null +++ b/Code-Documentation/autodoc/preferences.api.md @@ -0,0 +1,355 @@ +# preferences.api package + +## Submodules + +## preferences.api.serializers module + + +### class preferences.api.serializers.AssoOptionSerializer(instance=None, data=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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=, \*\*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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = ) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### 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( = (,)) + +#### perms_map( = {'GET': [>]}) + +#### serializer_class() +alias of `preferences.api.serializers.RadiusOptionSerializer` + +## Module contents diff --git a/Code-Documentation/autodoc/preferences.md b/Code-Documentation/autodoc/preferences.md new file mode 100644 index 0000000..1563e97 --- /dev/null +++ b/Code-Documentation/autodoc/preferences.md @@ -0,0 +1,2117 @@ +# preferences package + +## Subpackages + + +* preferences.api package + + + * Submodules + + + * preferences.api.serializers module + + + * preferences.api.urls module + + + * preferences.api.views module + + + * Module contents + + +* preferences.templatetags package + + + * Module contents + + +## Submodules + +## preferences.acl module + +preferences.acl + +Here are defined some functions to check acl on the application. + + +### preferences.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). + + +## preferences.admin module + +Classes admin pour les models de preferences + + +### class preferences.admin.AssoOptionAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options de l’asso + + +#### property media() + +### class preferences.admin.DocumentTemplateAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin class for DocumentTemplate + + +#### property media() + +### class preferences.admin.GeneralOptionAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options générales + + +#### property media() + +### class preferences.admin.HomeOptionAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options home + + +#### property media() + +### class preferences.admin.MailContactAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Admin class for contact email adresses + + +#### property media() + +### class preferences.admin.MailMessageOptionAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options mail + + +#### property media() + +### class preferences.admin.OptionalMachineAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options machines + + +#### property media() + +### class preferences.admin.OptionalTopologieAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options topologie + + +#### property media() + +### class preferences.admin.OptionalUserAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin options user + + +#### property media() + +### class preferences.admin.RadiusKeyAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class radiuskey + + +#### property media() + +### class preferences.admin.ReminderAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class reminder for switch + + +#### property media() + +### class preferences.admin.ServiceAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class admin gestion des services de la page d’accueil + + +#### property media() + +### class preferences.admin.SwitchManagementCredAdmin(\*args, \*\*kwargs) +Bases: `reversion.admin.VersionAdmin` + +Class managementcred for switch + + +#### property media() +## preferences.forms module + +Formulaire d’edition des réglages : user, machine, topologie, asso… + + +### class preferences.forms.DelDocumentTemplateForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.forms.Form` + +Form used to delete one or more document templatess. +The use must choose the one to delete by checking the boxes. + + +#### base_fields( = {'document_templates': }) + +#### declared_fields( = {'document_templates': }) + +#### property media() + +### class preferences.forms.DelMailContactForm(\*args, \*\*kwargs) +Bases: `django.forms.forms.Form` + +Delete contact email adress + + +#### base_fields( = {'mailcontacts': }) + +#### declared_fields( = {'mailcontacts': }) + +#### property media() + +### class preferences.forms.DelRadiusAttributeForm(\*args, \*\*kwargs) +Bases: `django.forms.forms.Form` + +Delete RADIUS attributes + + +#### base_fields( = {'attributes': }) + +#### declared_fields( = {'attributes': }) + +#### property media() + +### class preferences.forms.DelServiceForm(\*args, \*\*kwargs) +Bases: `django.forms.forms.Form` + +Suppression de services sur la page d’accueil + + +#### base_fields( = {'services': }) + +#### declared_fields( = {'services': }) + +#### property media() + +### class preferences.forms.DocumentTemplateForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Form used to create a document template. + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.DocumentTemplate` + + +#### base_fields( = {'name': , 'template': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditAssoOptionForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Options de l’asso (addresse, telephone, etc) + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.AssoOption` + + +#### base_fields( = {'adresse1': , 'adresse2': , 'contact': , 'description': , 'name': , 'pseudo': , 'siret': , 'telephone': , 'utilisateur_asso': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditCotisationsOptionForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None) +Bases: `django.forms.models.ModelForm` + +Edition forms for Cotisations options + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.CotisationsOption` + + +#### base_fields( = {'invoice_template': , 'send_voucher_mail': , 'voucher_template': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditGeneralOptionForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Options générales (affichages de résultats de recherche, etc) + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.GeneralOption` + + +#### base_fields( = {'GTU': , 'GTU_sum_up': , 'email_from': , 'general_message_en': , 'general_message_fr': , 'main_site_url': , 'pagination_large_number': , 'pagination_number': , 'req_expire_hrs': , 'search_display_page': , 'site_name': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditHomeOptionForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Edition forms of Home options + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.HomeOption` + + +#### base_fields( = {'facebook_url': , 'twitter_account_name': , 'twitter_url': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditMailMessageOptionForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Formulaire d’edition des messages de bienvenue personnalisés + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.MailMessageOption` + + +#### base_fields( = {'welcome_mail_en': , 'welcome_mail_fr': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditOptionalMachineForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Options machines (max de machines, etc) + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.OptionalMachine` + + +#### base_fields( = {'create_machine': , 'default_dns_ttl': , 'ipv6_mode': , 'max_lambdauser_aliases': , 'max_lambdauser_interfaces': , 'password_machine': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditOptionalTopologieForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Options de topologie, formulaire d’edition (vlan par default etc) +On rajoute un champ automatic provision switchs pour gérer facilement +l’ajout de switchs au provisionning automatique + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.OptionalTopologie` + + +#### base_fields( = {'automatic_provision_switchs': , 'sftp_login': , 'sftp_pass': , 'switchs_ip_type': , 'switchs_provision': , 'switchs_rest_management': , 'switchs_web_management': , 'switchs_web_management_ssl': }) + +#### declared_fields( = {'automatic_provision_switchs': }) + +#### property media() + +#### save(commit=True) +Save this form’s self.instance object if commit=True. Otherwise, add +a save_m2m() method to the form which can be called after the instance +is saved manually at a later time. Return the model instance. + + +### class preferences.forms.EditOptionalUserForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Formulaire d’édition des options de l’user. (solde, telephone..) + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.OptionalUser` + + +#### base_fields( = {'all_can_create_adherent': , 'all_can_create_club': , 'all_users_active': , 'allow_archived_connexion': , 'allow_set_password_during_user_creation': , 'delete_notyetactive': , 'disable_emailnotyetconfirmed': , 'gpg_fingerprint': , 'is_tel_mandatory': , 'local_email_accounts_enabled': , 'local_email_domain': , 'max_email_address': , 'self_adhesion': , 'self_change_pseudo': , 'self_change_shell': , 'self_room_policy': , 'shell_default': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.EditRadiusOptionForm(data=None, files=None, auto_id='id_%s', prefix=None, initial=None, error_class=, label_suffix=None, empty_permitted=False, instance=None, use_required_attribute=None) +Bases: `django.forms.models.ModelForm` + +Edition forms for Radius options + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.RadiusOption` + + +#### base_fields( = {'banned': , 'banned_attributes': , 'banned_vlan': , 'non_member': , 'non_member_attributes': , 'non_member_vlan': , 'ok_attributes': , 'radius_general_policy': , 'unknown_machine': , 'unknown_machine_attributes': , 'unknown_machine_vlan': , 'unknown_port': , 'unknown_port_attributes': , 'unknown_port_vlan': , 'unknown_room': , 'unknown_room_attributes': , 'unknown_room_vlan': , 'vlan_decision_ok': }) + +#### clean() +Hook for doing any extra form-wide cleaning after Field.clean() has been +called on every field. Any ValidationError raised by this method will +not be associated with a particular field; it will have a special-case +association with the field named ‘__all__’. + + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.MailContactForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Edition, ajout d’adresse de contact + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.MailContact` + + +#### base_fields( = {'address': , 'commentary': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.MandateForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Edit Mandates + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.Mandate` + + +#### base_fields( = {'end_date': , 'president': , 'start_date': }) + +#### clean() +Hook for doing any extra form-wide cleaning after Field.clean() has been +called on every field. Any ValidationError raised by this method will +not be associated with a particular field; it will have a special-case +association with the field named ‘__all__’. + + +#### clean_end_date() + +#### clean_start_date() + +#### declared_fields( = {}) + +#### property media() + +#### save(commit=True) +Warning, side effect : if a mandate with a null end_date +exists, its end_date will be set to instance.start_date, no matter the +value of commit. + + +### class preferences.forms.RadiusAttributeForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Edit and add RADIUS attributes. + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.RadiusAttribute` + + +#### base_fields( = {'attribute': , 'comment': , 'value': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.RadiusKeyForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Edition, ajout de clef radius + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.RadiusKey` + + +#### base_fields( = {'comment': , 'default_switch': , 'members': , 'radius_key': }) + +#### declared_fields( = {'members': }) + +#### property media() + +#### save(commit=True) +Create a version of this object and save it to database + + +### class preferences.forms.ReminderForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Edition, ajout de services sur la page d’accueil + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.Reminder` + + +#### base_fields( = {'days': , 'message': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.ServiceForm(\*args, \*\*kwargs) +Bases: `django.forms.models.ModelForm` + +Edition, ajout de services sur la page d’accueil + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.Service` + + +#### base_fields( = {'description': , 'image': , 'name': , 'url': }) + +#### declared_fields( = {}) + +#### property media() + +### class preferences.forms.SwitchManagementCredForm(\*args, \*\*kwargs) +Bases: `re2o.mixins.FormRevMixin`, `django.forms.models.ModelForm` + +Edition, ajout de creds de management pour gestion +et interface rest des switchs + + +#### class Meta() +Bases: `object` + + +#### fields( = '__all__') + +#### model() +alias of `preferences.models.SwitchManagementCred` + + +#### base_fields( = {'default_switch': , 'management_id': , 'management_pass': , 'members': }) + +#### declared_fields( = {'members': }) + +#### property media() + +#### save(commit=True) +Create a version of this object and save it to database + +## preferences.models module + +Reglages généraux, machines, utilisateurs, mail, general pour l’application. + + +### class preferences.models.AssoOption(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + +Options générales de l’asso : siret, addresse, nom, etc + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### adresse1() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### adresse2() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### contact() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### description() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### pseudo() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### siret() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### telephone() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### utilisateur_asso() +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. + + +#### utilisateur_asso_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.CotisationsOption(id, invoice_template, voucher_template, send_voucher_mail) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### invoice_template() +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. + + +#### invoice_template_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### send_voucher_mail() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### voucher_template() +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. + + +#### voucher_template_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.DocumentTemplate(\*args, \*\*kwargs) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Represent a template in order to create documents such as invoice or +subscription voucher. + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### invoice_template() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### template() +The descriptor for the file attribute on the model instance. Returns a +FieldFile when accessed so you can do stuff like: + +``` +>>> from myapp.models import MyModel +>>> instance = MyModel.objects.get(pk=1) +>>> instance.file.size +``` + +Assigns a file object on assignment so you can do: + +``` +>>> with open('/path/to/hello.world', 'r') as f: +... instance.file = File(f) +``` + + +#### voucher_template() +Accessor to the related object on the reverse side of a one-to-one +relation. + +In the example: + +``` +class Restaurant(Model): + place = OneToOneField(Place, related_name='restaurant') +``` + +`place.restaurant` is a `ReverseOneToOneDescriptor` instance. + + +### class preferences.models.GeneralOption(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + +Options générales : nombre de resultats par page, nom du site, +temps où les liens sont valides + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### GTU() +The descriptor for the file attribute on the model instance. Returns a +FieldFile when accessed so you can do stuff like: + +``` +>>> from myapp.models import MyModel +>>> instance = MyModel.objects.get(pk=1) +>>> instance.file.size +``` + +Assigns a file object on assignment so you can do: + +``` +>>> with open('/path/to/hello.world', 'r') as f: +... instance.file = File(f) +``` + + +#### GTU_sum_up() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### email_from() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### general_message_en() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### general_message_fr() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### main_site_url() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### pagination_large_number() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### pagination_number() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### req_expire_hrs() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### search_display_page() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### site_name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.HomeOption(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + +Settings of the home page (facebook/twitter etc) + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### facebook_url() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### twitter_account_name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### twitter_url() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.MailContact(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Contact email adress with a commentary. + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### address() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### commentary() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_name() + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +### class preferences.models.MailMessageOption(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Reglages, mail de bienvenue et autre + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### welcome_mail_en() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### welcome_mail_fr() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.Mandate(id, president, start_date, end_date) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### end_date() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### classmethod get_mandate(date=) +“Find the mandate taking place at the given date. + + +#### get_next_by_start_date(\*\*morekwargs) + +#### get_previous_by_start_date(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### is_over() + +#### objects( = ) + +#### president() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### president_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### start_date() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.OptionalMachine(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + +Options pour les machines : maximum de machines ou d’alias par user +sans droit, activation de l’ipv6 + + +#### CHOICE_IPV6( = (('SLAAC', 'Automatic configuration by RA'), ('DHCPV6', 'IP addresses assignment by DHCPv6'), ('DISABLED', 'Disabled'))) + +#### DHCPV6( = 'DHCPV6') + +#### DISABLED( = 'DISABLED') + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### SLAAC( = 'SLAAC') + +#### create_machine() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### default_dns_ttl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_ipv6_mode_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### ipv6() +Check if the IPv6 option is activated + + +#### ipv6_mode() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### max_lambdauser_aliases() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### max_lambdauser_interfaces() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### password_machine() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.OptionalTopologie(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + +Reglages pour la topologie : mode d’accès radius, vlan où placer +les machines en accept ou reject + + +#### CHOICE_PROVISION( = (('sftp', 'SFTP'), ('tftp', 'TFTP'))) + +#### CHOICE_RADIUS( = (('MACHINE', "On the IP range's VLAN of the machine"), ('DEFINED', 'Preset in "VLAN for machines accepted by RADIUS"'))) + +#### DEFINED( = 'DEFINED') + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### MACHINE( = 'MACHINE') + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### get_switchs_provision_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### provision_switchs_enabled() +switchs on automatic provision, +ip_type + + +* **Type** + + Return true if all settings are ok + + + +#### provisioned_switchs() +Liste des switches provisionnés + + +#### sftp_login() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### sftp_pass() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### switchs_ip_type() +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. + + +#### switchs_ip_type_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### switchs_management_interface() +Return the ip of the interface that the switch have to contact to get it’s config + + +#### switchs_management_interface_ip() +Same, but return the ipv4 + + +#### switchs_management_sftp_creds() +Credentials des switchs pour provion sftp + + +#### switchs_management_utils() +Used for switch_conf, return a list of ip on vlans + + +#### switchs_provision() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### switchs_rest_management() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### switchs_web_management() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### switchs_web_management_ssl() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.OptionalUser(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + +Options pour l’user : obligation ou nom du telephone, +activation ou non du solde, autorisation du negatif, fingerprint etc + + +#### ALL_ROOM( = 'ALL_ROOM') + +#### DISABLED( = 'DISABLED') + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### ONLY_INACTIVE( = 'ONLY_INACTIVE') + +#### ROOM_POLICY( = (('DISABLED', "Users can't select their room"), ('ONLY_INACTIVE', 'Users can only select a room occupied by a user with a disabled connection.'), ('ALL_ROOM', 'Users can select all rooms'))) + +#### all_can_create_adherent() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### all_can_create_club() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### all_users_active() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### allow_archived_connexion() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### allow_set_password_during_user_creation() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### clean() +Clean model: +Check the mail_extension + + +#### delete_notyetactive() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### disable_emailnotyetconfirmed() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### get_self_room_policy_display(\*\*morekwargs) + +#### gpg_fingerprint() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### is_tel_mandatory() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### local_email_accounts_enabled() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### local_email_domain() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### max_email_address() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### self_adhesion() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### self_change_pseudo() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### self_change_shell() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### self_room_policy() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### shell_default() +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. + + +#### shell_default_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.PreferencesModel(\*args, \*\*kwargs) +Bases: `django.db.models.base.Model` + +Base object for the Preferences objects +Defines methods to handle the cache of the settings (they should +not change a lot) + + +#### class Meta() +Bases: `object` + + +#### abstract( = False) + +#### classmethod get_cached_value(key) +Get the preferences from the server-side cache + + +#### classmethod set_in_cache() +Save the preferences in a server-side cache + + +### class preferences.models.RadiusAttribute(id, attribute, value, comment) +Bases: `re2o.mixins.RevMixin`, `re2o.mixins.AclMixin`, `django.db.models.base.Model` + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### attribute() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### banned_attribute() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### comment() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### non_member_attribute() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### objects( = ) + +#### ok_attribute() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_machine_attribute() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_port_attribute() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_room_attribute() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### value() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.RadiusKey(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Class of a radius key + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### clean() +Clean model: +Check default switch is unique + + +#### comment() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### default_switch() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### radius_key() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### switch_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +### class preferences.models.RadiusOption(id, 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) +Bases: `re2o.mixins.AclMixin`, `preferences.models.PreferencesModel` + + +#### CHOICE_POLICY( = (('REJECT', 'Reject the machine'), ('SET_VLAN', 'Place the machine on the VLAN'))) + +#### CHOICE_RADIUS( = (('MACHINE', "On the IP range's VLAN of the machine"), ('DEFINED', 'Preset in "VLAN for machines accepted by RADIUS"'))) + +#### DEFINED( = 'DEFINED') + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### MACHINE( = 'MACHINE') + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### REJECT( = 'REJECT') + +#### SET_VLAN( = 'SET_VLAN') + +#### banned() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### banned_attributes() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### banned_vlan() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### banned_vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### classmethod get_attributes(name, attribute_kwargs={}) + +#### get_banned_display(\*\*morekwargs) + +#### get_non_member_display(\*\*morekwargs) + +#### get_radius_general_policy_display(\*\*morekwargs) + +#### get_unknown_machine_display(\*\*morekwargs) + +#### get_unknown_port_display(\*\*morekwargs) + +#### get_unknown_room_display(\*\*morekwargs) + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### non_member() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### non_member_attributes() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### non_member_vlan() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### non_member_vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### ok_attributes() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### radius_general_policy() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unknown_machine() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unknown_machine_attributes() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_machine_vlan() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### unknown_machine_vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unknown_port() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unknown_port_attributes() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_port_vlan() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### unknown_port_vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unknown_room() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### unknown_room_attributes() +Accessor to the related objects manager on the forward and reverse sides of +a many-to-many relation. + +In the example: + +``` +class Pizza(Model): + toppings = ManyToManyField(Topping, related_name='pizzas') +``` + +`pizza.toppings` and `topping.pizzas` are `ManyToManyDescriptor` +instances. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +#### unknown_room_vlan() +Accessor to the related object on the forward side of a many-to-one or +one-to-one (via ForwardOneToOneDescriptor subclass) relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`child.parent` is a `ForwardManyToOneDescriptor` instance. + + +#### unknown_room_vlan_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### vlan_decision_ok() +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. + + +#### vlan_decision_ok_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.Reminder(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Options pour les mails de notification de fin d’adhésion. +Days: liste des nombres de jours pour lesquells un mail est envoyé +optionalMessage: message additionel pour le mail + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### days() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### message() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### users_to_remind() + +### class preferences.models.Service(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Liste des services affichés sur la page d’accueil : url, description, +image et nom + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### description() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### image() +Just like the FileDescriptor, but for ImageFields. The only difference is +assigning the width/height to the width_field/height_field, if appropriate. + + +#### name() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### url() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +### class preferences.models.SwitchManagementCred(\*args, \*\*kwargs) +Bases: `re2o.mixins.AclMixin`, `django.db.models.base.Model` + +Class of a management creds of a switch, for rest management + + +#### exception DoesNotExist() +Bases: `django.core.exceptions.ObjectDoesNotExist` + + +#### exception MultipleObjectsReturned() +Bases: `django.core.exceptions.MultipleObjectsReturned` + + +#### default_switch() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### management_id() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### management_pass() +A wrapper for a deferred-loading field. When the value is read from this +object the first time, the query is executed. + + +#### objects( = ) + +#### switch_set() +Accessor to the related objects manager on the reverse side of a +many-to-one relation. + +In the example: + +``` +class Child(Model): + parent = ForeignKey(Parent, related_name='children') +``` + +`parent.children` is a `ReverseManyToOneDescriptor` instance. + +Most of the implementation is delegated to a dynamically defined manager +class built by `create_forward_many_to_many_manager()` defined below. + + +### preferences.models.assooption_post_save(\*\*kwargs) +Ecriture dans le cache + + +### preferences.models.auto_delete_file_on_change(sender, instance, \*\*kwargs) +Deletes old file from filesystem +when corresponding DocumentTemplate object is updated +with new file. + + +### preferences.models.auto_delete_file_on_delete(sender, instance, \*\*kwargs) +Deletes file from filesystem +when corresponding DocumentTemplate object is deleted. + + +### preferences.models.default_invoice() + +### preferences.models.default_voucher() + +### preferences.models.generaloption_post_save(\*\*kwargs) +Ecriture dans le cache + + +### preferences.models.homeoption_post_save(\*\*kwargs) +Ecriture dans le cache + + +### preferences.models.optionalmachine_post_save(\*\*kwargs) +Synchronisation ipv6 et ecriture dans le cache + + +### preferences.models.optionaltopologie_post_save(\*\*kwargs) +Ecriture dans le cache + + +### preferences.models.optionaluser_post_save(\*\*kwargs) +Ecriture dans le cache + +## preferences.tests module + +preferences.tests +The tests for the Preferences module. + +## preferences.urls module + +Urls de l’application preferences, pointant vers les fonctions de views + +## preferences.views module + +Vue d’affichage, et de modification des réglages (réglages machine, +topologie, users, service…) + + +### preferences.views.edit_options(request, section) + +### preferences.views.edit_options_template_function(request, section, forms, models) +Edition des préférences générales + +## Module contents + +preferences +The app in charge of storing all the preferences for the local installation diff --git a/Code-Documentation/autodoc/preferences.migrations.md b/Code-Documentation/autodoc/preferences.migrations.md new file mode 100644 index 0000000..40355a9 --- /dev/null +++ b/Code-Documentation/autodoc/preferences.migrations.md @@ -0,0 +1,855 @@ +# preferences.migrations package + +## Submodules + +## preferences.migrations.0001_initial module + + +### class preferences.migrations.0001_initial.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = []) + +#### initial( = True) + +#### operations( = [), ('search_display_page', )]>, ), ('password_machine', ), ('max_lambdauser_interfaces', ), ('max_lambdauser_aliases', )]>, ), ('is_tel_mandatory', ), ('user_solde', )]>]) +## preferences.migrations.0002_auto_20170625_1923 module + + +### class preferences.migrations.0002_auto_20170625_1923.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0001_initial')]) + +#### operations( = [>, >, >, >, >]) +## preferences.migrations.0003_optionaluser_solde_negatif module + + +### class preferences.migrations.0003_optionaluser_solde_negatif.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0002_auto_20170625_1923')]) + +#### operations( = [>]) +## preferences.migrations.0004_assooption_services module + + +### class preferences.migrations.0004_assooption_services.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0003_optionaluser_solde_negatif')]) + +#### operations( = [), ('name', ), ('siret', ), ('adresse', ), ('contact', ), ('telephone', ), ('pseudo', )]>, ), ('name', ), ('url', ), ('description', ), ('image', )]>]) +## preferences.migrations.0005_auto_20170824_0139 module + + +### class preferences.migrations.0005_auto_20170824_0139.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0004_assooption_services')]) + +#### operations( = []) +## preferences.migrations.0006_auto_20170824_0143 module + + +### class preferences.migrations.0006_auto_20170824_0143.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0005_auto_20170824_0139')]) + +#### operations( = [>]) +## preferences.migrations.0007_auto_20170824_2056 module + + +### class preferences.migrations.0007_auto_20170824_2056.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0006_auto_20170824_0143')]) + +#### operations( = [>]) +## preferences.migrations.0008_auto_20170824_2122 module + + +### class preferences.migrations.0008_auto_20170824_2122.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0007_auto_20170824_2056')]) + +#### operations( = [, >, >, >]) +## preferences.migrations.0009_assooption_utilisateur_asso module + + +### class preferences.migrations.0009_assooption_utilisateur_asso.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('users', '__first__'), ('preferences', '0008_auto_20170824_2122')]) + +#### operations( = [>]) +## preferences.migrations.0010_auto_20170825_0459 module + + +### class preferences.migrations.0010_auto_20170825_0459.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0009_assooption_utilisateur_asso')]) + +#### operations( = [)]>, ), ('vlan_id', ), ('comment', )]>, >, >]) +## preferences.migrations.0011_auto_20170825_2307 module + + +### class preferences.migrations.0011_auto_20170825_2307.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0010_auto_20170825_0459')]) + +#### operations( = [>, >, ]) +## preferences.migrations.0012_generaloption_req_expire_hrs module + + +### class preferences.migrations.0012_generaloption_req_expire_hrs.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0011_auto_20170825_2307')]) + +#### operations( = [>]) +## preferences.migrations.0013_generaloption_site_name module + + +### class preferences.migrations.0013_generaloption_site_name.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0012_generaloption_req_expire_hrs')]) + +#### operations( = [>]) +## preferences.migrations.0014_generaloption_email_from module + + +### class preferences.migrations.0014_generaloption_email_from.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0013_generaloption_site_name')]) + +#### operations( = [>]) +## preferences.migrations.0015_optionaltopologie_radius_general_policy module + + +### class preferences.migrations.0015_optionaltopologie_radius_general_policy.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0014_generaloption_email_from')]) + +#### operations( = [>]) +## preferences.migrations.0016_auto_20170902_1520 module + + +### class preferences.migrations.0016_auto_20170902_1520.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0015_optionaltopologie_radius_general_policy')]) + +#### operations( = [>]) +## preferences.migrations.0017_mailmessageoption module + + +### class preferences.migrations.0017_mailmessageoption.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0016_auto_20170902_1520')]) + +#### operations( = [), ('welcome_mail_fr', ), ('welcome_mail_en', )]>]) +## preferences.migrations.0018_optionaltopologie_mac_autocapture module + + +### class preferences.migrations.0018_optionaltopologie_mac_autocapture.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0017_mailmessageoption')]) + +#### operations( = [>]) +## preferences.migrations.0019_remove_optionaltopologie_mac_autocapture module + + +### class preferences.migrations.0019_remove_optionaltopologie_mac_autocapture.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0018_optionaltopologie_mac_autocapture')]) + +#### operations( = []) +## preferences.migrations.0020_optionalmachine_ipv6 module + + +### class preferences.migrations.0020_optionalmachine_ipv6.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0019_remove_optionaltopologie_mac_autocapture')]) + +#### operations( = [>]) +## preferences.migrations.0021_auto_20171015_1741 module + + +### class preferences.migrations.0021_auto_20171015_1741.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0020_optionalmachine_ipv6')]) + +#### operations( = [>]) +## preferences.migrations.0022_auto_20171015_1758 module + + +### class preferences.migrations.0022_auto_20171015_1758.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0021_auto_20171015_1741')]) + +#### operations( = [>]) +## preferences.migrations.0023_auto_20171015_2033 module + + +### class preferences.migrations.0023_auto_20171015_2033.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0022_auto_20171015_1758')]) + +#### operations( = [>]) +## preferences.migrations.0024_optionaluser_all_can_create module + + +### class preferences.migrations.0024_optionaluser_all_can_create.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0023_auto_20171015_2033')]) + +#### operations( = [>]) +## preferences.migrations.0025_auto_20171231_2142 module + + +### class preferences.migrations.0025_auto_20171231_2142.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0024_optionaluser_all_can_create')]) + +#### operations( = [, , , , , , ]) +## preferences.migrations.0025_generaloption_general_message module + + +### class preferences.migrations.0025_generaloption_general_message.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0024_optionaluser_all_can_create')]) + +#### operations( = [>]) +## preferences.migrations.0026_auto_20171216_0401 module + + +### class preferences.migrations.0026_auto_20171216_0401.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0025_generaloption_general_message')]) + +#### operations( = [>]) +## preferences.migrations.0027_merge_20180106_2019 module + + +### class preferences.migrations.0027_merge_20180106_2019.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0025_auto_20171231_2142'), ('preferences', '0026_auto_20171216_0401')]) + +#### operations( = []) +## preferences.migrations.0028_assooption_description module + + +### class preferences.migrations.0028_assooption_description.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0027_merge_20180106_2019'), ('preferences', '0043_optionalmachine_create_machine')]) + +#### operations( = [>]) +## preferences.migrations.0028_auto_20180111_1129 module + + +### class preferences.migrations.0028_auto_20180111_1129.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0027_merge_20180106_2019')]) + +#### operations( = [>]) +## preferences.migrations.0028_auto_20180128_2203 module + + +### class preferences.migrations.0028_auto_20180128_2203.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0027_merge_20180106_2019')]) + +#### operations( = [, >]) +## preferences.migrations.0029_auto_20180111_1134 module + + +### class preferences.migrations.0029_auto_20180111_1134.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0028_auto_20180111_1129')]) + +#### operations( = [>]) +## preferences.migrations.0029_auto_20180318_0213 module + + +### class preferences.migrations.0029_auto_20180318_0213.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0028_assooption_description')]) + +#### operations( = [>]) +## preferences.migrations.0029_auto_20180318_1005 module + + +### class preferences.migrations.0029_auto_20180318_1005.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0028_assooption_description')]) + +#### operations( = [>]) +## preferences.migrations.0030_auto_20180111_2346 module + + +### class preferences.migrations.0030_auto_20180111_2346.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0029_auto_20180111_1134')]) + +#### operations( = [, >]) +## preferences.migrations.0030_merge_20180320_1419 module + + +### class preferences.migrations.0030_merge_20180320_1419.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0029_auto_20180318_1005'), ('preferences', '0029_auto_20180318_0213')]) + +#### operations( = []) +## preferences.migrations.0031_auto_20180323_0218 module + + +### class preferences.migrations.0031_auto_20180323_0218.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0030_merge_20180320_1419')]) + +#### operations( = [>]) +## preferences.migrations.0031_optionaluser_self_adhesion module + + +### class preferences.migrations.0031_optionaluser_self_adhesion.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0030_auto_20180111_2346')]) + +#### operations( = [>]) +## preferences.migrations.0032_optionaluser_min_online_payment module + + +### class preferences.migrations.0032_optionaluser_min_online_payment.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0031_optionaluser_self_adhesion')]) + +#### operations( = [>]) +## preferences.migrations.0032_optionaluser_shell_default module + + +### class preferences.migrations.0032_optionaluser_shell_default.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('users', '0070_auto_20180324_1906'), ('preferences', '0031_auto_20180323_0218')]) + +#### operations( = [>]) +## preferences.migrations.0033_accueiloption module + + +### class preferences.migrations.0033_accueiloption.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0032_optionaluser_shell_default')]) + +#### operations( = [), ('facebook_url', ), ('twitter_url', ), ('twitter_account_name', )], options={'permissions': (('view_accueiloption', "Peut voir les options de l'accueil"),)}, bases=(, )>]) +## preferences.migrations.0033_generaloption_gtu_sum_up module + + +### class preferences.migrations.0033_generaloption_gtu_sum_up.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0032_optionaluser_min_online_payment')]) + +#### operations( = [>]) +## preferences.migrations.0034_auto_20180114_2025 module + + +### class preferences.migrations.0034_auto_20180114_2025.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0033_generaloption_gtu_sum_up')]) + +#### operations( = [>, >]) +## preferences.migrations.0034_auto_20180416_1120 module + + +### class preferences.migrations.0034_auto_20180416_1120.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0033_accueiloption')]) + +#### operations( = [, ]) +## preferences.migrations.0035_auto_20180114_2132 module + + +### class preferences.migrations.0035_auto_20180114_2132.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0034_auto_20180114_2025')]) + +#### operations( = [>]) +## preferences.migrations.0035_optionaluser_allow_self_subscription module + + +### class preferences.migrations.0035_optionaluser_allow_self_subscription.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0034_auto_20180416_1120')]) + +#### operations( = [>]) +## preferences.migrations.0036_auto_20180114_2141 module + + +### class preferences.migrations.0036_auto_20180114_2141.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0035_auto_20180114_2132')]) + +#### operations( = [>]) +## preferences.migrations.0037_auto_20180114_2156 module + + +### class preferences.migrations.0037_auto_20180114_2156.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0036_auto_20180114_2141')]) + +#### operations( = [>]) +## preferences.migrations.0038_auto_20180114_2209 module + + +### class preferences.migrations.0038_auto_20180114_2209.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0037_auto_20180114_2156')]) + +#### operations( = [>]) +## preferences.migrations.0039_auto_20180115_0003 module + + +### class preferences.migrations.0039_auto_20180115_0003.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0038_auto_20180114_2209')]) + +#### operations( = [>]) +## preferences.migrations.0040_auto_20180129_1745 module + + +### class preferences.migrations.0040_auto_20180129_1745.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0039_auto_20180115_0003')]) + +#### operations( = [>, >]) +## preferences.migrations.0041_merge_20180130_0052 module + + +### class preferences.migrations.0041_merge_20180130_0052.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0028_auto_20180128_2203'), ('preferences', '0040_auto_20180129_1745')]) + +#### operations( = []) +## preferences.migrations.0042_auto_20180222_1743 module + + +### class preferences.migrations.0042_auto_20180222_1743.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0041_merge_20180130_0052')]) + +#### operations( = [, >, >]) +## preferences.migrations.0043_optionalmachine_create_machine module + + +### class preferences.migrations.0043_optionalmachine_create_machine.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0042_auto_20180222_1743')]) + +#### operations( = [>]) +## preferences.migrations.0044_remove_payment_pass module + + +### class preferences.migrations.0044_remove_payment_pass.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0035_optionaluser_allow_self_subscription')]) + +#### operations( = []) +## preferences.migrations.0045_remove_unused_payment_fields module + + +### class preferences.migrations.0045_remove_unused_payment_fields.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0044_remove_payment_pass'), ('cotisations', '0030_custom_payment')]) + +#### operations( = [, , , , , , ]) +## preferences.migrations.0046_optionaluser_mail_extension module + + +### class preferences.migrations.0046_optionaluser_mail_extension.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0045_remove_unused_payment_fields')]) + +#### operations( = [>, >, >]) +## preferences.migrations.0047_mailcontact module + + +### class preferences.migrations.0047_mailcontact.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0046_optionaluser_mail_extension')]) + +#### operations( = [), ('address', ), ('commentary', )], options={'permissions': (('view_mailcontact', 'Can see contact email'),)}, bases=(, )>]) +## preferences.migrations.0048_auto_20180811_1515 module + + +### class preferences.migrations.0048_auto_20180811_1515.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0047_mailcontact')]) + +#### operations( = [, >, >]) +## preferences.migrations.0049_optionaluser_self_change_shell module + + +### class preferences.migrations.0049_optionaluser_self_change_shell.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0048_auto_20180811_1515')]) + +#### operations( = [>]) +## preferences.migrations.0050_auto_20180818_1329 module + + +### class preferences.migrations.0050_auto_20180818_1329.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0049_optionaluser_self_change_shell')]) + +#### operations( = [, , , , , , , , , >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## preferences.migrations.0051_auto_20180919_2225 module + + +### class preferences.migrations.0051_auto_20180919_2225.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0095_auto_20180919_2225'), ('preferences', '0050_auto_20180818_1329')]) + +#### operations( = [), ('radius_key', ), ('comment', ), ('default_switch', )], options={'permissions': (('view_radiuskey', 'Peut voir un objet radiuskey'),)}, bases=(, )>, ), ('days', ), ('message', )], options={'permissions': (('view_reminder', 'Peut voir un objet reminder'),)}, bases=(, )>, ), ('management_id', ), ('management_pass', ), ('default_switch', )], options={'permissions': (('view_switchmanagementcred', 'Peut voir un objet switchmanagementcred'),)}, bases=(, )>, >, >, >, >, >, >, >, >, >]) +## preferences.migrations.0052_optionaluser_delete_notyetactive module + + +### class preferences.migrations.0052_optionaluser_delete_notyetactive.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0051_auto_20180919_2225')]) + +#### operations( = [>]) +## preferences.migrations.0053_optionaluser_self_change_room module + + +### class preferences.migrations.0053_optionaluser_self_change_room.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0052_optionaluser_delete_notyetactive')]) + +#### operations( = [>]) +## preferences.migrations.0055_generaloption_main_site_url module + + +### class preferences.migrations.0055_generaloption_main_site_url.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0053_optionaluser_self_change_room')]) + +#### operations( = [>]) +## preferences.migrations.0056_1_radiusoption module + + +### class preferences.migrations.0056_1_radiusoption.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0095_auto_20180919_2225'), ('preferences', '0055_generaloption_main_site_url')]) + +#### operations( = [), ('radius_general_policy', )], options={'verbose_name': 'radius policies'}, bases=(, )>, >, >, >, >, >, >, >, >, >, >, >]) +## preferences.migrations.0056_2_radiusoption module + + +### class preferences.migrations.0056_2_radiusoption.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0095_auto_20180919_2225'), ('preferences', '0055_generaloption_main_site_url'), ('preferences', '0056_1_radiusoption')]) + +#### operations( = [, >]) + +### preferences.migrations.0056_2_radiusoption.create_radius_policy(apps, schema_editor) + +### preferences.migrations.0056_2_radiusoption.revert_radius(apps, schema_editor) +## preferences.migrations.0056_3_radiusoption module + + +### class preferences.migrations.0056_3_radiusoption.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('machines', '0095_auto_20180919_2225'), ('preferences', '0055_generaloption_main_site_url'), ('preferences', '0056_2_radiusoption')]) + +#### operations( = [, , ]) +## preferences.migrations.0056_4_radiusoption module + + +### class preferences.migrations.0056_4_radiusoption.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0056_3_radiusoption')]) + +#### operations( = [>]) +## preferences.migrations.0057_optionaluser_all_users_active module + + +### class preferences.migrations.0057_optionaluser_all_users_active.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0056_4_radiusoption')]) + +#### operations( = [>]) +## preferences.migrations.0058_auto_20190108_1650 module + + +### class preferences.migrations.0058_auto_20190108_1650.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0057_optionaluser_all_users_active')]) + +#### operations( = [, , , , >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## preferences.migrations.0059_auto_20190120_1739 module + + +### class preferences.migrations.0059_auto_20190120_1739.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0058_auto_20190108_1650')]) + +#### operations( = [), ('send_voucher_mail', )], options={'verbose_name': 'cotisations options'}, bases=(, )>, ), ('template', ), ('name', )], options={'verbose_name': 'document template', 'verbose_name_plural': 'document templates'}, bases=(, , )>, >, >, >, >]) + +### preferences.migrations.0059_auto_20190120_1739.create_defaults(apps, schema_editor) +## preferences.migrations.0060_auto_20190712_1821 module + + +### class preferences.migrations.0060_auto_20190712_1821.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0059_auto_20190120_1739')]) + +#### operations( = [>]) +## preferences.migrations.0061_optionaluser_allow_archived_connexion module + + +### class preferences.migrations.0061_optionaluser_allow_archived_connexion.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0060_auto_20190712_1821')]) + +#### operations( = [>]) +## preferences.migrations.0062_auto_20190910_1909 module + + +### class preferences.migrations.0062_auto_20190910_1909.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0061_optionaluser_allow_archived_connexion')]) + +#### operations( = [), ('attribute', ), ('value', ), ('comment', )], options={'verbose_name': 'RADIUS attribute', 'verbose_name_plural': 'RADIUS attributes'}, bases=(, , )>, >, >, >, >, >, >]) +## preferences.migrations.0063_mandate module + + +### class preferences.migrations.0063_mandate.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('users', '__first__'), ('preferences', '0062_auto_20190910_1909')]) + +#### operations( = [), ('start_date', ), ('end_date', ), ('president', )], options={'verbose_name': 'Mandate', 'verbose_name_plural': 'Mandates', 'permissions': (('view_mandate', 'Can view a mandate'),)}, bases=(, , )>, >, >, ]) + +### preferences.migrations.0063_mandate.create_current_mandate(apps, schema_editor) +## preferences.migrations.0064_auto_20191008_1335 module + + +### class preferences.migrations.0064_auto_20191008_1335.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0063_mandate')]) + +#### operations( = [>, >]) +## preferences.migrations.0065_auto_20191010_1227 module + + +### class preferences.migrations.0065_auto_20191010_1227.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0064_auto_20191008_1335')]) + +#### operations( = [>]) +## preferences.migrations.0066_optionalmachine_default_dns_ttl module + + +### class preferences.migrations.0066_optionalmachine_default_dns_ttl.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0065_auto_20191010_1227')]) + +#### operations( = [>]) +## preferences.migrations.0067_auto_20191120_0159 module + + +### class preferences.migrations.0067_auto_20191120_0159.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0066_optionalmachine_default_dns_ttl')]) + +#### operations( = [, , , , , , , , , , >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >, >]) +## preferences.migrations.0068_optionaluser_allow_set_password_during_user_creation module + + +### class preferences.migrations.0068_optionaluser_allow_set_password_during_user_creation.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0067_auto_20191120_0159')]) + +#### operations( = [>]) +## preferences.migrations.0069_optionaluser_disable_emailnotyetconfirmed module + + +### class preferences.migrations.0069_optionaluser_disable_emailnotyetconfirmed.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0068_optionaluser_allow_set_password_during_user_creation')]) + +#### operations( = [>]) +## preferences.migrations.0070_auto_20200419_0225 module + + +### class preferences.migrations.0070_auto_20200419_0225.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0069_optionaluser_disable_emailnotyetconfirmed')]) + +#### operations( = [, >]) +## preferences.migrations.0071_optionaluser_self_change_pseudo module + + +### class preferences.migrations.0071_optionaluser_self_change_pseudo.Migration(name, app_label) +Bases: `django.db.migrations.migration.Migration` + + +#### dependencies( = [('preferences', '0070_auto_20200419_0225')]) + +#### operations( = [>]) +## Module contents diff --git a/Code-Documentation/autodoc/preferences.templatetags.md b/Code-Documentation/autodoc/preferences.templatetags.md new file mode 100644 index 0000000..f04fae1 --- /dev/null +++ b/Code-Documentation/autodoc/preferences.templatetags.md @@ -0,0 +1,3 @@ +# preferences.templatetags package + +## Module contents diff --git a/Code-Documentation/autodoc/re2o.management.commands.md b/Code-Documentation/autodoc/re2o.management.commands.md new file mode 100644 index 0000000..b36f0cc --- /dev/null +++ b/Code-Documentation/autodoc/re2o.management.commands.md @@ -0,0 +1,23 @@ +# 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 diff --git a/Code-Documentation/autodoc/re2o.management.md b/Code-Documentation/autodoc/re2o.management.md new file mode 100644 index 0000000..2b8cc1a --- /dev/null +++ b/Code-Documentation/autodoc/re2o.management.md @@ -0,0 +1,18 @@ +# re2o.management package + +## Subpackages + + +* re2o.management.commands package + + + * Submodules + + + * re2o.management.commands.gen_contrib module + + + * Module contents + + +## Module contents diff --git a/Code-Documentation/autodoc/re2o.md b/Code-Documentation/autodoc/re2o.md new file mode 100644 index 0000000..245d2fb --- /dev/null +++ b/Code-Documentation/autodoc/re2o.md @@ -0,0 +1,989 @@ +# 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( = ) + +### 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 + + +> * … diff --git a/Code-Documentation/autodoc/re2o.templatetags.md b/Code-Documentation/autodoc/re2o.templatetags.md new file mode 100644 index 0000000..f831f6c --- /dev/null +++ b/Code-Documentation/autodoc/re2o.templatetags.md @@ -0,0 +1,582 @@ +# 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**: + + {% [arg1 [arg2 […]]]%} +