From 95350d2bae63bfed8580584ca5ea1dec16547e70 Mon Sep 17 00:00:00 2001 From: Mathias Markl Date: Sat, 9 Jun 2018 02:36:40 +0200 Subject: [PATCH] .. --- muk_web_security/LICENSE | 619 ++++++++++++++++++ muk_web_security/__init__.py | 18 + muk_web_security/__manifest__.py | 53 ++ muk_web_security/doc/changelog.rst | 4 + muk_web_security/doc/index.rst | 46 ++ .../static/description/banner.png | Bin 0 -> 43073 bytes muk_web_security/static/description/icon.png | Bin 0 -> 6469 bytes .../static/description/index.html | 66 ++ muk_web_security/static/description/logo.png | Bin 0 -> 38064 bytes .../src/js/views/form/form_controller.js | 82 +++ .../src/js/views/kanban/kanban_record.js | 49 ++ .../src/js/views/list/list_controller.js | 50 ++ .../static/src/less/views_list.less | 64 ++ muk_web_security/template/assets.xml | 31 + 14 files changed, 1082 insertions(+) create mode 100644 muk_web_security/LICENSE create mode 100644 muk_web_security/__init__.py create mode 100644 muk_web_security/__manifest__.py create mode 100644 muk_web_security/doc/changelog.rst create mode 100644 muk_web_security/doc/index.rst create mode 100644 muk_web_security/static/description/banner.png create mode 100644 muk_web_security/static/description/icon.png create mode 100644 muk_web_security/static/description/index.html create mode 100644 muk_web_security/static/description/logo.png create mode 100644 muk_web_security/static/src/js/views/form/form_controller.js create mode 100644 muk_web_security/static/src/js/views/kanban/kanban_record.js create mode 100644 muk_web_security/static/src/js/views/list/list_controller.js create mode 100644 muk_web_security/static/src/less/views_list.less create mode 100644 muk_web_security/template/assets.xml diff --git a/muk_web_security/LICENSE b/muk_web_security/LICENSE new file mode 100644 index 0000000..faf7bf4 --- /dev/null +++ b/muk_web_security/LICENSE @@ -0,0 +1,619 @@ + GNU AFFERO GENERAL PUBLIC LICENSE + Version 3, 19 November 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU Affero General Public License is a free, copyleft license for +software and other kinds of works, specifically designed to ensure +cooperation with the community in the case of network server software. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +our General Public Licenses are intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + Developers that use our General Public Licenses protect your rights +with two steps: (1) assert copyright on the software, and (2) offer +you this License which gives you legal permission to copy, distribute +and/or modify the software. + + A secondary benefit of defending all users' freedom is that +improvements made in alternate versions of the program, if they +receive widespread use, become available for other developers to +incorporate. Many developers of free software are heartened and +encouraged by the resulting cooperation. However, in the case of +software used on network servers, this result may fail to come about. +The GNU General Public License permits making a modified version and +letting the public access it on a server without ever releasing its +source code to the public. + + The GNU Affero General Public License is designed specifically to +ensure that, in such cases, the modified source code becomes available +to the community. It requires the operator of a network server to +provide the source code of the modified version running there to the +users of that server. Therefore, public use of a modified version, on +a publicly accessible server, gives the public access to the source +code of the modified version. + + An older license, called the Affero General Public License and +published by Affero, was designed to accomplish similar goals. This is +a different license, not a version of the Affero GPL, but Affero has +released a new version of the Affero GPL which permits relicensing under +this license. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU Affero General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Remote Network Interaction; Use with the GNU General Public License. + + Notwithstanding any other provision of this License, if you modify the +Program, your modified version must prominently offer all users +interacting with it remotely through a computer network (if your version +supports such interaction) an opportunity to receive the Corresponding +Source of your version by providing access to the Corresponding Source +from a network server at no charge, through some standard or customary +means of facilitating copying of software. This Corresponding Source +shall include the Corresponding Source for any work covered by version 3 +of the GNU General Public License that is incorporated pursuant to the +following paragraph. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the work with which it is combined will remain governed by version +3 of the GNU General Public License. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU Affero General Public License from time to time. Such new versions +will be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU Affero General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU Affero General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU Affero General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS \ No newline at end of file diff --git a/muk_web_security/__init__.py b/muk_web_security/__init__.py new file mode 100644 index 0000000..e0bf9f9 --- /dev/null +++ b/muk_web_security/__init__.py @@ -0,0 +1,18 @@ +################################################################################### +# +# Copyright (C) 2018 MuK IT GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### \ No newline at end of file diff --git a/muk_web_security/__manifest__.py b/muk_web_security/__manifest__.py new file mode 100644 index 0000000..309b063 --- /dev/null +++ b/muk_web_security/__manifest__.py @@ -0,0 +1,53 @@ +################################################################################### +# +# Copyright (C) 2018 MuK IT GmbH +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +################################################################################### + +{ + "name": "MuK Web Security", + "summary": """Security Features""", + "version": "11.0.1.0.0", + "category": "Extra Tools", + "license": "AGPL-3", + "website": "http://www.mukit.at", + "live_test_url": "https://demo.mukit.at/web/login", + "author": "MuK IT", + "contributors": [ + "Mathias Markl ", + ], + "depends": [ + "web", + "web_editor", + "muk_security", + ], + "data": [ + "template/assets.xml", + ], + "qweb": [ + "static/src/xml/*.xml", + ], + "images": [ + 'static/description/banner.png' + ], + "external_dependencies": { + "python": [], + "bin": [], + }, + "auto_install": True, + "application": False, + "installable": True, +} \ No newline at end of file diff --git a/muk_web_security/doc/changelog.rst b/muk_web_security/doc/changelog.rst new file mode 100644 index 0000000..9ee2b48 --- /dev/null +++ b/muk_web_security/doc/changelog.rst @@ -0,0 +1,4 @@ +`1.0.0` +------- + +- Init version diff --git a/muk_web_security/doc/index.rst b/muk_web_security/doc/index.rst new file mode 100644 index 0000000..1d33486 --- /dev/null +++ b/muk_web_security/doc/index.rst @@ -0,0 +1,46 @@ +================ +MuK Web Security +================ + +Technical module to provide some utility features and libraries that can be used +in other applications. This module has no direct effect on the running system. + +Installation +============ + +To install this module, you need to: + +Download the module and add it to your Odoo addons folder. Afterward, log on to +your Odoo server and go to the Apps menu. Trigger the debug modus and update the +list by clicking on the "Update Apps List" link. Now install the module by +clicking on the install button. + +Configuration +============= + +No additional configuration is needed to use this module. + +Usage +============= + +This module has no direct visible effect on the system. It provide utility features. + +Credits +======= + +Contributors +------------ + +* Mathias Markl + +Author & Maintainer +------------------- + +This module is maintained by the `MuK IT GmbH `_. + +MuK IT is an Austrian company specialized in customizing and extending Odoo. +We develop custom solutions for your individual needs to help you focus on +your strength and expertise to grow your business. + +If you want to get in touch please contact us via mail +(sale@mukit.at) or visit our website (https://mukit.at). diff --git a/muk_web_security/static/description/banner.png b/muk_web_security/static/description/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..a37bf5165c2cdaa88e3932a9b952e261cdc69e17 GIT binary patch literal 43073 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 G!~Yv+mPK#? literal 0 HcmV?d00001 diff --git a/muk_web_security/static/description/icon.png b/muk_web_security/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c03fbe45e5fa3cfad9f0b85ecc6144d5a1810529 GIT binary patch literal 6469 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 +

+

MuK Web Security

+

Security Features

+

MuK IT GmbH - + www.mukit.at

+
+ + +
+
+
+

Overview

+

Technical module to provide some utility + features. The module is mainly used as a dependency by other modules + and to provide a collection of common libraries. It has no direct + visible effect on the system.

+
+
+
+ +
+

Demo

+
+
+
User:
+
+
+
apps
+
+
+
Password:
+
+
+
demo
+
+
+ +
+ +
+

Help and Support

+
Feel free to + contact us, if you need any help with your Odoo integration or + addiontal features.
+ + +
\ No newline at end of file diff --git a/muk_web_security/static/description/logo.png b/muk_web_security/static/description/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..9427ce33ea36c2ec961356d01d612bae02d48ce2 GIT binary patch literal 38064 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 literal 0 HcmV?d00001 diff --git a/muk_web_security/static/src/js/views/form/form_controller.js b/muk_web_security/static/src/js/views/form/form_controller.js new file mode 100644 index 0000000..0366342 --- /dev/null +++ b/muk_web_security/static/src/js/views/form/form_controller.js @@ -0,0 +1,82 @@ +/********************************************************************************** +* +* Copyright (C) 2018 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +odoo.define('muk_web_security.form_controller', function (require) { +"use strict"; + +var ajax = require('web.ajax'); +var core = require('web.core'); +var utils = require('web.utils'); + +var FormController = require('web.FormController'); + +var QWeb = core.qweb; +var _t = core._t; + +FormController.include({ + _update: function() { + var self = this; + var data = this.model.get(this.handle).data; + this.activeActions.edit = data.permission_write === undefined ? + this.activeActions.edit : !!data.permission_write; + this.activeActions.create = data.permission_create === undefined ? + this.activeActions.create : !!data.permission_create; + this.activeActions.delete = data.permission_unlink === undefined ? + this.activeActions.delete : !!data.permission_unlink; + this.activeActions.duplicate = data.permission_create === undefined ? + this.activeActions.duplicate : !!data.permission_create; + if(this.activeActions.edit && data.locked !== undefined && !data.editor && + data.locked && data.locked instanceof Object) { + this.activeActions.locked = true; + } else { + this.activeActions.locked = false; + } + return $.when(this._super.apply(this, arguments)); + }, + _updateButtons: function () { + this._super.apply(this, arguments); + if(this.$buttons) { + var $create = this.$buttons.find('.o_form_button_create'); + var $edit = this.$buttons.find('.o_form_button_edit'); + $create.toggle(this.activeActions.create); + $edit.toggle(this.activeActions.edit); + if(!!this.activeActions.locked) { + $edit.prop("disabled", true); + $edit.text(_t("Locked!")); + } else { + $edit.prop("disabled", false); + $edit.text(_t("Edit")); + } + } + }, + _updateSidebar: function () { + this._super.apply(this, arguments); + if(this.sidebar) { + var $delete = this.sidebar.$el.find( + 'li > a[data-section="other"]:contains("' + _t('Delete') + '")'); + var $duplicate = this.sidebar.$el.find( + 'li > a[data-section="other"]:contains("' + _t('Duplicate') + '")'); + $delete.toggle(this.activeActions.delete && !this.activeActions.locked); + $duplicate.toggle(this.activeActions.duplicate); + } + + }, +}); + +}); \ No newline at end of file diff --git a/muk_web_security/static/src/js/views/kanban/kanban_record.js b/muk_web_security/static/src/js/views/kanban/kanban_record.js new file mode 100644 index 0000000..f847b39 --- /dev/null +++ b/muk_web_security/static/src/js/views/kanban/kanban_record.js @@ -0,0 +1,49 @@ +/********************************************************************************** +* +* Copyright (C) 2018 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +odoo.define('muk_web_security.kanban_record', function (require) { +"use strict"; + +var ajax = require('web.ajax'); +var core = require('web.core'); +var utils = require('web.utils'); + +var KanbanRecord = require('web.KanbanRecord'); + +var QWeb = core.qweb; +var _t = core._t; + +KanbanRecord.include({ + init: function (parent, state, options) { + this._super.apply(this, arguments); + this._updateActions(); + }, + _updateRecord: function (data) { + this._super.apply(this, arguments); + this._updateActions(); + }, + _updateActions: function() { + this.editable = this.recordData.permission_write !== undefined ? + this.recordData.permission_write : this.editable; + this.deletable = this.recordData.permission_unlink !== undefined ? + this.recordData.permission_unlink : this.deletable; + } +}); + +}); \ No newline at end of file diff --git a/muk_web_security/static/src/js/views/list/list_controller.js b/muk_web_security/static/src/js/views/list/list_controller.js new file mode 100644 index 0000000..1af4e2f --- /dev/null +++ b/muk_web_security/static/src/js/views/list/list_controller.js @@ -0,0 +1,50 @@ +/********************************************************************************** +* +* Copyright (C) 2018 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +odoo.define('muk_web_security.list_controller', function (require) { +"use strict"; + +var ajax = require('web.ajax'); +var core = require('web.core'); +var utils = require('web.utils'); + +var ListRenderer = require('web.ListRenderer'); + +var QWeb = core.qweb; +var _t = core._t; + +ListRenderer.include({ + _setDecorationClasses: function (record, $tr) { + this._super.apply(this, arguments); + if(record.data.permission_write !== undefined && record.data.permission_write && + record.data.locked !== undefined && record.data.locked && !record.data.editor && + record.data.locked instanceof Object) { + $tr.addClass("locked"); + } else { + $tr.removeClass("locked"); + } + if(record.data.permission_unlink !== undefined && !record.data.permission_unlink) { + $tr.addClass("no_unlink"); + } else { + $tr.removeClass("no_unlink"); + } + }, +}); + +}); \ No newline at end of file diff --git a/muk_web_security/static/src/less/views_list.less b/muk_web_security/static/src/less/views_list.less new file mode 100644 index 0000000..603c2b2 --- /dev/null +++ b/muk_web_security/static/src/less/views_list.less @@ -0,0 +1,64 @@ +/********************************************************************************** +* +* Copyright (C) 2017 MuK IT GmbH +* +* This program is free software: you can redistribute it and/or modify +* it under the terms of the GNU Affero General Public License as +* published by the Free Software Foundation, either version 3 of the +* License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Affero General Public License for more details. +* +* You should have received a copy of the GNU Affero General Public License +* along with this program. If not, see . +* +**********************************************************************************/ + +.no_unlink { + .o_list_record_selector .o_checkbox { + position: relative; + + &:before{ + top: -18px; + left: 2px; + position: absolute; + content: "\f05e"; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + font-size: 15px; + text-decoration: inherit; + } + + input[type=checkbox] { + display: none; + } + } +} + +.locked { + color: @odoo-main-color-muted; + + .o_list_record_selector .o_checkbox { + position: relative; + + &:before{ + top: -18px; + left: 2px; + position: absolute; + content: "\f023"; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + font-size: 15px; + text-decoration: inherit; + } + + input[type=checkbox] { + display: none; + } + } +} \ No newline at end of file diff --git a/muk_web_security/template/assets.xml b/muk_web_security/template/assets.xml new file mode 100644 index 0000000..edb7ad3 --- /dev/null +++ b/muk_web_security/template/assets.xml @@ -0,0 +1,31 @@ + + + + + +