Merge branch 'master' into project-dashboards
This commit is contained in:
commit
30b9edbbbf
105 changed files with 4328 additions and 1597 deletions
2
AUTHORS
2
AUTHORS
|
|
@ -6,7 +6,7 @@ Authors
|
|||
LibrePlan Team
|
||||
--------------
|
||||
|
||||
* Cristina Alavariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Cristina Alvariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Jacobo Aragunde Pérez <jaragunde@igalia.com>
|
||||
* Nacho Barrientos Arias <nacho@igalia.com>
|
||||
* Xavier Castaño García <xcastanho@igalia.com>
|
||||
|
|
|
|||
48
HACKING
48
HACKING
|
|
@ -64,15 +64,15 @@ Debian/Ubuntu
|
|||
|
||||
* Use SQL sentences::
|
||||
|
||||
CREATE DATABASE navaldev;
|
||||
CREATE DATABASE navaldevtest;
|
||||
CREATE USER naval WITH PASSWORD 'naval';
|
||||
GRANT ALL PRIVILEGES ON DATABASE navaldev TO naval;
|
||||
GRANT ALL PRIVILEGES ON DATABASE navaldevtest TO naval;
|
||||
CREATE DATABASE libreplandev;
|
||||
CREATE DATABASE libreplandevtest;
|
||||
CREATE USER libreplan WITH PASSWORD 'libreplan';
|
||||
GRANT ALL PRIVILEGES ON DATABASE libreplandev TO libreplan;
|
||||
GRANT ALL PRIVILEGES ON DATABASE libreplandevtest TO libreplan;
|
||||
|
||||
* Download source code::
|
||||
|
||||
$ git clone git://libreplan.git.sourceforge.net/gitroot/libreplan/libreplan
|
||||
$ git clone git://navalplan.git.sourceforge.net/gitroot/navalplan/navalplan
|
||||
|
||||
* Compile project::
|
||||
|
||||
|
|
@ -103,11 +103,11 @@ Fedora
|
|||
|
||||
* Use SQL sentences::
|
||||
|
||||
CREATE DATABASE navaldev;
|
||||
CREATE DATABASE navaldevtest;
|
||||
CREATE USER naval WITH PASSWORD 'naval';
|
||||
GRANT ALL PRIVILEGES ON DATABASE navaldev TO naval;
|
||||
GRANT ALL PRIVILEGES ON DATABASE navaldevtest TO naval;
|
||||
CREATE DATABASE libreplandev;
|
||||
CREATE DATABASE libreplandevtest;
|
||||
CREATE USER libreplan WITH PASSWORD 'libreplan';
|
||||
GRANT ALL PRIVILEGES ON DATABASE libreplandev TO libreplan;
|
||||
GRANT ALL PRIVILEGES ON DATABASE libreplandevtest TO libreplan;
|
||||
|
||||
* Set ``postgres`` user password::
|
||||
|
||||
|
|
@ -121,7 +121,7 @@ Fedora
|
|||
|
||||
* Download source code::
|
||||
|
||||
$ git clone git://libreplan.git.sourceforge.net/gitroot/libreplan/libreplan
|
||||
$ git clone git://navalplan.git.sourceforge.net/gitroot/navalplan/navalplan
|
||||
|
||||
* Compile project::
|
||||
|
||||
|
|
@ -163,11 +163,11 @@ openSUSE
|
|||
|
||||
* Use SQL sentences::
|
||||
|
||||
CREATE DATABASE navaldev;
|
||||
CREATE DATABASE navaldevtest;
|
||||
CREATE USER naval WITH PASSWORD 'naval';
|
||||
GRANT ALL PRIVILEGES ON DATABASE navaldev TO naval;
|
||||
GRANT ALL PRIVILEGES ON DATABASE navaldevtest TO naval;
|
||||
CREATE DATABASE libreplandev;
|
||||
CREATE DATABASE libreplandevtest;
|
||||
CREATE USER libreplan WITH PASSWORD 'libreplan';
|
||||
GRANT ALL PRIVILEGES ON DATABASE libreplandev TO libreplan;
|
||||
GRANT ALL PRIVILEGES ON DATABASE libreplandevtest TO libreplan;
|
||||
|
||||
* Set ``postgres`` user password::
|
||||
|
||||
|
|
@ -181,7 +181,7 @@ openSUSE
|
|||
|
||||
* Download source code::
|
||||
|
||||
$ git clone git://libreplan.git.sourceforge.net/gitroot/libreplan/libreplan
|
||||
$ git clone git://navalplan.git.sourceforge.net/gitroot/navalplan/navalplan
|
||||
|
||||
* Compile project::
|
||||
|
||||
|
|
@ -275,11 +275,11 @@ profiles defined in ``pom.xml`` of business and webapp modules).
|
|||
|
||||
* *dev* - Development environment (default)
|
||||
|
||||
It uses databases ``navaldev`` and ``navaldevtest``.
|
||||
It uses databases ``libreplandev`` and ``libreplandevtest``.
|
||||
|
||||
* *prod* - Production environment
|
||||
|
||||
Unlike *dev* it uses database ``navalprod`` and `navalprodtest``.
|
||||
Unlike *dev* it uses database ``libreplanprod`` and `libreplanprodtest``.
|
||||
|
||||
It is needed to use it in combination with *postgresql* or *mysql* profiles.
|
||||
|
||||
|
|
@ -361,10 +361,10 @@ For MySQL users here are specific instructions.
|
|||
|
||||
* SQL sentences to create database::
|
||||
|
||||
CREATE DATABASE navaldev;
|
||||
CREATE DATABASE navaldevtest;
|
||||
GRANT ALL ON navaldev.* to 'naval'@'localhost' identified by 'naval';
|
||||
GRANT ALL ON navaldevtest.* to 'naval'@'localhost' identified by 'naval';
|
||||
CREATE DATABASE libreplandev;
|
||||
CREATE DATABASE libreplandevtest;
|
||||
GRANT ALL ON libreplandev.* to 'libreplan'@'localhost' identified by 'libreplan';
|
||||
GRANT ALL ON libreplandevtest.* to 'libreplan'@'localhost' identified by 'libreplan';
|
||||
|
||||
* Compile project::
|
||||
|
||||
|
|
|
|||
16
INSTALL
16
INSTALL
|
|
@ -29,17 +29,17 @@ Debian packages
|
|||
~~~~~~~~~~~~~~~
|
||||
|
||||
There are Debian packages for Squeeze (i386 and amd64), you can download them
|
||||
from: http://sourceforge.net/projects/libreplan/files/LibrePlan/
|
||||
from: http://sourceforge.net/projects/navalplan/files/LibrePlan/
|
||||
|
||||
Instructions:
|
||||
|
||||
* Download the package::
|
||||
|
||||
$ wget http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.1.1-1_amd64.deb
|
||||
$ wget http://downloads.sourceforge.net/project/navalplan/files/LibrePlan/libreplan_1.2.0-1_amd64.deb
|
||||
|
||||
* Install package::
|
||||
|
||||
# dpkg -i libreplan_1.1.1-1_amd64.deb
|
||||
# dpkg -i libreplan_1.2.0-1_amd64.deb
|
||||
|
||||
* Install dependencies::
|
||||
|
||||
|
|
@ -68,7 +68,7 @@ Debian/Ubuntu
|
|||
|
||||
* Download database installation script::
|
||||
|
||||
$ wget -O install.sql http://downloads.sourceforge.net/project/libreplan/LibrePlan/install_1.1.1.sql
|
||||
$ wget -O install.sql http://downloads.sourceforge.net/project/navalplan/LibrePlan/install_1.2.0.sql
|
||||
|
||||
* Create database structure::
|
||||
|
||||
|
|
@ -76,7 +76,7 @@ Debian/Ubuntu
|
|||
|
||||
* Download ``.war`` file from SourceForge.net::
|
||||
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.1.1.war
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/navalplan/LibrePlan/libreplan_1.2.0.war
|
||||
|
||||
* Create a new file ``/etc/tomcat6/Catalina/localhost/libreplan.xml`` (file
|
||||
name has to match with ``.war`` name) with database configuration for
|
||||
|
|
@ -170,7 +170,7 @@ openSUSE
|
|||
|
||||
* Download database installation script::
|
||||
|
||||
$ wget -O install.sql http://downloads.sourceforge.net/project/libreplan/LibrePlan/install_1.1.1.sql
|
||||
$ wget -O install.sql http://downloads.sourceforge.net/project/navalplan/LibrePlan/install_1.2.0.sql
|
||||
|
||||
* Create database structure::
|
||||
|
||||
|
|
@ -178,7 +178,7 @@ openSUSE
|
|||
|
||||
* Download ``.war`` file from SourceForge.net::
|
||||
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.1.1.war
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/navalplan/LibrePlan/libreplan_1.2.0.war
|
||||
|
||||
* Create a new file ``/etc/tomcat6/Catalina/localhost/libreplan.xml`` (file
|
||||
name has to match with ``.war`` name) with database configuration for
|
||||
|
|
@ -215,7 +215,7 @@ Logs
|
|||
|
||||
Since *LibrePlan 1.1.1* log system is configured automatically creating a new
|
||||
folder under ``/var/log/tomcat6/`` with ``.war`` name. For example:
|
||||
``/var/log/tomcat6/libreplan.war``.
|
||||
``/var/log/tomcat6/libreplan/``.
|
||||
|
||||
Inside this new directory there will be two files (``libreplan.log`` and
|
||||
``libreplan-error.log``) that will be rotated every day.
|
||||
|
|
|
|||
109
README
109
README
|
|
@ -5,32 +5,84 @@ LibrePlan
|
|||
Description
|
||||
-----------
|
||||
|
||||
*LibrePlan* is a free software web application for project management.
|
||||
*LibrePlan* is a free software web application for project management,
|
||||
monitoring and control.
|
||||
|
||||
*LibrePlan* is a planning tool for users based on some concepts: company and
|
||||
multi-project overview, criteria assignments, tasks tagging, resources
|
||||
management, resource allocation (specific and generic), company load control,
|
||||
external integration, etc.
|
||||
*LibrePlan* is a collaborative tool to plan, monitor and control projects and
|
||||
has a rich web interface which provides a desktop alike user experience. All the
|
||||
team members can take part in the planning and this makes possible to have a
|
||||
real-time planning.
|
||||
|
||||
It was designed thinking on a scenario where multiple projects and resources
|
||||
interact to carry out the work inside a company. Besides, it makes possible
|
||||
the communication with other company tools providing a wide set of web
|
||||
services to import and export data.
|
||||
|
||||
Although its name is clearly related to shipbuilding, *LibrePlan* is a fully
|
||||
useful planning tool for any type of company whose workflow requires project and
|
||||
order administration and scheduling.
|
||||
|
||||
Features
|
||||
~~~~~~~~
|
||||
|
||||
* Multiproject management. It offers a global vision of the company managing
|
||||
several projects sharing resources.
|
||||
* Group resource allocations: dynamic groups based on criteria.
|
||||
* Flexible calendars.
|
||||
* Configurable Gantt chart from Work Breakdown Structure (WBS) [1]_.
|
||||
* Resource Breakdown Structure (RBS) chart [2]_.
|
||||
* Overload resource allocation control.
|
||||
* Earned Value Management [3]_.
|
||||
* Cost analysis based on work reports.
|
||||
* Integration with other *LibrePlan* instances and third-parties.
|
||||
* Other functionalities: Materials, quality forms, project templates, planning
|
||||
scenarios, multiple task progress measurement ...
|
||||
* Resource management:
|
||||
|
||||
* Two type of resources: machines and workers.
|
||||
* Flexible calendars easily reusable.
|
||||
* Resource configuration based on skills and roles.
|
||||
|
||||
* Planning:
|
||||
|
||||
* Simple way to configure and estimate the work to plan. It is carried out
|
||||
through Work Breakdown Structures (WBS) [1]_.
|
||||
* Different detail levels during the planning.
|
||||
* Two ways to allocate resources:
|
||||
|
||||
* Specific allocation: Concrete individuals.
|
||||
* Assisted generic allocation: Based on skills and roles fulfilled by the
|
||||
resources.
|
||||
|
||||
* Templates to reuse work. Projects can be created based on templates for
|
||||
repeatable tasks being able to save time.
|
||||
|
||||
* Automatic resource reallocation in order to minimize overload (overtime).
|
||||
|
||||
* Advanced allocation. Manual configuration of daily work hours on a task
|
||||
when automatic allocation does not suit your needs.
|
||||
|
||||
* Monte Carlo method. Statistical simulation to calculate the possibility to
|
||||
complete a project in a range of dates.
|
||||
|
||||
* Projects control and monitoring:
|
||||
|
||||
* Company global analysis.
|
||||
|
||||
* Earned Value Management [2]_. Project management method to objectively
|
||||
measure progress and performance of a project.
|
||||
|
||||
* Planning quality management. It is possible to control quality of the tasks
|
||||
to be performed through forms.
|
||||
|
||||
* Projects cost analysis.
|
||||
|
||||
* Reported hours: worked hours are assigned to each task to track costs during
|
||||
the planning
|
||||
|
||||
* Progress measurement through different unit types.
|
||||
|
||||
* Outsourcing
|
||||
|
||||
LibrePlan provides support for companies that do outsourcing:
|
||||
|
||||
* Project tasks can be outsourced and sent to the LibrePlan installation of
|
||||
the supplier.
|
||||
|
||||
* You can receive progress notifications of the subcontractors to know how
|
||||
outsourced tasks are evolving .
|
||||
|
||||
* Other features:
|
||||
|
||||
* Materials. You can manage the materials that planned tasks need to be
|
||||
carried out.
|
||||
|
||||
* Complete users system with permissions, LDAP authentication, etc.
|
||||
|
||||
|
||||
Requirements
|
||||
|
|
@ -74,17 +126,17 @@ Availability
|
|||
------------
|
||||
|
||||
The cutting-edge version of this project is always available from the Git
|
||||
repository at http://libreplan.git.sourceforge.net/.
|
||||
repository at http://navalplan.git.sourceforge.net/.
|
||||
|
||||
Released versions are available at
|
||||
http://sourceforge.net/projects/libreplan/files.
|
||||
http://sourceforge.net/projects/navalplan/files.
|
||||
|
||||
|
||||
Webpage
|
||||
-------
|
||||
|
||||
You can find more information about *LibrePlan* at
|
||||
http://www.libreplan.org/en/.
|
||||
http://www.libreplan.com/.
|
||||
|
||||
For information related with *LibrePlan* development you can visit the wiki at
|
||||
http://wiki.libreplan.org/.
|
||||
|
|
@ -100,7 +152,7 @@ License
|
|||
-------
|
||||
|
||||
*LibrePlan* is released under the terms of the GNU Affero General Public
|
||||
License version 3 [4]_.
|
||||
License version 3 [3]_.
|
||||
|
||||
Please read the ``COPYING`` file for details.
|
||||
|
||||
|
|
@ -109,14 +161,13 @@ Authors
|
|||
-------
|
||||
|
||||
This project is sponsored by *Fundación para o Fomento da Calidade Industrial e
|
||||
o Desenvolvemento Tecnolóxico de Galicia* [5]_.
|
||||
o Desenvolvemento Tecnolóxico de Galicia* [4]_.
|
||||
|
||||
Please see ``AUTHORS`` file for more information about the authors.
|
||||
|
||||
|
||||
|
||||
.. [1] http://en.wikipedia.org/wiki/Work_Breakdown_Structure
|
||||
.. [2] http://en.wikipedia.org/wiki/Resource_Breakdown_Structure
|
||||
.. [3] http://en.wikipedia.org/wiki/Earned_Value_Management
|
||||
.. [4] http://www.fsf.org/licensing/licenses/agpl.html
|
||||
.. [5] http://www.fundacioncalidade.org/
|
||||
.. [2] http://en.wikipedia.org/wiki/Earned_Value_Management
|
||||
.. [3] http://www.fsf.org/licensing/licenses/agpl.html
|
||||
.. [4] http://www.fundacioncalidade.org/
|
||||
|
|
|
|||
12
UPDATE
12
UPDATE
|
|
@ -26,11 +26,11 @@ Instructions:
|
|||
|
||||
* Download the new package::
|
||||
|
||||
$ wget http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.1.1-1_amd64.deb
|
||||
$ wget http://downloads.sourceforge.net/project/navalplan/NavalPlan/navalplan_1.1.1-1_amd64.deb
|
||||
|
||||
* Install package::
|
||||
|
||||
# dpkg -i libreplan_1.1.1-1_amd64.deb
|
||||
# dpkg -i navalplan_1.1.1-1_amd64.deb
|
||||
|
||||
* Install new dependencies if needed::
|
||||
|
||||
|
|
@ -51,7 +51,7 @@ Debian/Ubuntu
|
|||
are upgrading from *LibrePlan 1.0.4* to *LibrePlan 1.1.1* you should download
|
||||
``upgrade_1.1.0.sql``::
|
||||
|
||||
$ wget http://downloads.sourceforge.net/project/libreplan/LibrePlan/upgrade_1.1.0.sql
|
||||
$ wget http://downloads.sourceforge.net/project/navalplan/NavalPlan/upgrade_1.1.0.sql
|
||||
|
||||
* Upgrade database::
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ Debian/Ubuntu
|
|||
|
||||
* Download ``.war`` file of new version from SourceForge.net::
|
||||
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.1.1.war
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/navalplan/NavalPlan/navalplan_1.1.1.war
|
||||
|
||||
* Backup current deployed application::
|
||||
|
||||
|
|
@ -87,7 +87,7 @@ openSUSE
|
|||
are upgrading from *LibrePlan 1.0.4* to *LibrePlan 1.1.1* you should download
|
||||
``upgrade_1.1.0.sql``::
|
||||
|
||||
$ wget http://downloads.sourceforge.net/project/libreplan/LibrePlan/upgrade_1.1.0.sql
|
||||
$ wget http://downloads.sourceforge.net/project/navalplan/NavalPlan/upgrade_1.1.0.sql
|
||||
|
||||
* Upgrade database::
|
||||
|
||||
|
|
@ -95,7 +95,7 @@ openSUSE
|
|||
|
||||
* Download ``.war`` file of new version from SourceForge.net::
|
||||
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/libreplan/LibrePlan/libreplan_1.1.1.war
|
||||
$ wget -O libreplan.war http://downloads.sourceforge.net/project/navalplan/NavalPlan/navalplan_1.1.1.war
|
||||
|
||||
* Backup current deployed application::
|
||||
|
||||
|
|
|
|||
46
debian/changelog
vendored
46
debian/changelog
vendored
|
|
@ -1,4 +1,12 @@
|
|||
libreplan (1.1.3-1) maverick; urgency=low
|
||||
libreplan (1.2.0-1) maverick; urgency=low
|
||||
|
||||
* Released LibrePlan 1.2.0
|
||||
* Created a transitional package navalplan-1.2.0-1 in order to ease the
|
||||
migration from NavalPlan 1.1 to LibrePlan 1.2
|
||||
|
||||
-- Manuel Rego Casasnovas <rego@igalia.com> Thu, 01 Dec 2011 16:40:00 +0100
|
||||
|
||||
navalplan (1.1.3-1) maverick; urgency=low
|
||||
|
||||
* Fixed important issue in Gantt view for big projects with labels.
|
||||
* Added bugs fixed from stable branch.
|
||||
|
|
@ -6,7 +14,7 @@ libreplan (1.1.3-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <rego@igalia.com> Fri, 12 Aug 2011 13:08:00 +0200
|
||||
|
||||
libreplan (1.1.2-1) maverick; urgency=low
|
||||
navalplan (1.1.2-1) maverick; urgency=low
|
||||
|
||||
* Fixed critical bug that causes concurrency issues editing projects with
|
||||
labels.
|
||||
|
|
@ -15,7 +23,7 @@ libreplan (1.1.2-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <rego@igalia.com> Wed, 18 Jul 2011 13:23:00 +0200
|
||||
|
||||
libreplan (1.1.1-1) maverick; urgency=low
|
||||
navalplan (1.1.1-1) maverick; urgency=low
|
||||
|
||||
* Changed dependency from OpenJDK to default-jdk or default-jre.
|
||||
* Added bugs fixed from stable branch.
|
||||
|
|
@ -23,7 +31,7 @@ libreplan (1.1.1-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <rego@igalia.com> Wed, 07 Jun 2011 09:15:00 +0200
|
||||
|
||||
libreplan (1.1.0-1) maverick; urgency=low
|
||||
navalplan (1.1.0-1) maverick; urgency=low
|
||||
|
||||
* Removed unnecessary dependency with texlive-latex-recommended and pgf
|
||||
packages.
|
||||
|
|
@ -33,35 +41,35 @@ libreplan (1.1.0-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Wed, 19 Apr 2011 07:50:00 +0200
|
||||
|
||||
libreplan (1.0.6-1) maverick; urgency=low
|
||||
navalplan (1.0.6-1) maverick; urgency=low
|
||||
|
||||
* Several important bugs fixed during 1.1 stabilization.
|
||||
* Released version 1.0.6.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Tue, 27 Apr 2011 11:49:00 +0200
|
||||
|
||||
libreplan (1.0.5-1) maverick; urgency=low
|
||||
navalplan (1.0.5-1) maverick; urgency=low
|
||||
|
||||
* Added bugs fixed from stable branch.
|
||||
* Released version 1.0.5.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Fri, 08 Apr 2011 11:20:46 +0200
|
||||
|
||||
libreplan (1.0.4-1) maverick; urgency=low
|
||||
navalplan (1.0.4-1) maverick; urgency=low
|
||||
|
||||
* Added bugs fixed from stable branch.
|
||||
* Released version 1.0.4.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Thu, 17 Mar 2011 12:27:47 +0100
|
||||
|
||||
libreplan (1.0.3-1) maverick; urgency=low
|
||||
navalplan (1.0.3-1) maverick; urgency=low
|
||||
|
||||
* Added bugs fixed from stable branch.
|
||||
* Released version 1.0.3.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Mon, 14 Feb 2011 07:23:58 +0100
|
||||
|
||||
libreplan (1.0.2-1) maverick; urgency=low
|
||||
navalplan (1.0.2-1) maverick; urgency=low
|
||||
|
||||
* Fixed database installation script.
|
||||
* Added bugfixed from stable branch.
|
||||
|
|
@ -69,7 +77,7 @@ libreplan (1.0.2-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Fri, 21 Jan 2011 12:07:33 +0100
|
||||
|
||||
libreplan (1.0.1-1) maverick; urgency=low
|
||||
navalplan (1.0.1-1) maverick; urgency=low
|
||||
|
||||
* Added dependency with ttf-freefont on Debian package (needed for Jasper
|
||||
reports).
|
||||
|
|
@ -78,7 +86,7 @@ libreplan (1.0.1-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <mrego@erizana> Fri, 14 Jan 2011 09:58:33 +0100
|
||||
|
||||
libreplan (1.0.0-1) maverick; urgency=low
|
||||
navalplan (1.0.0-1) maverick; urgency=low
|
||||
|
||||
* Updated to upstream. Released version 1.0.
|
||||
* Added upgrade script needed to upgrade to version 1.0.
|
||||
|
|
@ -86,33 +94,33 @@ libreplan (1.0.0-1) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Tue, 07 Jan 2011 16:45:00 +0100
|
||||
|
||||
libreplan (0.9.2-3) maverick; urgency=low
|
||||
navalplan (0.9.2-3) maverick; urgency=low
|
||||
|
||||
* Added missing postgresql dependency.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Tue, 07 Jan 2011 10:00:00 +0100
|
||||
|
||||
libreplan (0.9.2-2) maverick; urgency=low
|
||||
navalplan (0.9.2-2) maverick; urgency=low
|
||||
|
||||
* Added postgresql-client dependency needed because of dbconfig.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Tue, 05 Jan 2011 16:12:00 +0100
|
||||
|
||||
libreplan (0.9.2-1) maverick; urgency=low
|
||||
navalplan (0.9.2-1) maverick; urgency=low
|
||||
|
||||
* Updated to upstream.
|
||||
* Fixed issues on debian package.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Tue, 04 Jan 2011 15:58:19 +0100
|
||||
|
||||
libreplan (0.9.1) maverick; urgency=low
|
||||
navalplan (0.9.1) maverick; urgency=low
|
||||
|
||||
* Updated to upstream.
|
||||
* Fixed problems with translations.
|
||||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Thu, 23 Dec 2010 00:14:54 +0100
|
||||
|
||||
libreplan (0.9.0) maverick; urgency=low
|
||||
navalplan (0.9.0) maverick; urgency=low
|
||||
|
||||
* Updated to upstream.
|
||||
* Fixed issues with context.xml file.
|
||||
|
|
@ -121,19 +129,19 @@ libreplan (0.9.0) maverick; urgency=low
|
|||
|
||||
-- Manuel Rego Casasnovas <mrego@igalia.com> Tue, 21 Dec 2010 17:31:08 +0100
|
||||
|
||||
libreplan (20100908) lucid; urgency=low
|
||||
navalplan (20100908) lucid; urgency=low
|
||||
|
||||
* Updated to upstream.
|
||||
|
||||
-- Jose Maria Casanova Crespo (Chema) <jmcasanova@igalia.com> Wed, 8 Sep 2010 00:00:00 +0000
|
||||
|
||||
libreplan (20100415) karmic; urgency=low
|
||||
navalplan (20100415) karmic; urgency=low
|
||||
|
||||
* Updated to upstream.
|
||||
|
||||
-- Jose Maria Casanova Crespo (Chema) <jmcasanova@igalia.com> Thu, 15 Mar 2010 14:30:00 +0000
|
||||
|
||||
libreplan (20100324) karmic; urgency=low
|
||||
navalplan (20100324) karmic; urgency=low
|
||||
|
||||
* Initial release.
|
||||
|
||||
|
|
|
|||
25
debian/control
vendored
25
debian/control
vendored
|
|
@ -5,19 +5,32 @@ Maintainer: Adrian Perez <aperez@igalia.com>
|
|||
Build-Depends: debhelper (>= 7.0.50), maven2, python-docutils,
|
||||
gettext (>= 0.17), default-jdk
|
||||
Standards-Version: 3.8.4
|
||||
Homepage: http://www.libreplan.org/en/
|
||||
Homepage: http://www.libreplan.com/
|
||||
|
||||
Package: libreplan
|
||||
Architecture: any
|
||||
Depends: cutycapt, postgresql, postgresql-client, xvfb, dbconfig-common, ucf,
|
||||
tomcat6, default-jre-headless | default-jre, libpg-java, ttf-freefont,
|
||||
${misc:Depends}
|
||||
Description: Web application for project management.
|
||||
LibrePlan is a planning tool for users based on some concepts: company and
|
||||
Description: Web application for project planning, monitoring and control.
|
||||
LibrePlan is a collaborative tool to plan, monitor and control projects and has
|
||||
a rich web interface which provides a desktop alike user experience. All the
|
||||
team members can take part in the planning and this makes possible to have a
|
||||
real-time planning.
|
||||
.
|
||||
It was designed thinking on a scenario where multiple projects and resources
|
||||
interact to carry out the work inside a company. Besides, it makes possible
|
||||
the communication with other company tools providing a wide set of web
|
||||
services to import and export data.
|
||||
|
||||
Package: navalplan
|
||||
Architecture: all
|
||||
Pre-Depends: libreplan (>= 1.2.0-1)
|
||||
Depends: ${misc:Depends}
|
||||
Description: Web application for project management (transitional package)
|
||||
NavalPlan is a planning tool for users based on some concepts: company and
|
||||
multi-project overview, criteria assignments, tasks tagging, resources
|
||||
management, resource allocation (specific and generic), company load control,
|
||||
external integration, etc.
|
||||
.
|
||||
Although its name is clearly related to shipbuilding, LibrePlan is a fully
|
||||
useful planning tool for any type of company whose workflow requires project
|
||||
and order administration and scheduling.
|
||||
This package can be safely deleted after Libreplan is successfully installed.
|
||||
|
|
|
|||
27
debian/control.lucid
vendored
27
debian/control.lucid
vendored
|
|
@ -3,21 +3,34 @@ Section: web
|
|||
Priority: optional
|
||||
Maintainer: Adrian Perez <aperez@igalia.com>
|
||||
Build-Depends: debhelper (>= 7.0.50), maven2, python-docutils,
|
||||
gettext (>= 0.17), texlive-latex-recommended, pgf, openjdk-6-jdk
|
||||
gettext (>= 0.17), openjdk-6-jdk
|
||||
Standards-Version: 3.8.4
|
||||
Homepage: http://www.libreplan.org/en/
|
||||
Homepage: http://www.libreplan.com/
|
||||
|
||||
Package: libreplan
|
||||
Architecture: any
|
||||
Depends: cutycapt, postgresql, postgresql-client, xvfb, dbconfig-common, ucf,
|
||||
tomcat6, openjdk-6-jre-headless | openjdk-6-jre, libpg-java, ttf-freefont,
|
||||
${misc:Depends}
|
||||
Description: Web application for project management.
|
||||
LibrePlan is a planning tool for users based on some concepts: company and
|
||||
Description: Web application for project planning, monitoring and control.
|
||||
LibrePlan is a collaborative tool to plan, monitor and control projects and has
|
||||
a rich web interface which provides a desktop alike user experience. All the
|
||||
team members can take part in the planning and this makes possible to have a
|
||||
real-time planning.
|
||||
.
|
||||
It was designed thinking on a scenario where multiple projects and resources
|
||||
interact to carry out the work inside a company. Besides, it makes possible
|
||||
the communication with other company tools providing a wide set of web
|
||||
services to import and export data.
|
||||
|
||||
Package: navalplan
|
||||
Architecture: all
|
||||
Pre-Depends: libreplan (>= 1.2.0-1)
|
||||
Depends: ${misc:Depends}
|
||||
Description: Web application for project management (transitional package)
|
||||
NavalPlan is a planning tool for users based on some concepts: company and
|
||||
multi-project overview, criteria assignments, tasks tagging, resources
|
||||
management, resource allocation (specific and generic), company load control,
|
||||
external integration, etc.
|
||||
.
|
||||
Although its name is clearly related to shipbuilding, LibrePlan is a fully
|
||||
useful planning tool for any type of company whose workflow requires project
|
||||
and order administration and scheduling.
|
||||
This package can be safely deleted after Libreplan is successfully installed.
|
||||
|
|
|
|||
27
debian/control.squeeze
vendored
27
debian/control.squeeze
vendored
|
|
@ -3,21 +3,34 @@ Section: web
|
|||
Priority: optional
|
||||
Maintainer: Adrian Perez <aperez@igalia.com>
|
||||
Build-Depends: debhelper (>= 7.0.50), maven2, python-docutils,
|
||||
gettext (>= 0.17), texlive-latex-recommended, pgf, openjdk-6-jdk
|
||||
gettext (>= 0.17), openjdk-6-jdk
|
||||
Standards-Version: 3.8.4
|
||||
Homepage: http://www.libreplan.org/en/
|
||||
Homepage: http://www.libreplan.com/
|
||||
|
||||
Package: libreplan
|
||||
Architecture: any
|
||||
Depends: cutycapt, postgresql, postgresql-client, xvfb, dbconfig-common, ucf,
|
||||
tomcat6, openjdk-6-jre-headless | openjdk-6-jre, libpg-java, ttf-freefont,
|
||||
${misc:Depends}
|
||||
Description: Web application for project management.
|
||||
LibrePlan is a planning tool for users based on some concepts: company and
|
||||
Description: Web application for project planning, monitoring and control.
|
||||
LibrePlan is a collaborative tool to plan, monitor and control projects and has
|
||||
a rich web interface which provides a desktop alike user experience. All the
|
||||
team members can take part in the planning and this makes possible to have a
|
||||
real-time planning.
|
||||
.
|
||||
It was designed thinking on a scenario where multiple projects and resources
|
||||
interact to carry out the work inside a company. Besides, it makes possible
|
||||
the communication with other company tools providing a wide set of web
|
||||
services to import and export data.
|
||||
|
||||
Package: navalplan
|
||||
Architecture: all
|
||||
Pre-Depends: libreplan (>= 1.2.0-1)
|
||||
Depends: ${misc:Depends}
|
||||
Description: Web application for project management (transitional package)
|
||||
NavalPlan is a planning tool for users based on some concepts: company and
|
||||
multi-project overview, criteria assignments, tasks tagging, resources
|
||||
management, resource allocation (specific and generic), company load control,
|
||||
external integration, etc.
|
||||
.
|
||||
Although its name is clearly related to shipbuilding, LibrePlan is a fully
|
||||
useful planning tool for any type of company whose workflow requires project
|
||||
and order administration and scheduling.
|
||||
This package can be safely deleted after Libreplan is successfully installed.
|
||||
|
|
|
|||
2
debian/libreplan.install
vendored
2
debian/libreplan.install
vendored
|
|
@ -3,4 +3,4 @@ debian/tmp/etc/tomcat6/policy.d/51libreplan.policy
|
|||
debian/tmp/usr/share/dbconfig-common/data/libreplan/install/pgsql
|
||||
debian/tmp/usr/share/dbconfig-common/data/libreplan/upgrade/pgsql/1.0.0
|
||||
debian/tmp/usr/share/dbconfig-common/data/libreplan/upgrade/pgsql/1.1.0
|
||||
debian/tmp/usr/share/tomcat6/lib/postgresql-jdbc3.jar
|
||||
debian/tmp/usr/share/dbconfig-common/data/libreplan/upgrade/pgsql/1.2.0
|
||||
|
|
|
|||
3
debian/libreplan.postinst
vendored
3
debian/libreplan.postinst
vendored
|
|
@ -68,6 +68,9 @@ then
|
|||
|
||||
fi
|
||||
|
||||
if [ ! -L /usr/share/tomcat6/lib/postgresql-jdbc3.jar ] ; then
|
||||
ln -sf /usr/share/java/postgresql-jdbc3.jar /usr/share/tomcat6/lib/
|
||||
fi
|
||||
|
||||
if [ -x /etc/init.d/tomcat6 ] ; then
|
||||
if [ -x "$(which invoke-rc.d 2> /dev/null)" ] ; then
|
||||
|
|
|
|||
26
debian/navalplan.postinst
vendored
Executable file
26
debian/navalplan.postinst
vendored
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
#! /bin/bash
|
||||
|
||||
if [[ $1 = configure ]]
|
||||
then
|
||||
# Remove old deployment directory as it's no longer necessary.
|
||||
if [ -d /var/lib/tomcat6/webapps/navalplan/ ] ; then
|
||||
rm -r /var/lib/tomcat6/webapps/navalplan/
|
||||
fi
|
||||
|
||||
# Make sure the driver is there, as it might be removed when
|
||||
# uninstalling older versions of the package.
|
||||
if [ ! -L /usr/share/tomcat6/lib/postgresql-jdbc3.jar ] ; then
|
||||
ln -sf /usr/share/java/postgresql-jdbc3.jar /usr/share/tomcat6/lib/
|
||||
fi
|
||||
|
||||
# Start tomcat again
|
||||
if [ -x /etc/init.d/tomcat6 ] ; then
|
||||
if [ -x "$(which invoke-rc.d 2> /dev/null)" ] ; then
|
||||
invoke-rc.d tomcat6 start
|
||||
else
|
||||
/etc/init.d/tomcat6 start
|
||||
fi
|
||||
fi
|
||||
|
||||
fi
|
||||
#DEBHELPER#
|
||||
95
debian/navalplan.preinst
vendored
Executable file
95
debian/navalplan.preinst
vendored
Executable file
|
|
@ -0,0 +1,95 @@
|
|||
#! /bin/bash
|
||||
|
||||
base_dbconfig_data_dir="/usr/share/dbconfig-common/data"
|
||||
|
||||
install_upgrade_to() {
|
||||
upgrade_file="$base_dbconfig_data_dir/libreplan/upgrade/pgsql/$1"
|
||||
echo "Applying SQL statements to upgrade to version $1..."
|
||||
push_sql_from_file_as_user $upgrade_file $navalplan_user $navalplan_db
|
||||
}
|
||||
|
||||
push_sql_from_file_as_user() {
|
||||
filepath=$1
|
||||
username=$2
|
||||
database=$3
|
||||
psql -U $username -h $database_host \
|
||||
$database < $filepath > /dev/null 2>&1
|
||||
}
|
||||
|
||||
execute_sql_as_admin() {
|
||||
sql=$1
|
||||
su - -s /bin/sh $navalplan_admin_user -c "psql -c \"$sql\"" > /dev/null
|
||||
}
|
||||
|
||||
if [[ $1 = upgrade && -r /etc/dbconfig-common/libreplan.conf
|
||||
&& -r /etc/dbconfig-common/navalplan.conf ]]
|
||||
then
|
||||
old_version=$2
|
||||
|
||||
. /etc/dbconfig-common/libreplan.conf
|
||||
libreplan_user=${dbc_dbuser}
|
||||
libreplan_passwd=${dbc_dbpass}
|
||||
libreplan_db=${dbc_dbname}
|
||||
|
||||
. /etc/dbconfig-common/navalplan.conf
|
||||
navalplan_user=${dbc_dbuser}
|
||||
navalplan_passwd=${dbc_dbpass}
|
||||
navalplan_db=${dbc_dbname}
|
||||
navalplan_admin_user=${dbc_dbadmin}
|
||||
|
||||
if [ -z "${dbc_dbhost}" ] ; then
|
||||
database_host='localhost'
|
||||
else
|
||||
database_host=${dbc_dbhost}
|
||||
fi
|
||||
|
||||
export PGPASSFILE=`mktemp`
|
||||
chmod 600 $PGPASSFILE
|
||||
|
||||
old_db_dump=`mktemp`
|
||||
chown $navalplan_admin_user:root $old_db_dump;
|
||||
chmod 660 $old_db_dump;
|
||||
|
||||
# Stop tomcat to flush active connections.
|
||||
if [ -x /etc/init.d/tomcat6 ] ; then
|
||||
if [ -x "$(which invoke-rc.d 2> /dev/null)" ] ; then
|
||||
invoke-rc.d tomcat6 stop
|
||||
else
|
||||
/etc/init.d/tomcat6 stop
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "Dropping newly created empty database...";
|
||||
execute_sql_as_admin "DROP DATABASE $libreplan_db;"
|
||||
|
||||
echo "Trying to apply upgrades to old database..."
|
||||
|
||||
echo "*:*:*:*:$navalplan_passwd" > $PGPASSFILE
|
||||
|
||||
dpkg --compare-versions $old_version "<<" "1.0.0-1"
|
||||
if [ $? -eq 0 ]; then
|
||||
install_upgrade_to "1.0.0"
|
||||
fi
|
||||
dpkg --compare-versions $old_version "<<" "1.1.0-1"
|
||||
if [ $? -eq 0 ]; then
|
||||
install_upgrade_to "1.1.0"
|
||||
fi
|
||||
dpkg --compare-versions $old_version "<<" "1.2.0-1"
|
||||
if [ $? -eq 0 ]; then
|
||||
install_upgrade_to "1.2.0"
|
||||
fi
|
||||
|
||||
echo "Dumping old database..."
|
||||
su - -s /bin/sh $navalplan_admin_user -c "pg_dump $navalplan_db >> $old_db_dump" > /dev/null
|
||||
|
||||
echo "Creating and populating new database...";
|
||||
execute_sql_as_admin "CREATE DATABASE $libreplan_db;"
|
||||
execute_sql_as_admin "GRANT ALL PRIVILEGES ON DATABASE $libreplan_db TO $libreplan_user;"
|
||||
execute_sql_as_admin "ALTER DATABASE $libreplan_db OWNER TO $libreplan_user;"
|
||||
echo "*:*:*:*:$libreplan_passwd" > $PGPASSFILE
|
||||
push_sql_from_file_as_user $old_db_dump $libreplan_user $libreplan_db
|
||||
|
||||
rm $PGPASSFILE $old_db_dump
|
||||
|
||||
fi
|
||||
#DEBHELPER#
|
||||
7
debian/rules
vendored
7
debian/rules
vendored
|
|
@ -81,13 +81,16 @@ install:
|
|||
# Copy SQL upgrade script for version 1.1.0
|
||||
$(call CMD,cp $(CURDIR)/scripts/database/upgrade_1.1.0.sql \
|
||||
$(CURDIR)/debian/tmp/usr/share/dbconfig-common/data/libreplan/upgrade/pgsql/1.1.0)
|
||||
# Copy SQL upgrade script for version 1.2.0
|
||||
$(call CMD,cp $(CURDIR)/scripts/database/upgrade_1.2.0.sql \
|
||||
$(CURDIR)/debian/tmp/usr/share/dbconfig-common/data/libreplan/upgrade/pgsql/1.2.0)
|
||||
# Install Policy file
|
||||
$(call CMD,mkdir -p $(CURDIR)/debian/tmp/etc/tomcat6/policy.d)
|
||||
$(call CMD,cp $(CURDIR)/debian/51libreplan.policy \
|
||||
$(CURDIR)/debian/tmp/etc/tomcat6/policy.d/)
|
||||
# Link Java PostgreSQL library
|
||||
$(call CMD,mkdir -p $(CURDIR)/debian/tmp/usr/share/tomcat6/lib)
|
||||
$(call CMD,ln -sf /usr/share/java/postgresql-jdbc3.jar $(CURDIR)/debian/tmp/usr/share/tomcat6/lib)
|
||||
#$(call CMD,mkdir -p $(CURDIR)/debian/tmp/usr/share/tomcat6/lib)
|
||||
#$(call CMD,ln -sf /usr/share/java/postgresql-jdbc3.jar $(CURDIR)/debian/tmp/usr/share/tomcat6/lib)
|
||||
$(call CMD,dh_install)
|
||||
|
||||
binary-indep: build install
|
||||
|
|
|
|||
|
|
@ -44,9 +44,9 @@ work as ``.zul`` page still does not exist.
|
|||
If you want to run LibrePlan in development mode you need to follow the next
|
||||
instructions:
|
||||
|
||||
* Create a PostgreSQL database called ``navaldev`` with permissions for a
|
||||
user ``naval`` with password ``naval`` (see ``INSTALL`` file for other
|
||||
databases and more info).
|
||||
* Create a PostgreSQL database called ``libreplandev`` with permissions for a
|
||||
user ``libreplan`` with password ``libreplan`` (see ``INSTALL`` file for
|
||||
other databases and more info).
|
||||
|
||||
* Compile LibrePlan with the following command from project root folder::
|
||||
|
||||
|
|
|
|||
|
|
@ -82,9 +82,9 @@ this behaviour and use it in all the tasks they want.
|
|||
If you want to run LibrePlan in development mode you need to follow the next
|
||||
instructions:
|
||||
|
||||
* Create a PostgreSQL database called ``navaldev`` with permissions for a
|
||||
user ``naval`` with password ``naval`` (see ``HACKING`` file for other
|
||||
databases and more info).
|
||||
* Create a PostgreSQL database called ``libreplandev`` with permissions for a
|
||||
user ``libreplan`` with password ``libreplan`` (see ``HACKING`` file for
|
||||
other databases and more info).
|
||||
|
||||
* Compile LibrePlan with the following command from project root folder::
|
||||
|
||||
|
|
@ -2637,7 +2637,7 @@ developing new web services. For each web service, some test scripts are
|
|||
provided in order to check implementation.
|
||||
|
||||
|
||||
.. _LibrePlan: http://www.libreplan.org/en/
|
||||
.. _LibrePlan: http://www.libreplan.com/
|
||||
.. _CRUD: http://en.wikipedia.org/wiki/Create,_read,_update_and_delete
|
||||
.. _Hibernate: http://www.hibernate.org/
|
||||
.. _`Optimistic Locking`: http://en.wikipedia.org/wiki/Optimistic_locking
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@ $ sudo apt-get install postgresql
|
|||
$ sudo su -c "psql" postgres
|
||||
|
||||
<----------------- Executar os seguintes comandos SQL ----------
|
||||
create database navaldev;
|
||||
create user naval with password 'naval';
|
||||
grant all privileges on database navaldev to naval;
|
||||
create database libreplandev;
|
||||
create user libreplan with password 'libreplan';
|
||||
grant all privileges on database libreplandev to libreplan;
|
||||
\q
|
||||
------------------------------------------------------------------
|
||||
|
||||
|
|
@ -40,9 +40,9 @@ para permitir o acceso a base de datos
|
|||
<Resource name="jdbc/libreplan-ds" auth="Container"
|
||||
type="javax.sql.DataSource"
|
||||
maxActive="100" maxIdle="30" maxWait="10000"
|
||||
username="naval" password="naval"
|
||||
username="libreplan" password="libreplan"
|
||||
driverClassName="org.postgresql.Driver"
|
||||
url="jdbc:postgresql://localhost/navaldev"/>
|
||||
url="jdbc:postgresql://localhost/libreplandev"/>
|
||||
...
|
||||
</Context>
|
||||
---------------------- ---------------------------------------
|
||||
|
|
@ -96,4 +96,4 @@ Neste intre a aplicación debería estar accesible en : http://localhost:8080/li
|
|||
------------------------------------------------------------------------
|
||||
Se quixeramos facer un volcado da base de datos so precisariamos empregar o seguinte comando, isto non é necesario para a instalación.
|
||||
|
||||
$ pg_dump -h localhost -U naval -c -F p -v -f bdxestionproducion.dump navaldev
|
||||
$ pg_dump -h localhost -U libreplan -c -F p -v -f bdxestionproducion.dump libreplandev
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ Introduction
|
|||
The purpose of this document is to describe the features of LibrePlan and provide user information on how to configure and use the application.
|
||||
|
||||
LibrePlan is an opensource web application for project planning. Its main goal is to provide a complete solution for company project management.
|
||||
For any specific information you may need about this software, please contact the development team at http://www.libreplan.org/en/contact
|
||||
For any specific information you may need about this software, please contact the development team at http://www.libreplan.com/contact/
|
||||
|
||||
|
||||
.. figure:: images/company_view.png
|
||||
|
|
|
|||
|
|
@ -4,16 +4,20 @@ Assignment of resources
|
|||
.. asigacion_
|
||||
.. contents::
|
||||
|
||||
The assignment of resources is one of the program's most important features, and can be carried out in two different ways:
|
||||
The assignment of resources is one of the program's most important features,
|
||||
and can be carried out in two different ways:
|
||||
|
||||
* Specific assignment.
|
||||
|
||||
* Generic assignment.
|
||||
|
||||
Both types of assignment are explained in the following sections.
|
||||
|
||||
To carry out either of the two types of resource assignment, the following steps are necessary:
|
||||
To carry out either of the two types of resource assignment, the following
|
||||
steps are necessary:
|
||||
|
||||
* Go to the planning of an order.
|
||||
|
||||
* Right click on the task to be planned.
|
||||
|
||||
.. figure:: images/resource-assignment-planning.png
|
||||
|
|
@ -23,16 +27,37 @@ To carry out either of the two types of resource assignment, the following steps
|
|||
|
||||
* The program shows a screen in which the following information can be viewed:
|
||||
|
||||
* List of criteria that must be fulfilled. For each hour group, a list of hour groups is shown, each of which requires a list of criteria.
|
||||
* List of criteria that must be fulfilled. For each hour group, a list of
|
||||
hour groups is shown, each of which requires a list of criteria.
|
||||
|
||||
* Task information: start and end date of the task.
|
||||
* Type of calculation: The system allows users to choose the strategy to be used to calculate assignments:
|
||||
|
||||
* Calculate number of hours: This calculates the number of hours required to be devoted to the assigned resources, which are given an end date and a resource number per day.
|
||||
* Calculate end date: This calculates the end date of the task based on the number of task resources and the total number of hours to finish the task.
|
||||
* Calculate number of resources: This calculates the number of resources required to finish the task on a specific date and devotes a known number of hours to them.
|
||||
* Type of calculation: The system allows users to choose the strategy to
|
||||
be used to calculate assignments:
|
||||
|
||||
* Recommended assignment: This option allows the program to gather criteria that must be fulfilled and the total number of hours from all hour groups, and then recommends a generic assignment. If there was a prior assignment, the system deletes it and replaces it with the new one.
|
||||
* Assignments: A list of assignments that have been carried out. This list shows the generic assignments (the number will be the list of fulfilled criteria, and the number of hours and resources per day). Every assignment carried out can be explicitly removed by clicking the delete button.
|
||||
* Calculate number of hours: This calculates the number of hours
|
||||
required to be devoted to the assigned resources, which are given an
|
||||
end date and a resource number per day.
|
||||
|
||||
* Calculate end date: This calculates the end date of the task based on
|
||||
the number of task resources and the total number of hours to finish
|
||||
the task.
|
||||
|
||||
* Calculate number of resources: This calculates the number of resources
|
||||
required to finish the task on a specific date and devotes a known
|
||||
number of hours to them.
|
||||
|
||||
* Recommended assignment: This option allows the program to gather
|
||||
criteria that must be fulfilled and the total number of hours from all
|
||||
hour groups, and then recommends a generic assignment. If there was
|
||||
a prior assignment, the system deletes it and replaces it with the new
|
||||
one.
|
||||
|
||||
* Assignments: A list of assignments that have been carried out. This list
|
||||
shows the generic assignments (the number will be the list of fulfilled
|
||||
criteria, and the number of hours and resources per day). Every
|
||||
assignment carried out can be explicitly removed by clicking the delete
|
||||
button.
|
||||
|
||||
.. figure:: images/resource-assignment.png
|
||||
:scale: 50
|
||||
|
|
@ -40,7 +65,9 @@ To carry out either of the two types of resource assignment, the following steps
|
|||
Resource assignment
|
||||
|
||||
* Users select "Search resources".
|
||||
* The program shows a new screen consisting of a criteria tree and a list to the right of workers that fulfil the selected criteria:
|
||||
|
||||
* The program shows a new screen consisting of a criteria tree and a list to
|
||||
the right of workers that fulfil the selected criteria:
|
||||
|
||||
.. figure:: images/resource-assignment-search.png
|
||||
:scale: 50
|
||||
|
|
@ -49,22 +76,34 @@ To carry out either of the two types of resource assignment, the following steps
|
|||
|
||||
* Users can select:
|
||||
|
||||
* Specific assignment. See the "Specific assignment" section to find out what is involved when choosing this option.
|
||||
* Generic assignment. See the "Generic assignment" section to find out what is involved when choosing this option.
|
||||
* Specific assignment. See the "Specific assignment" section to find out
|
||||
what is involved when choosing this option.
|
||||
|
||||
* Users select a list of criteria (generic) or a list of workers (specific). A multiple-choice selection is performed by pressing the "Ctrl" button when clicking each worker/criterion.
|
||||
* Generic assignment. See the "Generic assignment" section to find out
|
||||
what is involved when choosing this option.
|
||||
|
||||
* Users then click the "Select" button. It is important to remember that if a generic assignment is not marked, users need to choose a worker or machine to perform an assignment. If this is not done, it is sufficient for users to choose one or several criteria.
|
||||
* Users select a list of criteria (generic) or a list of workers (specific).
|
||||
A multiple-choice selection is performed by pressing the "Ctrl" button
|
||||
when clicking each worker/criterion.
|
||||
|
||||
* The program then shows the selected criteria or resource list on the list of assignments from the original resource assignment screen.
|
||||
* Users then click the "Select" button. It is important to remember that if
|
||||
a generic assignment is not marked, users need to choose a worker or
|
||||
machine to perform an assignment. If this is not done, it is sufficient
|
||||
for users to choose one or several criteria.
|
||||
|
||||
* Users must choose the hours or resources per day depending on the assignment method used on the program.
|
||||
* The program then shows the selected criteria or resource list on the list
|
||||
of assignments from the original resource assignment screen.
|
||||
|
||||
* Users must choose the hours or resources per day depending on the
|
||||
assignment method used on the program.
|
||||
|
||||
|
||||
Specific assignment
|
||||
===================
|
||||
|
||||
This is the specific assignment of a resource to a project task, i.e. the user decides which specific "name and surname(s)" or "machine" must be assigned to a task.
|
||||
This is the specific assignment of a resource to a project task, i.e. the
|
||||
user decides which specific "name and surname(s)" or "machine" must be
|
||||
assigned to a task.
|
||||
|
||||
Specific assignment can be carried out on the screen shown in this image:
|
||||
|
||||
|
|
@ -74,20 +113,38 @@ Specific assignment can be carried out on the screen shown in this image:
|
|||
|
||||
Specific resource assignment
|
||||
|
||||
When a resource is specifically assigned, the program creates daily assignments in relation to the percentage of daily assigned resources selected, by previously comparing it with the available resource calendar. For example, an assignment of 0.5 resources for a 32-hour task means that 4 hours per day are assigned to the specific resource to fulfil the task (supposing a working calendar of 8 hours per day).
|
||||
When a resource is specifically assigned, the program creates daily
|
||||
assignments in relation to the percentage of daily assigned resources
|
||||
selected, by previously comparing it with the available resource calendar.
|
||||
For example, an assignment of 0.5 resources for a 32-hour task means that
|
||||
4 hours per day are assigned to the specific resource to fulfil the
|
||||
task (supposing a working calendar of 8 hours per day).
|
||||
|
||||
Specific machine assignment
|
||||
---------------------------
|
||||
|
||||
Specific machine assignment functions in the same way as that for workers. When a machine is assigned a task, the system stores a specific assignment of hours for the chosen machine. The main difference is that the system searches the list of assigned workers or criteria at the moment the machine is assigned:
|
||||
Specific machine assignment functions in the same way as that for workers.
|
||||
When a machine is assigned a task, the system stores a specific assignment
|
||||
of hours for the chosen machine. The main difference is that the system
|
||||
searches the list of assigned workers or criteria at the moment the machine
|
||||
is assigned:
|
||||
|
||||
* If the machine has a list of assigned workers, the program chooses from those that are required by the machine for the assigned calendar. For example, if the machine calendar is 16 hours per day and the resource calendar is 8 hours, two resources are assigned from the list of available resources.
|
||||
* If the machine has one or several assigned criteria, generic assignments are carried out from among the resources that fulfil the criteria assigned to the machine.
|
||||
* If the machine has a list of assigned workers, the program chooses from
|
||||
those that are required by the machine for the assigned calendar. For
|
||||
example, if the machine calendar is 16 hours per day and the resource
|
||||
calendar is 8 hours, two resources are assigned from the list of available
|
||||
resources.
|
||||
|
||||
* If the machine has one or several assigned criteria, generic assignments
|
||||
are carried out from among the resources that fulfil the criteria assigned
|
||||
to the machine.
|
||||
|
||||
Generic assignment
|
||||
==================
|
||||
|
||||
Generic assignment occurs when users do not choose resources specifically, but leave the decision to the program, which distributes the loads among the company's available resources.
|
||||
Generic assignment occurs when users do not choose resources specifically,
|
||||
but leave the decision to the program, which distributes the loads among the
|
||||
company's available resources.
|
||||
|
||||
.. figure:: images/asignacion-xenerica.png
|
||||
:scale: 50
|
||||
|
|
@ -97,42 +154,77 @@ Generic assignment occurs when users do not choose resources specifically, but l
|
|||
The assignment system uses the following assumptions as a basis:
|
||||
|
||||
* Tasks have criteria that are required from resources.
|
||||
|
||||
* Resources are configured to fulfil criteria.
|
||||
|
||||
However, the system does not fail when criteria have not been assigned, but when all resources fulfil the non-requirement of criteria.
|
||||
However, the system does not fail when criteria have not been assigned, but
|
||||
when all resources fulfil the non-requirement of criteria.
|
||||
|
||||
The generic assignment algorithm functions in the following way:
|
||||
|
||||
* All resources and days are treated as containers where daily assignment of hours fit, based on the maximum assignment capacity in the task calendar.
|
||||
* All resources and days are treated as containers where daily assignment of
|
||||
hours fit, based on the maximum assignment capacity in the task calendar.
|
||||
|
||||
* The system searches for the resources that fulfil the criterion.
|
||||
* The system analyses which assignments currently have different resources that fulfil criteria.
|
||||
* The resources that fulfil the criteria are chosen from those that have sufficient availability.
|
||||
* If freer resources are not available, assignments are made to the resources that have less availability.
|
||||
* Over-assignment of resources only starts when all the resources that fulfil the respective criteria are 100% assigned until the total amount required to carry out the task is attained.
|
||||
|
||||
* The system analyses which assignments currently have different resources
|
||||
that fulfil criteria.
|
||||
|
||||
* The resources that fulfil the criteria are chosen from those that have
|
||||
sufficient availability.
|
||||
|
||||
* If freer resources are not available, assignments are made to the
|
||||
resources that have less availability.
|
||||
|
||||
* Over-assignment of resources only starts when all the resources that
|
||||
fulfil the respective criteria are 100% assigned until the total amount
|
||||
required to carry out the task is attained.
|
||||
|
||||
Generic machine assignment
|
||||
--------------------------
|
||||
|
||||
Generic machine assignment functions in the same way as worker assignment. For example, when a machine is assigned to a task, the system stores a generic assignment of hours for all machines that fulfil the criteria as described for the resources in general. However, in addition, the system performs the following procedure for machines:
|
||||
Generic machine assignment functions in the same way as worker assignment.
|
||||
For example, when a machine is assigned to a task, the system stores
|
||||
a generic assignment of hours for all machines that fulfil the criteria as
|
||||
described for the resources in general. However, in addition, the system
|
||||
performs the following procedure for machines:
|
||||
|
||||
* For all machines chosen for generic assignment:
|
||||
|
||||
* It collects the machine's configuration information: alpha value, assigned workers and criteria.
|
||||
* If the machine has an assigned list of workers, the program chooses the number required by the machine depending on the assigned calendar. For example, if the machine calendar is 16 hours per day and the resource calendar is 8 hours, the program assigns two resources from the list of available resources.
|
||||
* If the machine has one or several assigned criteria, the program makes generic assignments from among the resources that fulfil the criteria assigned to the machine.
|
||||
* It collects the machine's configuration information: alpha value,
|
||||
assigned workers and criteria.
|
||||
|
||||
* If the machine has an assigned list of workers, the program chooses the
|
||||
number required by the machine depending on the assigned calendar. For
|
||||
example, if the machine calendar is 16 hours per day and the resource
|
||||
calendar is 8 hours, the program assigns two resources from the list of
|
||||
available resources.
|
||||
|
||||
* If the machine has one or several assigned criteria, the program makes
|
||||
generic assignments from among the resources that fulfil the criteria
|
||||
assigned to the machine.
|
||||
|
||||
|
||||
Advanced assignment
|
||||
===================
|
||||
|
||||
Advanced assignments allow users to design assignments that are automatically carried out by the application in order to personalise them. This procedure allows users to manually choose the daily hours that are dedicated by resources to tasks that are assigned or define a function that is applied to the assignment.
|
||||
Advanced assignments allow users to design assignments that are
|
||||
automatically carried out by the application in order to personalise them.
|
||||
This procedure allows users to manually choose the daily hours that are
|
||||
dedicated by resources to tasks that are assigned or define a function that
|
||||
is applied to the assignment.
|
||||
|
||||
The steps to follow in order to manage advanced assignments are:
|
||||
|
||||
* Go to the advanced assignment window. There are two ways to access advanced assignments:
|
||||
|
||||
* Go to a specific order and change the view to advanced assignment. In this case, all the tasks on the order and assigned resources (specific and generic) will be shown.
|
||||
* Go to the resource assignment window by clicking the "Advanced assignment" button. In this case, the assignments that show the resources (generic and specific) assigned for a task will be shown.
|
||||
* Go to a specific order and change the view to advanced assignment. In
|
||||
this case, all the tasks on the order and assigned resources (specific
|
||||
and generic) will be shown.
|
||||
|
||||
* Go to the resource assignment window by clicking the "Advanced
|
||||
assignment" button. In this case, the assignments that show the
|
||||
resources (generic and specific) assigned for a task will be shown.
|
||||
|
||||
.. figure:: images/advance-assignment.png
|
||||
:scale: 45
|
||||
|
|
@ -141,25 +233,45 @@ The steps to follow in order to manage advanced assignments are:
|
|||
|
||||
* Users can choose the required zoom level they want:
|
||||
|
||||
* If the chosen zoom is more than one day. If users change the assigned hour value to a week, month, four-month or six-month period, the system distributes the hours lineally for all days throughout the chosen period.
|
||||
* If the chosen zoom is one day. If users change the assigned hour value to a day, these hours only apply to a day. Consequently, users can decide how many hours they want to assign per day to task resources.
|
||||
* If the chosen zoom is more than one day. If users change the assigned
|
||||
hour value to a week, month, four-month or six-month period, the system
|
||||
distributes the hours lineally for all days throughout the chosen
|
||||
period.
|
||||
|
||||
* If the chosen zoom is one day. If users change the assigned hour value
|
||||
to a day, these hours only apply to a day. Consequently, users can
|
||||
decide how many hours they want to assign per day to task resources.
|
||||
|
||||
* Users can choose to design an advanced assignment function. In order to do so, users have to:
|
||||
|
||||
* Choose the function on the selection list that appears at the side of each resource and click "Configure".
|
||||
* The system shows a new window if the chosen function needs to be specifically configured. Supported functions:
|
||||
* Choose the function on the selection list that appears at the side of
|
||||
each resource and click "Configure".
|
||||
|
||||
* Segments: A function that allows users to define segments to which a polynomial function is applied. The function per segment is configured as follows:
|
||||
* The system shows a new window if the chosen function needs to be
|
||||
specifically configured. Supported functions:
|
||||
|
||||
* Segments: A function that allows users to define segments to which
|
||||
a polynomial function is applied. The function per segment is
|
||||
configured as follows:
|
||||
|
||||
* Date. Date on which the segment ends. If the following value is
|
||||
established (length), the date is calculated, alternatively, length is
|
||||
calculated.
|
||||
|
||||
* Defining the length of each segment. This indicates what percentage of
|
||||
the task's duration is required for the segment.
|
||||
|
||||
* Defining the amount of work. This indicates what workload percentage
|
||||
is expected to be completed in this segment. The quantity of work must
|
||||
be incremental. For example, if there is a 10% segment, the next one
|
||||
must be larger (for example, 20%).
|
||||
|
||||
* Date. Date on which the segment ends. If the following value is established (length), the date is calculated, alternatively, length is calculated.
|
||||
* Defining the length of each segment. This indicates what percentage of the task's duration is required for the segment.
|
||||
* Defining the amount of work. This indicates what workload percentage is expected to be completed in this segment. The quantity of work must be incremental. For example, if there is a 10% segment, the next one must be larger (for example, 20%).
|
||||
* Segment graphs and accumulated loads.
|
||||
|
||||
|
||||
* Users then click "Accept".
|
||||
* The program stores the function and applies it to the daily resource assignments.
|
||||
|
||||
* The program stores the function and applies it to the daily resource
|
||||
assignments.
|
||||
|
||||
.. figure:: images/stretches.png
|
||||
:scale: 40
|
||||
|
|
|
|||
|
|
@ -1,17 +1,21 @@
|
|||
Reports
|
||||
########
|
||||
Reports
|
||||
#######
|
||||
|
||||
.. _informes:
|
||||
.. contents::
|
||||
|
||||
|
||||
Reports
|
||||
=======
|
||||
|
||||
"LibrePlan" is integrated with *JasperReports* to manage reports, which allows users to enter various reports to analyse available data in the program.
|
||||
|
||||
The defined reports are:
|
||||
|
||||
#. `Report on worked hours by resource <15-1-report-hours-worked-by-resource.html>`__
|
||||
#. `Report on the total hours worked by resource in a month <15-2-total-hours-by-resource-month.html>`__
|
||||
#. `Report on the work and progress per report <15-3-work-progress-per-project.html>`__
|
||||
.. raw:: html
|
||||
|
||||
<ul>
|
||||
<li>
|
||||
<a href="15-1-report-hours-worked-by-resource.html">Report on worked hours by resource</a>
|
||||
</li><li>
|
||||
<a href="15-2-total-hours-by-resource-month.html">Report on the total hours worked by resource in a month</a>
|
||||
</li><li>
|
||||
<a href="15-3-work-progress-per-project.html">Report on the work and progress per report</a>
|
||||
</ul>
|
||||
|
|
|
|||
83
doc/src/user/en/16-ldap-authentication.rst
Normal file
83
doc/src/user/en/16-ldap-authentication.rst
Normal file
|
|
@ -0,0 +1,83 @@
|
|||
LDAP Configuration
|
||||
##################
|
||||
|
||||
.. contents::
|
||||
|
||||
This screen allows to establish a connection with LDAP to delegate
|
||||
authentication and/or authorization.
|
||||
|
||||
It is divided in four different areas related which are explained below:
|
||||
|
||||
Activation
|
||||
==========
|
||||
|
||||
This area is used to set the properties about the way in which *LibrePlan* uses
|
||||
LDAP.
|
||||
|
||||
If the field *Enable LDAP authentication* is checked, *LibrePlan* will look in
|
||||
LDAP each time an user tries to login in the application.
|
||||
|
||||
The field *Use LDAP roles* checked means that a mapping between LDAP roles and
|
||||
LibrePlan roles is established, so the permissions for an user in LibrePlan
|
||||
will depend on the roles in LDAP that the user has.
|
||||
|
||||
Configuration
|
||||
=============
|
||||
|
||||
This section has the parameter values for accessing LDAP.*Base, UserDN and
|
||||
Password* are parameters used to connect to LDAP and search for the users, so
|
||||
given user must have permission to do that operation in LDAP. At bottom part of
|
||||
this section there is a button to check if LDAP connection is possible with the
|
||||
given parameters. It is a good idea to try it before continuing the
|
||||
configuration.
|
||||
|
||||
Authentication
|
||||
==============
|
||||
|
||||
Here can be configured the property in LDAP nodes where should be found the
|
||||
given login name. The property *UserId* must be filled with the name of the
|
||||
property where the login name is stored in LDAP.
|
||||
|
||||
The checkbox *Save passwords in database* when it is checked, means that the
|
||||
password is stored also in LibrePlan database. In this way, if LDAP is offline
|
||||
or unreachable, LDAP users could authenticate against LibrePlan database. If it
|
||||
is not checked, LDAP users can only be authenticated against LDAP.
|
||||
|
||||
Authorization
|
||||
=============
|
||||
|
||||
This section allows to define an strategy for matching LDAP roles with
|
||||
LibrePlan roles. In fact, the first choice is the strategy to use, depending on
|
||||
LDAP implementation.
|
||||
|
||||
Group strategy
|
||||
--------------
|
||||
|
||||
When this strategy is used, it means that LDAP has a role-group strategy. It
|
||||
means that users in LDAP are nodes that hang directly from a branch which
|
||||
represents the group. In this way, considering as example an LDAP with a branch
|
||||
(group) called *Admin* and two nodes (users) in the branch called *John* and
|
||||
*William*, an administrator could assign to both users a role in LibrePlan. The
|
||||
only parameter needed in this case is the *Group path* that represents the path
|
||||
in LDAP to find the branches with the groups.
|
||||
|
||||
Property strategy
|
||||
-----------------
|
||||
|
||||
When administrator decides to use this strategy, it means that each user is a
|
||||
LDAP node and in the node exists a property that represents the group(s) for
|
||||
the user. In this case, the configuration needs two parameters:
|
||||
|
||||
* *Role property*. It represents the property in user's node in LDAP which
|
||||
contains all the roles for that user.
|
||||
|
||||
* *Role search query*. It represents the path in LDAP to find the nodes of
|
||||
the users; in this case, note that is important to know that string
|
||||
"[USER_ID]" represents the place where the login name given in the login
|
||||
form should be placed to get the correct user's node in LDAP.
|
||||
|
||||
At the bottom of this section there is a table with all the LibrePlan roles and
|
||||
a text field next to each one. This is for matching roles. For instance, if
|
||||
administrator decides that *Administration* LibrePlan role matches with *admin*
|
||||
and *administrators* roles of LDAP, in the text field should appear:
|
||||
"admin;administrators". The character for splitting roles is ";".
|
||||
|
|
@ -31,7 +31,7 @@ Written by
|
|||
LibrePlan Team
|
||||
--------------
|
||||
|
||||
* Cristina Alavariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Cristina Alvariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Jacobo Aragunde Pérez <jaragunde@igalia.com>
|
||||
* Nacho Barrientos Arias <nacho@igalia.com>
|
||||
* Xavier Castaño García <xcastanho@igalia.com>
|
||||
|
|
@ -79,6 +79,6 @@ Inside the global scope that LibrePlan is designed for regarding planning manage
|
|||
|
||||
This project was part of Plan Avanza:
|
||||
|
||||
.. figure:: images/avanza.gif
|
||||
.. figure:: images/avanza.png
|
||||
:scale: 100
|
||||
|
||||
|
|
|
|||
Binary file not shown.
|
Before Width: | Height: | Size: 1.8 KiB |
BIN
doc/src/user/en/images/avanza.png
Normal file
BIN
doc/src/user/en/images/avanza.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.8 KiB |
|
|
@ -24,3 +24,4 @@
|
|||
13-usuarios Xavier Castaño (xcastanho@igalia.com)
|
||||
14-custos Xavier Castaño (xcastanho@igalia.com)
|
||||
15-informes Xavier Castaño (xcastanho@igalia.com)
|
||||
16-ldap-authentication Ignacio Diaz Teijido (ignacio.diaz@cafedered.com)y Javier Moran Rua (jmoran@igalia.com)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ proyectos. Su objetivo principal es proporcionar una solución completa para la
|
|||
gestión de los proyectos de la empresa.
|
||||
Para cualquier información específica que necesites sobre este software, por
|
||||
favor ponte en contacto con el equipo de desarrollo en
|
||||
http://www.libreplan.org/es/contacto
|
||||
http://www.libreplan.com/contact/
|
||||
|
||||
|
||||
.. figure:: images/company_view.png
|
||||
|
|
|
|||
90
doc/src/user/es/16-ldap-authentication.rst
Normal file
90
doc/src/user/es/16-ldap-authentication.rst
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
Configuracion LDAP
|
||||
##################
|
||||
|
||||
.. contents::
|
||||
|
||||
Esta pantalla permite establecer una conexión LDAP para delegar autenticación y/o autorización.
|
||||
|
||||
Está dividida en catro áreas diferentes relacionadas que se explican debajo:
|
||||
|
||||
Activación
|
||||
==========
|
||||
|
||||
|
||||
Esta área se usa para establecer las propiedades que configuran como *LibrePlan* usa LDAP.
|
||||
|
||||
Si el campo *Habilita autenticación LDAP* está marcado, *LibrePlan* utiliza el
|
||||
LDAP para autenticar cada vez que el usuario intenta entrar en la aplicación.
|
||||
|
||||
El campo *Usar LDAP roles* marcado significa que el mapping entre el roles LDAP
|
||||
y roles LibrePlan está establecido, de manera que los permisos en LibrePlan dependen
|
||||
de los roles que el usuario tiene en el LDAP.
|
||||
|
||||
Configuración
|
||||
=============
|
||||
|
||||
Esta sección tiene los parámentros para el acceso al LDAP. Los parámetros
|
||||
*Base, UserDN y Password* son los parámetros para conectar al LDAP y buscar a
|
||||
los usuarios. El usuario configurado debe tener permiso en
|
||||
el LDAP. En la última parte de esta sección hay un botón para comprobar que la
|
||||
conexión con el LDAP es posible con los parámetros configurados. Es una buena idea
|
||||
probar la conexión antes de continuar con la configuración.
|
||||
|
||||
Autenticación
|
||||
=============
|
||||
|
||||
En esta sección se configuran la propiedad de los nodos de LDAP donde se
|
||||
encuentra almacenada el login del usuario. La propiedad *UserId* debe ser
|
||||
rellenado con el nombre de la propiedad donde el login está almacenado en el
|
||||
LDAP.
|
||||
|
||||
El checkbox *Almacenar contraseñas en la base de datos* cuando se encuentra
|
||||
marcado, indica que la contraseña se almacena también en la base de datos
|
||||
LibrePlan. De esta forma, si el LDAP está offline o no existe conectividad, los
|
||||
usuarios del LDAP pueden autenticarse contra la base de datos de LibrePlan. Si
|
||||
no está marcado, los usuario de LDAP sólo pueden ser autenticados contro el
|
||||
LDAP.
|
||||
|
||||
|
||||
Autorización
|
||||
============
|
||||
|
||||
Esta sección permite definir la estrategia para asociar los roles de LDAP con
|
||||
los roles de LibrePlan.
|
||||
|
||||
Estrategia de grupo
|
||||
-------------------
|
||||
|
||||
Cuando se usa esta estrategia, implica que el LDAP está usando una estrageia de
|
||||
grupo de rol. Significa que los usuarios en el LDAP son nodos que cuelgan
|
||||
directamente de una rama que representa el grupo. Un ejemplo de ello sería tener
|
||||
un LDAP con una rama (grupo) llamada *Admin* y que tuviera debajo dos nodos
|
||||
(usuarios) llamados *John* y *William*. En este caso un administrador de
|
||||
LibrePlan podría asignar ambos usuarios a un rol en LibrePlan.
|
||||
|
||||
El único parámetro en este caso es el *Path de grupo* que representa la ruta en
|
||||
LDAP para encontras las ramas que representan los grupos.
|
||||
|
||||
Estrategia de propiedad
|
||||
-----------------------
|
||||
|
||||
Cuando un usuario administrador decide usar esta estrategia, implica que cada
|
||||
usuario es un nodo de LDAP y que en el nodo existe una propiedad que representa
|
||||
el grupo o grupos al que pertenece el usuairo. En este caso, la configuración
|
||||
necesita dos parámetros:
|
||||
|
||||
* *Propiedad del rol*. Representa la propiedad en el nodo del usuario que
|
||||
contiene todos los roles para el mismo.
|
||||
|
||||
* *Consulta para la búsqueda de roles*. Representa la ruta en el LDAP para
|
||||
encontrar los nodos de los usuarios. En este caso, hay que tener en cuenta que
|
||||
la cadena "[USER_ID]" representa el lugar en el que el nombre del usuario
|
||||
proporcionado en el formulario de entrada debe ser situado para obtener el
|
||||
nodo apropiado correspondiente al usuario en el LDAP.
|
||||
|
||||
En el fondo de la pantalla de esta sección hay una tabla con todos los roles de
|
||||
LibrePlan y un campo de texto anexo a cada uno de ellos. Esta área es para la
|
||||
asociación de los roles. Por ejemplo, si un usuario administrador de LibrePlan
|
||||
decide que rol de LibrePlan *Administración* se corresponde con los roles
|
||||
*admin* y *administrators* del LDAP en el campo de texto hay que configurar:
|
||||
"admin;administrators". El carácter de separación de roles es ";".
|
||||
|
|
@ -28,7 +28,7 @@ Escrito por
|
|||
Equipo de LibrePlan
|
||||
-------------------
|
||||
|
||||
* Cristina Alavariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Cristina Alvariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Jacobo Aragunde Pérez <jaragunde@igalia.com>
|
||||
* Nacho Barrientos Arias <nacho@igalia.com>
|
||||
* Xavier Castaño García <xcastanho@igalia.com>
|
||||
|
|
|
|||
|
|
@ -24,3 +24,4 @@
|
|||
13-usuarios Xavier Castaño (xcastanho@igalia.com)
|
||||
14-custos Xavier Castaño (xcastanho@igalia.com)
|
||||
15-informes Xavier Castaño (xcastanho@igalia.com)
|
||||
16-ldap-authentication Ignacio Diaz Teijido (ignacio.diaz@cafedered.com) y Javier Moran Rua (jmoran@igalia.com)
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ proxectos. O seu obxectivo principal é proporcionar unha solución completa par
|
|||
xestión dos proxectos da empresa.
|
||||
Para calquera información específica que necesites sobre este software, por
|
||||
favor ponte en contacto co equipo de desenvolvemento en
|
||||
http://www.libreplan.org/contacto
|
||||
http://www.libreplan.com/contact/
|
||||
|
||||
|
||||
.. figure:: images/company_view.png
|
||||
|
|
|
|||
90
doc/src/user/gl/16-ldap-authentication.rst
Normal file
90
doc/src/user/gl/16-ldap-authentication.rst
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
Configuracion LDAP
|
||||
##################
|
||||
|
||||
.. contents::
|
||||
|
||||
Esta pantalla permite establecer unha conexión LDAP para delegar autenticación e/ou autorización.
|
||||
|
||||
Está dividida en catro áreas diferentes relacionadas que se explican debaixo:
|
||||
|
||||
Activación
|
||||
==========
|
||||
|
||||
|
||||
Esta área úsase para establecer as propiedades que configuran como *LibrePlan* usa LDAP.
|
||||
|
||||
Se o campo *Habilita autenticación LDAP* está marcado, *LibrePlan* utiliza o
|
||||
LDAP para autenticar cada vez que o usuario tenta entrar na aplicación.
|
||||
|
||||
O campo *Usar LDAP roles* marcado significa que o mapping entre os roles LDAP
|
||||
e os roles de LibrePlan está establecido, de maneira que os permisos en LibrePlan dependen
|
||||
dos roles que o usuario ten no LDAP.
|
||||
|
||||
Configuración
|
||||
=============
|
||||
|
||||
Esta sección ten os parámentros para o acceso ao LDAP. Os parámetros
|
||||
*Basee, UserDN e Password* son os parámetros para conectar ao LDAP e buscar aos
|
||||
usuarios. O usuario configurado debe ter permiso no
|
||||
LDAP. Na última parte desta sección hai un botón para comprobar que a
|
||||
conexión co LDAP é posible cos parámetros configurados. É unha boa idea
|
||||
probar a conexión antes de continuar coa configuración.
|
||||
|
||||
Autenticación
|
||||
=============
|
||||
|
||||
Nesta sección configúranse a propiedade dos nodos de LDAP onde se atopa
|
||||
almacenada o login do usuario. A propiedade *UserId* debe ser
|
||||
enchido co nome da propiedade onde o login está almacenado no
|
||||
LDAP.
|
||||
|
||||
O checkbox *Almacenar contrasinais na base de datos* cando se atopa
|
||||
marcado, indica que a contrasinal se almacena tamén na base de datos
|
||||
LibrePlan. Desta forma, se o LDAP está offline ou non existe conectividad, os
|
||||
usuarios do LDAP poden autenticarse contra a base de datos de LibrePlan. Se
|
||||
non está marcado, o usuario de LDAP só poden ser autenticados contro o
|
||||
LDAP.
|
||||
|
||||
|
||||
Autorización
|
||||
============
|
||||
|
||||
Esta sección permite definir a estratexia para asociar os roles de LDAP cos
|
||||
roles de LibrePlan.
|
||||
|
||||
Estratexia de grupo
|
||||
-------------------
|
||||
|
||||
Cando se usa esta estratexia, implica que o LDAP está a usar unha estratexia de grupo
|
||||
de rol. Significa que os usuarios no LDAP son nodos que colgan
|
||||
directamente dunha rama que representa o grupo. Un exemplo diso sería ter
|
||||
un LDAP cunha rama (grupo) chamada *Admin* e que tivese debaixo dous nodos
|
||||
(usuarios) chamados *John* e *William*. Neste caso un administrador de LibrePlan
|
||||
podería asignar ambos usuarios a un rol en LibrePlan.
|
||||
|
||||
O único parámetro neste caso é o *Path de grupo* que representa a ruta en LDAP
|
||||
para atopar as ramas que representan os grupos.
|
||||
|
||||
Estratexia de propiedade
|
||||
------------------------
|
||||
|
||||
Cando un usuario administrador decide usar esta estratexia, implica que cada
|
||||
usuario é un nodo de LDAP e que no nodo existe unha propiedade que representa
|
||||
o grupo ou grupos ao que pertence o usuairo. Neste caso, a configuración
|
||||
necesita dous parámetros:
|
||||
|
||||
* *Propiedade do rol*. Representa a propiedade no nodo do usuario que
|
||||
contén todos os roles para o mesmo.
|
||||
|
||||
* *Consulta para a procura de roles*. Representa a ruta no LDAP para
|
||||
atopar os nodos dos usuarios. Neste caso, hai que ter en conta que
|
||||
a cadea "[USER_IDE]" representa o lugar no que o nome do usuario
|
||||
proporcionado no formulario de entrada debe ser situado para obter o
|
||||
nodo apropiado correspondente ao usuario no LDAP.
|
||||
|
||||
No fondo da pantalla desta sección hai unha táboa con todos os roles de LibrePlan
|
||||
e un campo de texto anexo a cada un deles. Esta área é para a
|
||||
asociación dos roles. Por exemplo, se un usuario administrador de LibrePlan
|
||||
decide que rol de LibrePlan *Administración* correspóndese cos roles
|
||||
*admin* e *administrators* do LDAP no campo de texto hai que configurar:
|
||||
"admin;administrators". O carácter de separación de roles é ";".
|
||||
|
|
@ -28,7 +28,7 @@ Escrito por
|
|||
Equipo de LibrePlan
|
||||
-------------------
|
||||
|
||||
* Cristina Alavariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Cristina Alvariño Pérez <cristina.alvarino@cafedered.es>
|
||||
* Jacobo Aragunde Pérez <jaragunde@igalia.com>
|
||||
* Nacho Barrientos Arias <nacho@igalia.com>
|
||||
* Xavier Castaño García <xcastanho@igalia.com>
|
||||
|
|
|
|||
|
|
@ -24,3 +24,4 @@
|
|||
13-usuarios Xavier Castaño (xcastanho@igalia.com)
|
||||
14-custos Xavier Castaño (xcastanho@igalia.com)
|
||||
15-informes Xavier Castaño (xcastanho@igalia.com)
|
||||
16-ldap-authentication Ignacio Diaz Teijido (ignacio.diaz@cafedered.com) e Javier Moran Rua (jmoran@igalia.com)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
import sys, shlex, subprocess
|
||||
from optparse import OptionParser, OptionGroup
|
||||
from docutils.writers import latex2e
|
||||
import re
|
||||
|
||||
try:
|
||||
import locale
|
||||
|
|
@ -42,6 +43,23 @@ OPT.docinfo.add_option("-i", "--info", dest="docinfo",
|
|||
help="Read project information from FILE")
|
||||
|
||||
|
||||
is_index_filename = re.compile(r'^[0-9]{2}-[a-zA-Z].*').match
|
||||
|
||||
|
||||
def str_to_numeric_tuple(s):
|
||||
r = []
|
||||
for item in s.split("-"):
|
||||
try:
|
||||
r.append(int(item, 10))
|
||||
except ValueError:
|
||||
# Tried to convert a non-integer, bail out
|
||||
break
|
||||
return tuple(r)
|
||||
|
||||
def str_tuple_sort(a, b):
|
||||
return cmp(str_to_numeric_tuple(a), str_to_numeric_tuple(b))
|
||||
|
||||
|
||||
def optparser(*groups):
|
||||
parser.add_option_group(OPT.common)
|
||||
[parser.add_option_group(g) for g in groups]
|
||||
|
|
@ -50,7 +68,12 @@ def optparser(*groups):
|
|||
|
||||
class DupRefsRemover(object):
|
||||
def __init__(self, out):
|
||||
self.out = out
|
||||
if hasattr(out, "write"):
|
||||
self.out = out.write
|
||||
elif hasattr(out, "handle_line"):
|
||||
self.out = out.handle_line
|
||||
else:
|
||||
raise ValueError("%r has no write/handle_line" % out)
|
||||
self.ref = dict()
|
||||
|
||||
def handle_line(self, line):
|
||||
|
|
@ -64,9 +87,35 @@ class DupRefsRemover(object):
|
|||
else:
|
||||
# Add reference and print it out
|
||||
self.ref[r[0]] = r[1]
|
||||
self.out.write(line)
|
||||
self.out(line)
|
||||
else:
|
||||
self.out.write(line)
|
||||
self.out(line)
|
||||
|
||||
|
||||
class UnderlineXlate(object):
|
||||
_XLATE = {
|
||||
"#": "=",
|
||||
"=": "-",
|
||||
"-": "~",
|
||||
"~": "^",
|
||||
}
|
||||
|
||||
def __init__(self, out):
|
||||
if hasattr(out, "write"):
|
||||
self.out = out.write
|
||||
elif hasattr(out, "handle_line"):
|
||||
self.out = out.handle_line
|
||||
else:
|
||||
raise ValueError("%r has no write/handle_line" % out)
|
||||
|
||||
def handle_line(self, line):
|
||||
sline = line.strip()
|
||||
if len(sline):
|
||||
if sline[0] in self._XLATE:
|
||||
sline = sline.replace(sline[0], self._XLATE[sline[0]])
|
||||
self.out(sline)
|
||||
return
|
||||
self.out(line)
|
||||
|
||||
|
||||
|
||||
|
|
@ -239,13 +288,17 @@ class DocTool(object):
|
|||
print
|
||||
|
||||
out = DupRefsRemover(sys.stdout)
|
||||
out_xlate = UnderlineXlate(out)
|
||||
|
||||
args = list(args)
|
||||
args.sort(str_tuple_sort)
|
||||
|
||||
for name in args:
|
||||
if not name.endswith(".rst"):
|
||||
continue
|
||||
|
||||
f = file(name, "rU")
|
||||
map(out.handle_line,
|
||||
map(is_index_filename(name) and out.handle_line or out_xlate.handle_line,
|
||||
filter(lambda l: ".. contents::" not in l,
|
||||
f.readlines())
|
||||
)
|
||||
|
|
@ -263,9 +316,12 @@ class DocTool(object):
|
|||
f.close()
|
||||
print
|
||||
|
||||
args = list(args)
|
||||
args.sort(str_tuple_sort)
|
||||
|
||||
for name in args:
|
||||
# Skip non-RST inputs
|
||||
if not name.endswith(".rst"):
|
||||
if not name.endswith(".rst") or not is_index_filename(name):
|
||||
continue
|
||||
|
||||
f = file(name, "rU")
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
<parent>
|
||||
<groupId>org.libreplan</groupId>
|
||||
<artifactId>libreplan</artifactId>
|
||||
<version>1.1.3</version>
|
||||
<version>1.2.0</version>
|
||||
</parent>
|
||||
<artifactId>ganttzk</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
|
|
|||
|
|
@ -1933,16 +1933,27 @@ public class GanttDiagramGraph<V, D extends IDependency<V>> implements
|
|||
}
|
||||
|
||||
public boolean hasVisibleIncomingDependencies(V task) {
|
||||
return isSomeVisible(graph.incomingEdgesOf(task));
|
||||
return isSomeVisibleAndNotEndEnd(graph.incomingEdgesOf(task));
|
||||
}
|
||||
|
||||
private boolean isSomeVisibleAndNotEndEnd(Set<D> dependencies) {
|
||||
for (D each : dependencies) {
|
||||
if (!each.getType().equals(DependencyType.END_END)
|
||||
&& adapter.isVisible(each)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean hasVisibleOutcomingDependencies(V task) {
|
||||
return isSomeVisible(graph.outgoingEdgesOf(task));
|
||||
return isSomeVisibleAndNotStartStart(graph.outgoingEdgesOf(task));
|
||||
}
|
||||
|
||||
private boolean isSomeVisible(Set<D> dependencies) {
|
||||
private boolean isSomeVisibleAndNotStartStart(Set<D> dependencies) {
|
||||
for (D each : dependencies) {
|
||||
if (adapter.isVisible(each)) {
|
||||
if (!each.getType().equals(DependencyType.START_START)
|
||||
&& adapter.isVisible(each)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -58,11 +58,11 @@ resourcesLoadPanel = self;
|
|||
<center border="0">
|
||||
<borderlayout sclass="resourcesload">
|
||||
<west size="250px" flex="true" collapsible="true"
|
||||
splittable="true" autoscroll="false">
|
||||
splittable="true" autoscroll="false" border="0">
|
||||
<borderlayout>
|
||||
<north border="0" height="35px" flex="true" collapsible="true">
|
||||
<vbox pack="top" align="center">
|
||||
<tree fixedLayout="true" hflex="true">
|
||||
<tree fixedLayout="true" hflex="true" sclass="resourceloaddetailsContainer">
|
||||
<treecols>
|
||||
<treecol label="${ganttzk_i18n:_('Name')}" height="29px"/>
|
||||
</treecols>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
<parent>
|
||||
<groupId>org.libreplan</groupId>
|
||||
<artifactId>libreplan</artifactId>
|
||||
<version>1.1.3</version>
|
||||
<version>1.2.0</version>
|
||||
</parent>
|
||||
<artifactId>libreplan-business</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
|
|
|
|||
|
|
@ -22,12 +22,12 @@
|
|||
package org.libreplan.business.calendars.daos;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.hibernate.Criteria;
|
||||
import org.hibernate.Query;
|
||||
import org.hibernate.criterion.Restrictions;
|
||||
import org.libreplan.business.calendars.entities.BaseCalendar;
|
||||
import org.libreplan.business.calendars.entities.CalendarData;
|
||||
|
|
@ -60,6 +60,7 @@ public class BaseCalendarDAO extends IntegrationEntityDAO<BaseCalendar>
|
|||
public List<BaseCalendar> getBaseCalendars() {
|
||||
List<BaseCalendar> list = list(BaseCalendar.class);
|
||||
removeResourceCalendarInstances(list);
|
||||
Collections.sort(list);
|
||||
return list;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ package org.libreplan.business.calendars.entities;
|
|||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
|
@ -58,7 +57,7 @@ import org.libreplan.business.workingday.ResourcesPerDay;
|
|||
* @author Manuel Rego Casasnovas <mrego@igalia.com>
|
||||
*/
|
||||
public class BaseCalendar extends IntegrationEntity implements ICalendar,
|
||||
IHumanIdentifiable {
|
||||
IHumanIdentifiable, Comparable<BaseCalendar> {
|
||||
|
||||
private static final Capacity DEFAULT_VALUE = Capacity.zero()
|
||||
.overAssignableWithoutLimit();
|
||||
|
|
@ -83,23 +82,6 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar,
|
|||
return calendar;
|
||||
}
|
||||
|
||||
public static List<BaseCalendar> sortByName(List<BaseCalendar> baseCalendars) {
|
||||
Collections.sort(baseCalendars, new Comparator<BaseCalendar>() {
|
||||
|
||||
@Override
|
||||
public int compare(BaseCalendar o1, BaseCalendar o2) {
|
||||
if (o2.getName() == null) {
|
||||
return -1;
|
||||
}
|
||||
if (o1.getName() == null) {
|
||||
return 1;
|
||||
}
|
||||
return o1.getName().compareTo(o2.getName());
|
||||
}
|
||||
});
|
||||
return baseCalendars;
|
||||
}
|
||||
|
||||
private static void resetDefaultCapacities(BaseCalendar calendar) {
|
||||
CalendarData calendarData = calendar.getLastCalendarData();
|
||||
if (calendarData != null) {
|
||||
|
|
@ -1227,4 +1209,9 @@ public class BaseCalendar extends IntegrationEntity implements ICalendar,
|
|||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(BaseCalendar calendar) {
|
||||
return this.getName().compareToIgnoreCase(calendar.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -47,11 +47,11 @@ public class CalendarBootstrap implements ICalendarBootstrap {
|
|||
@Override
|
||||
@Transactional
|
||||
public void loadRequiredData() {
|
||||
if (calendarExceptionTypeDAO.getAll().size() == 0) {
|
||||
for (PredefinedCalendarExceptionTypes type : PredefinedCalendarExceptionTypes
|
||||
.values()) {
|
||||
CalendarExceptionType calendarExceptionType = type
|
||||
.getCalendarExceptionType();
|
||||
if (!calendarExceptionTypeDAO.existsByName(calendarExceptionType)) {
|
||||
calendarExceptionType
|
||||
.setCode(entitySequenceDAO
|
||||
.getNextEntityCodeWithoutTransaction(EntityNameEnum.CALENDAR_EXCEPTION_TYPE));
|
||||
|
|
|
|||
|
|
@ -291,7 +291,8 @@ public class Configuration extends BaseEntity {
|
|||
}
|
||||
|
||||
public ProgressType getProgressType() {
|
||||
return progressType;
|
||||
return (progressType == null) ? ProgressType.SPREAD_PROGRESS
|
||||
: progressType;
|
||||
}
|
||||
|
||||
public void setCompanyLogoURL(String companyLogoURL) {
|
||||
|
|
|
|||
|
|
@ -45,11 +45,11 @@ public class TypeOfWorkHoursBootstrap implements ITypeOfWorkHoursBootstrap {
|
|||
@Override
|
||||
@Transactional
|
||||
public void loadRequiredData() {
|
||||
if (typeOfWorkHoursDAO.findAll().size() == 0) {
|
||||
for (PredefinedTypeOfWorkHours predefinedTypeOfWorkHours : PredefinedTypeOfWorkHours
|
||||
.values()) {
|
||||
TypeOfWorkHours typeOfWorkHours = predefinedTypeOfWorkHours
|
||||
.getTypeOfWorkHours();
|
||||
if (!typeOfWorkHoursDAO.existsByName(typeOfWorkHours)) {
|
||||
typeOfWorkHours.setCodeAutogenerated(true);
|
||||
typeOfWorkHours
|
||||
.setCode(entitySequenceDAO
|
||||
|
|
|
|||
|
|
@ -36,7 +36,8 @@ import org.libreplan.business.users.entities.User;
|
|||
*
|
||||
* @author Jacobo Aragunde Perez <jaragunde@igalia.com>
|
||||
*/
|
||||
public class ExternalCompany extends BaseEntity implements IHumanIdentifiable{
|
||||
public class ExternalCompany extends BaseEntity implements IHumanIdentifiable,
|
||||
Comparable<ExternalCompany> {
|
||||
|
||||
private String name;
|
||||
|
||||
|
|
@ -195,4 +196,9 @@ public class ExternalCompany extends BaseEntity implements IHumanIdentifiable{
|
|||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(ExternalCompany company) {
|
||||
return this.getName().compareToIgnoreCase(company.getName());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -45,8 +45,8 @@ public class LabelBootstrap implements ILabelBootstrap {
|
|||
@Override
|
||||
@Transactional
|
||||
public void loadRequiredData() {
|
||||
if (labelTypeDAO.getAll().size() == 0) {
|
||||
LabelType priorityType = LabelType.create("Priority");
|
||||
if (!labelTypeDAO.existsByName(priorityType)) {
|
||||
priorityType.setCodeAutogenerated(true);
|
||||
priorityType.setCode(entitySequenceDAO
|
||||
.getNextEntityCodeWithoutTransaction(EntityNameEnum.LABEL));
|
||||
|
|
|
|||
|
|
@ -394,6 +394,10 @@ public class QualityForm extends BaseEntity implements IHumanIdentifiable{
|
|||
this.reportAdvance = BooleanUtils.toBoolean(reportAdvance);
|
||||
}
|
||||
|
||||
public boolean getReportAdvance() {
|
||||
return this.reportAdvance;
|
||||
}
|
||||
|
||||
public AdvanceType getAdvanceType() {
|
||||
return advanceType;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -70,8 +70,8 @@ public class CriterionsBootstrap implements ICriterionsBootstrap {
|
|||
@Override
|
||||
@Transactional
|
||||
public void loadRequiredData() {
|
||||
if (criterionTypeDAO.findAll().isEmpty()) {
|
||||
Map<CriterionType, List<String>> typesWithCriterions = getTypesWithCriterions();
|
||||
|
||||
// Insert predefined criterions
|
||||
for (Entry<CriterionType, List<String>> entry : typesWithCriterions
|
||||
.entrySet()) {
|
||||
|
|
@ -82,6 +82,7 @@ public class CriterionsBootstrap implements ICriterionsBootstrap {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void ensureCriterionExists(String criterionName,
|
||||
CriterionType criterionType) {
|
||||
|
|
|
|||
|
|
@ -45,12 +45,11 @@ public class WorkReportTypeBootstrap implements IWorkReportTypeBootstrap {
|
|||
@Override
|
||||
@Transactional
|
||||
public void loadRequiredData() {
|
||||
if (workReportTypeDAO.getWorkReportTypes().size() == 0) {
|
||||
for (PredefinedWorkReportTypes predefinedWorkReportType : PredefinedWorkReportTypes
|
||||
.values()) {
|
||||
WorkReportType workReportType = predefinedWorkReportType
|
||||
.getWorkReportType();
|
||||
if (!workReportTypeDAO
|
||||
.existsOtherWorkReportTypeByName(workReportType)) {
|
||||
workReportType.setCodeAutogenerated(true);
|
||||
workReportType
|
||||
.setCode(entitySequenceDAO
|
||||
|
|
|
|||
|
|
@ -28,12 +28,20 @@ import static org.libreplan.business.test.BusinessGlobalNames.BUSINESS_SPRING_CO
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
import org.junit.Before;
|
||||
import org.junit.Test;
|
||||
import org.junit.runner.RunWith;
|
||||
import org.libreplan.business.IDataBootstrap;
|
||||
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.libreplan.business.resources.bootstrap.ICriterionsBootstrap;
|
||||
import org.libreplan.business.resources.daos.ICriterionDAO;
|
||||
import org.libreplan.business.resources.daos.ICriterionTypeDAO;
|
||||
import org.libreplan.business.resources.daos.IResourceDAO;
|
||||
import org.libreplan.business.resources.entities.CategoryCriteria;
|
||||
import org.libreplan.business.resources.entities.Criterion;
|
||||
import org.libreplan.business.resources.entities.CriterionType;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
|
@ -45,14 +53,49 @@ import org.springframework.transaction.annotation.Transactional;
|
|||
@Transactional
|
||||
public class CriterionsBootstrapTest {
|
||||
|
||||
@Resource
|
||||
private IDataBootstrap configurationBootstrap;
|
||||
|
||||
@Autowired
|
||||
private ICriterionsBootstrap criterionsBootstrap;
|
||||
|
||||
@Autowired
|
||||
private ICriterionDAO criterionDAO;
|
||||
|
||||
@Autowired
|
||||
private IResourceDAO resourceDAO;
|
||||
|
||||
@Autowired
|
||||
private ICriterionTypeDAO criterionTypeDAO;
|
||||
|
||||
private List<Criterion> somePredefinedCriterions;
|
||||
|
||||
@Before
|
||||
public void loadRequiredaData() {
|
||||
// Load data
|
||||
configurationBootstrap.loadRequiredData();
|
||||
cleanCriteria();
|
||||
}
|
||||
|
||||
private void cleanCriteria() {
|
||||
try {
|
||||
|
||||
List<org.libreplan.business.resources.entities.Resource> resources = resourceDAO
|
||||
.findAll();
|
||||
for (org.libreplan.business.resources.entities.Resource resource : resources) {
|
||||
resourceDAO.remove(resource.getId());
|
||||
}
|
||||
|
||||
List<CriterionType> types = criterionTypeDAO.findAll();
|
||||
for (CriterionType type : types) {
|
||||
criterionTypeDAO.remove(type.getId());
|
||||
}
|
||||
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public CriterionsBootstrapTest() {
|
||||
somePredefinedCriterions = getSomePredefinedCriterions();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
<parent>
|
||||
<groupId>org.libreplan</groupId>
|
||||
<artifactId>libreplan</artifactId>
|
||||
<version>1.1.3</version>
|
||||
<version>1.2.0</version>
|
||||
</parent>
|
||||
<artifactId>libreplan-webapp</artifactId>
|
||||
<packaging>war</packaging>
|
||||
|
|
|
|||
|
|
@ -128,9 +128,10 @@ public class BaseCalendarCRUDController extends GenericForwardComposer {
|
|||
|
||||
public void save() {
|
||||
try {
|
||||
baseCalendarModel.generateCalendarCodes();
|
||||
Util.reloadBindings(editWindow);
|
||||
ConstraintChecker.isValid(editWindow);
|
||||
validateCalendarExceptionCodes();
|
||||
baseCalendarModel.generateCalendarCodes();
|
||||
baseCalendarModel.confirmSave();
|
||||
messagesForUser.showMessage(Level.INFO, _(
|
||||
"Base calendar \"{0}\" saved", baseCalendarModel
|
||||
|
|
@ -143,9 +144,10 @@ public class BaseCalendarCRUDController extends GenericForwardComposer {
|
|||
|
||||
public void saveAndContinue() {
|
||||
try {
|
||||
baseCalendarModel.generateCalendarCodes();
|
||||
Util.reloadBindings(editWindow);
|
||||
ConstraintChecker.isValid(editWindow);
|
||||
validateCalendarExceptionCodes();
|
||||
baseCalendarModel.generateCalendarCodes();
|
||||
baseCalendarModel.confirmSaveAndContinue();
|
||||
messagesForUser.showMessage(Level.INFO, _(
|
||||
"Base calendar \"{0}\" saved", baseCalendarModel
|
||||
|
|
|
|||
|
|
@ -1048,8 +1048,7 @@ public abstract class BaseCalendarEditionController extends
|
|||
}
|
||||
|
||||
public List<BaseCalendar> getParentCalendars() {
|
||||
return baseCalendarModel.getSortedBaseCalendars(baseCalendarModel
|
||||
.getPossibleParentCalendars());
|
||||
return baseCalendarModel.getPossibleParentCalendars();
|
||||
}
|
||||
|
||||
public List<CalendarException> getCalendarExceptions() {
|
||||
|
|
|
|||
|
|
@ -102,13 +102,6 @@ public class BaseCalendarModel extends IntegrationEntityModel implements
|
|||
return baseCalendars;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public List<BaseCalendar> getSortedBaseCalendars(
|
||||
List<BaseCalendar> baseCalendars) {
|
||||
return BaseCalendar.sortByName(baseCalendars);
|
||||
}
|
||||
|
||||
/*
|
||||
* Initial conversation steps
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -208,8 +208,6 @@ public interface IBaseCalendarModel extends IIntegrationEntityModel {
|
|||
|
||||
BaseCalendar getCurrentParent();
|
||||
|
||||
List<BaseCalendar> getSortedBaseCalendars(List<BaseCalendar> baseCalendars);
|
||||
|
||||
Date getCurrentStartDate();
|
||||
|
||||
Date getCurrentExpiringDate();
|
||||
|
|
|
|||
|
|
@ -201,15 +201,21 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
for (CustomMenuItem c : child.children) {
|
||||
if (c.contains(requestPath)) {
|
||||
c.setActive(true);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (requestPath.isEmpty()) {
|
||||
CustomMenuItem item = this.firstLevel.get(0);
|
||||
item.setActive(true);
|
||||
item.children.get(0).setActive(true);
|
||||
}
|
||||
}
|
||||
|
||||
private OnZKDesktopRegistry<IMenuItemsRegister> getLocator() {
|
||||
|
|
@ -308,7 +314,9 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
|
||||
if (SecurityUtils.isUserInRole(UserRole.ROLE_ADMINISTRATION)) {
|
||||
topItem(_("Administration / Management"), "/advance/advanceTypes.zul", "",
|
||||
subItem(_("LibrePlan Configuration"), "/common/configuration.zul","03-calendarios.html#calendario-por-defecto"),
|
||||
subItem(_("LibrePlan Configuration"),
|
||||
"/common/configuration.zul",
|
||||
"16-ldap-authentication.html"),
|
||||
subItem(_("Users"), "/users/users.zul","13-usuarios.html#administraci-n-de-usuarios",
|
||||
subItem(_("Accounts"), "/users/users.zul","13-usuarios.html#administraci-n-de-usuarios"),
|
||||
subItem(_("Profiles"), "/users/profiles.zul","13-usuarios.html#administraci-n-de-perfiles")),
|
||||
|
|
@ -339,7 +347,7 @@ public class CustomMenuController extends Div implements IMenuItemsRegister {
|
|||
subItem(_("Task Scheduling Status In Project"),"/reports/workingArrangementsPerOrderReport.zul","15-informes.html"),
|
||||
subItem(_("Materials Needs At Date"),"/reports/timeLineMaterialReport.zul","15-informes.html"));
|
||||
|
||||
topItem(_("My account"), "", "",
|
||||
topItem(_("My account"), "/settings/settings.zul", "",
|
||||
subItem(_("Settings"), "/settings/settings.zul", ""),
|
||||
subItem(_("Change Password"), "/settings/changePassword.zul", ""));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -38,12 +38,7 @@ public class EffortDurationBox extends Textbox {
|
|||
|
||||
@Override
|
||||
protected Object unmarshall(Object value) {
|
||||
EffortDuration result = EffortDuration
|
||||
.parseFromFormattedString((String) value);
|
||||
if (result == null) {
|
||||
return EffortDuration.zero();
|
||||
}
|
||||
return result;
|
||||
return coerceFromString((String) value);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -19,18 +19,17 @@
|
|||
package org.libreplan.web.common;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.text.DecimalFormatSymbols;
|
||||
|
||||
import org.zkoss.util.Locales;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
import org.zkoss.zul.Decimalbox;
|
||||
|
||||
/**
|
||||
* Same behavior as a {@link Decimalbox}, but it always interprets <b>,</b> and
|
||||
* <b>.</b> as decimals separators. So you can use both freely as decimal
|
||||
* separators.
|
||||
* Same behavior as a {@link Decimalbox}, but it always interprets <b>.</b> as
|
||||
* decimal separator, even when the locale uses a different separator.
|
||||
* We also reimplement coerceToString to workaround the bug
|
||||
* http://tracker.zkoss.org/browse/ZK-629.
|
||||
*
|
||||
* @author Óscar González Fernández <ogonzalez@igalia.com>
|
||||
* @author Jacobo Aragunde Pérez <jaragunde@igalia.com>
|
||||
*
|
||||
*/
|
||||
public class LenientDecimalBox extends Decimalbox {
|
||||
|
|
@ -43,4 +42,8 @@ public class LenientDecimalBox extends Decimalbox {
|
|||
super(value);
|
||||
}
|
||||
|
||||
protected String coerceToString(Object value) {
|
||||
return formatNumber(value, null);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,12 +45,17 @@ public class MatrixParameters {
|
|||
return extract(request.getRequestURI());
|
||||
}
|
||||
|
||||
/**
|
||||
* Extracts matrix parameters but skipping "jsessionid"
|
||||
*/
|
||||
public static Map<String, String> extract(String string) {
|
||||
Map<String, String> result = new HashMap<String, String>();
|
||||
Matcher matcher = matrixParamPattern.matcher(string);
|
||||
while (matcher.find()) {
|
||||
if (!matcher.group(1).equals("jsessionid")) {
|
||||
result.put(matcher.group(1), matcher.group(2));
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -192,17 +192,8 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
}
|
||||
|
||||
private void resetScreenHeight() {
|
||||
if ((tabboxOrderElement != null)
|
||||
&& (!tabboxOrderElement.getHeight().equals("620px"))) {
|
||||
tabboxOrderElement.setHeight("620px");
|
||||
tabboxOrderElement.invalidate();
|
||||
}
|
||||
}
|
||||
|
||||
private void reloadAdvances() {
|
||||
Util.reloadBindings(self);
|
||||
resetScreenHeight();
|
||||
setSelectedAdvanceLine();
|
||||
}
|
||||
|
||||
|
|
@ -883,7 +874,6 @@ public class ManageOrderElementAdvancesController extends
|
|||
}
|
||||
((AdvanceAssignment) item.getValue()).setReportGlobalAdvance(spread);
|
||||
Util.reloadBindings(editAdvances);
|
||||
resetScreenHeight();
|
||||
setSelectedAdvanceLine();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -36,12 +36,9 @@ import org.apache.commons.lang.StringUtils;
|
|||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.libreplan.business.calendars.entities.BaseCalendar;
|
||||
import org.libreplan.business.common.Registry;
|
||||
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.libreplan.business.common.exceptions.ValidationException;
|
||||
import org.libreplan.business.externalcompanies.entities.ExternalCompany;
|
||||
import org.libreplan.business.materials.daos.IMaterialCategoryDAO;
|
||||
import org.libreplan.business.materials.entities.MaterialCategory;
|
||||
import org.libreplan.business.orders.daos.IOrderDAO;
|
||||
import org.libreplan.business.orders.entities.HoursGroup;
|
||||
import org.libreplan.business.orders.entities.Order;
|
||||
|
|
@ -1440,9 +1437,11 @@ public class OrderCRUDController extends GenericForwardComposer {
|
|||
*/
|
||||
private void checkCreationPermissions() {
|
||||
if (!SecurityUtils.isUserInRole(UserRole.ROLE_CREATE_ORDER)) {
|
||||
if (createOrderButton != null) {
|
||||
createOrderButton.setDisabled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean readOnly = true;
|
||||
|
||||
|
|
|
|||
|
|
@ -375,6 +375,7 @@ public class OrderElementTreeController extends TreeController<OrderElement> {
|
|||
if (readOnly) {
|
||||
textBox.setDisabled(true);
|
||||
}
|
||||
textBox.setConstraint("no empty:" + _("cannot be empty"));
|
||||
addCell(cssClass, textBox);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import static org.libreplan.web.I18nHelper._;
|
|||
import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
|
|
@ -659,6 +660,7 @@ public class OrderModel extends IntegrationEntityModel implements IOrderModel {
|
|||
private void loadExternalCompaniesAreClient() {
|
||||
this.externalCompanies = externalCompanyDAO
|
||||
.getExternalCompaniesAreClient();
|
||||
Collections.sort(this.externalCompanies);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -179,7 +179,9 @@ public class CompanyPlanningController implements Composer {
|
|||
item.setValue(progressType);
|
||||
item.setLabel(_(progressType.getValue()));
|
||||
|
||||
if (getProgressTypeFromConfiguration().equals(progressType)) {
|
||||
ProgressType configuredProgressType = getProgressTypeFromConfiguration();
|
||||
if ((configuredProgressType != null)
|
||||
&& configuredProgressType.equals(progressType)) {
|
||||
cbProgressTypes.setSelectedItem(item);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -24,21 +24,16 @@ package org.libreplan.web.qualityforms;
|
|||
import static org.libreplan.web.I18nHelper._;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.InvalidValue;
|
||||
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.libreplan.business.common.exceptions.ValidationException;
|
||||
import org.libreplan.business.qualityforms.entities.QualityForm;
|
||||
import org.libreplan.business.qualityforms.entities.QualityFormItem;
|
||||
import org.libreplan.business.qualityforms.entities.QualityFormType;
|
||||
import org.libreplan.business.users.entities.Profile;
|
||||
import org.libreplan.web.common.BaseCRUDController;
|
||||
import org.libreplan.web.common.Level;
|
||||
import org.libreplan.web.common.Util;
|
||||
import org.libreplan.web.users.ProfileCRUDController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.zkoss.zk.ui.Component;
|
||||
import org.zkoss.zk.ui.WrongValueException;
|
||||
|
|
@ -47,13 +42,11 @@ import org.zkoss.zul.Checkbox;
|
|||
import org.zkoss.zul.Column;
|
||||
import org.zkoss.zul.Combobox;
|
||||
import org.zkoss.zul.Constraint;
|
||||
import org.zkoss.zul.Decimalbox;
|
||||
import org.zkoss.zul.Grid;
|
||||
import org.zkoss.zul.ListModelExt;
|
||||
import org.zkoss.zul.Messagebox;
|
||||
import org.zkoss.zul.Row;
|
||||
import org.zkoss.zul.Textbox;
|
||||
import org.zkoss.zul.impl.InputElement;
|
||||
|
||||
/**
|
||||
* CRUD Controller for {@link QualityForm}
|
||||
|
|
@ -119,7 +112,8 @@ public class QualityFormCRUDController extends BaseCRUDController<QualityForm> {
|
|||
|
||||
@Override
|
||||
protected void beforeSaving() throws ValidationException {
|
||||
validate();
|
||||
super.beforeSaving();
|
||||
validateReportProgress();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
@ -127,99 +121,6 @@ public class QualityFormCRUDController extends BaseCRUDController<QualityForm> {
|
|||
qualityFormModel.confirmSave();
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates all {@link Textbox} in the form
|
||||
*/
|
||||
private void validate() {
|
||||
Textbox boxName = (Textbox) editWindow
|
||||
.getFellowIfAny("qualityFormName");
|
||||
validate(boxName, boxName.getValue());
|
||||
|
||||
List<Row> rows = gridQualityFormItems.getRows().getChildren();
|
||||
for (Row row : rows) {
|
||||
validate(row);
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void validate(Row row) {
|
||||
for (Iterator i = row.getChildren().iterator(); i.hasNext();) {
|
||||
final Component comp = (Component) i.next();
|
||||
if (comp instanceof Textbox) {
|
||||
validate((Textbox) comp, ((Textbox) comp).getValue());
|
||||
}
|
||||
if (comp instanceof Decimalbox) {
|
||||
validate((Decimalbox) comp, ((Decimalbox) comp).getValue());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates {@link Textbox} checking {@link Constraint}
|
||||
* @param comp
|
||||
*/
|
||||
private void validate(InputElement comp, Object value) {
|
||||
if (comp != null && comp.getConstraint() != null) {
|
||||
final Constraint constraint = comp.getConstraint();
|
||||
constraint.validate(comp, value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void showInvalidValues(ValidationException e) {
|
||||
for (InvalidValue invalidValue : e.getInvalidValues()) {
|
||||
Object value = invalidValue.getBean();
|
||||
if (value instanceof QualityForm) {
|
||||
validateQualityForm(invalidValue);
|
||||
}
|
||||
if (value instanceof QualityFormItem) {
|
||||
validateQualityFormItem(invalidValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void validateQualityForm(InvalidValue invalidValue) {
|
||||
Component component = editWindow.getFellowIfAny("qualityFormName");
|
||||
if (component != null) {
|
||||
throw new WrongValueException(component, invalidValue.getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private void validateQualityFormItem(InvalidValue invalidValue) {
|
||||
Row rowItem = findQualityFormItem(gridQualityFormItems.getRows()
|
||||
.getChildren(), (QualityFormItem) invalidValue.getBean());
|
||||
if (rowItem != null) {
|
||||
InputElement inputElement = getInputText(rowItem, invalidValue
|
||||
.getPropertyName());
|
||||
if (inputElement != null) {
|
||||
throw new WrongValueException(rowItem, invalidValue
|
||||
.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Row findQualityFormItem(List<Row> rows, QualityFormItem item) {
|
||||
for (Row row : rows) {
|
||||
if (item.equals(row.getValue())) {
|
||||
return row;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private InputElement getInputText(Row row, String property) {
|
||||
if (property != null) {
|
||||
if (property.equals(QualityFormItem.propertyName)) {
|
||||
return (InputElement) row.getFirstChild();
|
||||
}
|
||||
if (property.equals(QualityFormItem.propertyPercentage)) {
|
||||
return (InputElement) row.getChildren().get(2);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void createQualityFormItem() {
|
||||
qualityFormModel.addQualityFormItem();
|
||||
Util.reloadBindings(gridQualityFormItems);
|
||||
|
|
@ -410,18 +311,16 @@ public class QualityFormCRUDController extends BaseCRUDController<QualityForm> {
|
|||
predicate = getSelectedName();
|
||||
}
|
||||
|
||||
public void validateReportProgress(Component comp) {
|
||||
Checkbox checkbox = (Checkbox) comp;
|
||||
if (checkbox != null) {
|
||||
if ((checkbox.isChecked()) && (!hasItemWithTotalPercentage())) {
|
||||
disabledCheckbocReportProgress(checkbox);
|
||||
messagesForUser
|
||||
.showMessage(
|
||||
Level.ERROR,
|
||||
public void validateReportProgress() {
|
||||
if ((getQualityForm().getReportAdvance())
|
||||
&& (!hasItemWithTotalPercentage())) {
|
||||
Checkbox checkBoxReportProgress = (Checkbox) editWindow
|
||||
.getFellowIfAny("checkBoxReportProgress");
|
||||
throw new WrongValueException(
|
||||
checkBoxReportProgress,
|
||||
_("The quality form must have an item with 100% value to report progress"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private boolean hasItemWithTotalPercentage() {
|
||||
return this.qualityFormModel.hasItemWithTotalPercentage();
|
||||
|
|
|
|||
|
|
@ -215,7 +215,7 @@ public class QualityFormModel implements IQualityFormModel {
|
|||
@Override
|
||||
public Boolean isTotalPercentage(QualityFormItem item) {
|
||||
return (item.getPercentage() != null) ? (item.getPercentage()
|
||||
.equals(totalPercentage)) : false;
|
||||
.compareTo(totalPercentage) == 0) : false;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ import java.util.List;
|
|||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.hibernate.validator.ClassValidator;
|
||||
|
|
@ -214,6 +215,10 @@ public abstract class TreeController<T extends ITreeNode<T>> extends
|
|||
Textbox name = (Textbox) cmp.getFellow("newOrderElementName");
|
||||
Intbox hours = (Intbox) cmp.getFellow("newOrderElementHours");
|
||||
|
||||
if (StringUtils.isEmpty(name.getValue())) {
|
||||
throw new WrongValueException(name, _("cannot be empty"));
|
||||
}
|
||||
|
||||
if (hours.getValue() == null) {
|
||||
hours.setValue(0);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -246,6 +246,7 @@ public class WorkReportTypeCRUDController extends BaseCRUDController<WorkReportT
|
|||
|
||||
private void appendTextboBoxNameDescriptionField(final Row row) {
|
||||
Textbox boxName = new Textbox();
|
||||
boxName.setHflex("1");
|
||||
boxName.setParent(row);
|
||||
boxName
|
||||
.setConstraint(validateIfExistTheSameFieldName((DescriptionField) row
|
||||
|
|
@ -267,6 +268,7 @@ public class WorkReportTypeCRUDController extends BaseCRUDController<WorkReportT
|
|||
|
||||
private void appendIntBoxLengthDescriptionField(final Row row) {
|
||||
Intbox boxLength = new Intbox();
|
||||
boxLength.setHflex("1");
|
||||
boxLength.setReadonly(isReadOnly());
|
||||
boxLength.setParent(row);
|
||||
boxLength.setConstraint("no negative, no zero");
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -6,8 +6,9 @@ webcommon.LenientDecimalBox = zk.$extends(zul.inp.Decimalbox,{
|
|||
if(!b) {
|
||||
return null;
|
||||
}
|
||||
//replace decimal comma with dot
|
||||
b = b.replace(',','.');
|
||||
//to allow using . as decimal separator, independently of the locale
|
||||
//we replace . with the actual decimal separator of the current locale
|
||||
b = b.replace('.', zk.DECIMAL);
|
||||
//process normally
|
||||
return this.$supers('coerceFromString_', arguments);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,6 +100,11 @@ body .advancedallocationlayout .icono .z-button-cm {
|
|||
border-right:0;
|
||||
}
|
||||
|
||||
|
||||
.perspectives-column .global-commands {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.toolbar-box {
|
||||
border:0;
|
||||
}
|
||||
|
|
@ -1008,7 +1013,8 @@ span.perspective, span.perspective-active {
|
|||
display: none;
|
||||
}
|
||||
|
||||
.taskdetailsContainer {
|
||||
.taskdetailsContainer,
|
||||
.resourceloaddetailsContainer {
|
||||
border-left:0;
|
||||
border-top:0;
|
||||
}
|
||||
|
|
@ -1138,6 +1144,10 @@ span.perspective, span.perspective-active {
|
|||
border-bottom:1px solid #9ECAD8;
|
||||
}
|
||||
|
||||
.orderslayout-area > .z-center-body {
|
||||
height: auto !important;
|
||||
}
|
||||
|
||||
.orderelements-tab {
|
||||
overflow-x: auto;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,12 +113,12 @@ signature="java.lang.Boolean isDefaultPasswordsControl()"?>
|
|||
<borderlayout width="auto" height="100%">
|
||||
<!-- borderlayout class="main-layout" height="2000px" width="2000px"-->
|
||||
<west class="perspectives-column" width="90px" >
|
||||
<vbox>
|
||||
<vbox vflex="1" height="100%">
|
||||
<hbox id="perspectiveButtonsInsertionPoint" sclass="toolbar-box global-commands" height="30px" width="100%">
|
||||
<button id="createOrderButton" image="/common/img/ico_add.png" sclass="planner-icon"
|
||||
tooltiptext="${i18n:_('Create New Project')}" />
|
||||
</hbox>
|
||||
<vbox id="registeredItemsInsertionPoint" width="90px"/>
|
||||
<vbox id="registeredItemsInsertionPoint" width="90px" style="overflow-y:auto;overflow-x:hidden;display:block" vflex="1" />
|
||||
</vbox>
|
||||
</west>
|
||||
<center self="@{insert(content)}" class="main-area" autoscroll="true" />
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@
|
|||
<newdatasortablecolumn label="${i18n:_('Client')}" />
|
||||
<newdatasortablecolumn label="${i18n:_('Subcontractor')}" />
|
||||
<newdatasortablecolumn label="${i18n:_('Associated user')}" />
|
||||
<newdatasortablecolumn label="${i18n:_('Actions')}" />
|
||||
<newdatasortablecolumn label="${i18n:_('Operations')}" />
|
||||
</columns>
|
||||
<rows>
|
||||
<row self="@{each='company'}" value="@{company}" onClick="controller.goToEditForm(self.value)">
|
||||
|
|
|
|||
|
|
@ -35,12 +35,11 @@
|
|||
title="@{i18n:_('Edit task')}"
|
||||
width="950px"
|
||||
left="50px"
|
||||
top="50px"
|
||||
visible="false"
|
||||
closable="true"
|
||||
onClose="orderElementController.close(event)" >
|
||||
|
||||
<tabbox height="560px" id="tabboxOrderElement">
|
||||
<tabbox id="tabboxOrderElement">
|
||||
<tabs>
|
||||
<tab id="tabDetails" label="${i18n:_('Details')}" selected="true"
|
||||
onSelect="orderElementController.clearAll();"/>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
<vbox width="100%">
|
||||
<panel title="${i18n:_('Inherited labels')}" border="normal">
|
||||
<panelchildren>
|
||||
<grid id="inheritedLabels" height="150px" fixedLayout="true"
|
||||
<grid id="inheritedLabels" fixedLayout="true"
|
||||
model="@{assignedLabelsController.inheritedLabels}">
|
||||
<columns>
|
||||
<column label="${i18n:_('Label type')}" />
|
||||
|
|
@ -49,7 +49,7 @@
|
|||
<vbox width="100%">
|
||||
<panel title="${i18n:_('Direct labels')}" border="normal">
|
||||
<panelchildren>
|
||||
<newdatasortablegrid id="directLabels" height="200px" fixedLayout="true"
|
||||
<newdatasortablegrid id="directLabels" fixedLayout="true"
|
||||
model="@{assignedLabelsController.labels}">
|
||||
<columns>
|
||||
<newdatasortablecolumn label="${i18n:_('Label type')}" sort="auto(lower(type.name))"/>
|
||||
|
|
|
|||
|
|
@ -81,9 +81,9 @@
|
|||
<panelchildren>
|
||||
<toolbarbutton style="text-decoration: none" label="${i18n:_('Unselect')}"
|
||||
onClick="assignedMaterialsController.clearSelectionAllCategoriesTree()" />
|
||||
<tree id="allCategoriesTree" rows="10" vflex="true" multiple="false">
|
||||
<tree id="allCategoriesTree" width="100%" rows="10" sizedByContent="true" vflex="true" hflex="true" multiple="false">
|
||||
<treecols>
|
||||
<treecol label="Name" />
|
||||
<treecol label="Name" hflex="true"/>
|
||||
</treecols>
|
||||
</tree>
|
||||
</panelchildren>
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
<vbox width="100%">
|
||||
<hbox style="margin-bottom:4px;" width="100%" hflex="true">
|
||||
|
||||
<hbox pack="center">
|
||||
<hbox align="center" pack="center">
|
||||
<templateFinderPopup id="templateFinderPopupAtTree" acceptButtonLabel="${i18n:_('Create Task')}" caption="${i18n:_('Choosing Template')}" />
|
||||
<label value="${i18n:_('New task')}" />
|
||||
<textbox value="" id="newOrderElementName" width="150px"
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
|
||||
</vbox>
|
||||
<vbox width="100%">
|
||||
<tree id="tree" height="440px" multiple="false" droppable="true"
|
||||
<tree id="tree" hflex="1" multiple="false" droppable="true"
|
||||
onDrop="treeController.move(self, event.dragged)"
|
||||
onSelect="treeController.updateControlButtons(event)"
|
||||
mold="paging" pageSize="25"
|
||||
|
|
|
|||
|
|
@ -64,8 +64,7 @@
|
|||
</row>
|
||||
<row>
|
||||
<label value="${i18n:_('Report progress')}" />
|
||||
<checkbox id="checkBoxReportProgress" checked="@{controller.qualityForm.reportAdvance}"
|
||||
onCheck="controller.validateReportProgress(self);" />
|
||||
<checkbox id="checkBoxReportProgress" checked="@{controller.qualityForm.reportAdvance}" />
|
||||
</row>
|
||||
</rows>
|
||||
</grid>
|
||||
|
|
@ -78,7 +77,7 @@
|
|||
<button label="${i18n:_('New quality form item')}"
|
||||
onClick="controller.createQualityFormItem()" />
|
||||
</hbox>
|
||||
<grid id="gridQualityFormItems" height="200px"
|
||||
<grid id="gridQualityFormItems"
|
||||
model="@{controller.qualityFormItems}" fixedLayout="true">
|
||||
<columns sizable="true">
|
||||
<column label="${i18n:_('Name')}"/>
|
||||
|
|
|
|||
|
|
@ -131,7 +131,7 @@
|
|||
<newdatasortablegrid id="listDescriptionFields" mold="paging" pageSize="4" fixedLayout="true"
|
||||
model="@{controller.descriptionFields}" rowRenderer= "@{controller.descriptionFieldsRowRender}">
|
||||
<columns>
|
||||
<newdatasortablecolumn label="${i18n:_('Name')}" width="300px" sort="auto(lower(fieldName))" sortDirection="ascending"/>
|
||||
<newdatasortablecolumn label="${i18n:_('Name')}" sort="auto(lower(fieldName))" sortDirection="ascending"/>
|
||||
<newdatasortablecolumn label="${i18n:_('Length')}" width="200px" align="center"/>
|
||||
<newdatasortablecolumn label="${ i18n:_('Position')}" width="200px" align="center"/>
|
||||
<newdatasortablecolumn visible = "@{controller.editable}" label="${i18n:_('Operations')}" width="150px" align="center"/>
|
||||
|
|
|
|||
|
|
@ -246,12 +246,14 @@ public class BaseCalendarModelTest {
|
|||
.getPossibleParentCalendars();
|
||||
|
||||
assertThat(possibleParentCalendars.size(), equalTo(previous + 1));
|
||||
assertThat(possibleParentCalendars.get(previous).getId(),
|
||||
BaseCalendar calendarComparison = null;
|
||||
for (BaseCalendar calendar : possibleParentCalendars)
|
||||
if (calendar.getId().equals(parentNewVersion.getId()))
|
||||
calendarComparison = calendar;
|
||||
assertThat(calendarComparison.getId(),
|
||||
equalTo(parentNewVersion.getId()));
|
||||
assertThat(
|
||||
possibleParentCalendars.get(previous)
|
||||
.getCalendarDataVersions()
|
||||
.size(), equalTo(2));
|
||||
assertThat(calendarComparison.getCalendarDataVersions().size(),
|
||||
equalTo(2));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -39,6 +39,7 @@ import static org.libreplan.web.test.WebappGlobalNames.WEBAPP_SPRING_SECURITY_CO
|
|||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
|
|
@ -51,6 +52,7 @@ import org.libreplan.business.advance.entities.AdvanceType;
|
|||
import org.libreplan.business.advance.entities.DirectAdvanceAssignment;
|
||||
import org.libreplan.business.advance.exceptions.DuplicateAdvanceAssignmentForOrderElementException;
|
||||
import org.libreplan.business.advance.exceptions.DuplicateValueTrueReportGlobalAdvanceException;
|
||||
import org.libreplan.business.common.exceptions.InstanceNotFoundException;
|
||||
import org.libreplan.business.labels.entities.Label;
|
||||
import org.libreplan.business.labels.entities.LabelType;
|
||||
import org.libreplan.business.materials.entities.Material;
|
||||
|
|
@ -63,12 +65,18 @@ import org.libreplan.business.qualityforms.entities.QualityForm;
|
|||
import org.libreplan.business.requirements.entities.CriterionRequirement;
|
||||
import org.libreplan.business.requirements.entities.DirectCriterionRequirement;
|
||||
import org.libreplan.business.requirements.entities.IndirectCriterionRequirement;
|
||||
import org.libreplan.business.resources.bootstrap.ICriterionsBootstrap;
|
||||
import org.libreplan.business.resources.daos.ICriterionDAO;
|
||||
import org.libreplan.business.resources.daos.ICriterionTypeDAO;
|
||||
import org.libreplan.business.resources.daos.IResourceDAO;
|
||||
import org.libreplan.business.resources.entities.Criterion;
|
||||
import org.libreplan.business.resources.entities.CriterionType;
|
||||
import org.libreplan.business.scenarios.bootstrap.PredefinedScenarios;
|
||||
import org.libreplan.business.scenarios.entities.OrderVersion;
|
||||
import org.libreplan.business.scenarios.entities.Scenario;
|
||||
import org.libreplan.business.templates.entities.OrderElementTemplate;
|
||||
import org.libreplan.business.workreports.daos.IWorkReportDAO;
|
||||
import org.libreplan.business.workreports.entities.WorkReport;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
|
||||
|
|
@ -96,7 +104,7 @@ public class OrderElementTreeModelTest {
|
|||
private IDataBootstrap scenariosBootstrap;
|
||||
|
||||
@Resource
|
||||
private IDataBootstrap criterionsBootstrap;
|
||||
private ICriterionsBootstrap criterionsBootstrap;
|
||||
|
||||
@Resource
|
||||
private IDataBootstrap configurationBootstrap;
|
||||
|
|
@ -104,6 +112,15 @@ public class OrderElementTreeModelTest {
|
|||
@Autowired
|
||||
private ICriterionDAO criterionDAO;
|
||||
|
||||
@Autowired
|
||||
private IWorkReportDAO workReportDAO;
|
||||
|
||||
@Autowired
|
||||
private IResourceDAO resourceDAO;
|
||||
|
||||
@Autowired
|
||||
private ICriterionTypeDAO criterionTypeDAO;
|
||||
|
||||
private Order order;
|
||||
|
||||
private OrderElementTreeModel model;
|
||||
|
|
@ -126,6 +143,8 @@ public class OrderElementTreeModelTest {
|
|||
|
||||
@Before
|
||||
public void loadRequiredaData() {
|
||||
cleanCriteria(workReportDAO, resourceDAO, criterionTypeDAO);
|
||||
|
||||
// Load data
|
||||
configurationBootstrap.loadRequiredData();
|
||||
defaultAdvanceTypesBootstrapListener.loadRequiredData();
|
||||
|
|
@ -136,6 +155,30 @@ public class OrderElementTreeModelTest {
|
|||
givenModel();
|
||||
}
|
||||
|
||||
public static void cleanCriteria(IWorkReportDAO workReportDAO,
|
||||
IResourceDAO resourceDAO, ICriterionTypeDAO criterionTypeDAO) {
|
||||
try {
|
||||
List<WorkReport> reports = workReportDAO.findAll();
|
||||
for (WorkReport each : reports) {
|
||||
workReportDAO.remove(each.getId());
|
||||
}
|
||||
|
||||
List<org.libreplan.business.resources.entities.Resource> resources = resourceDAO
|
||||
.findAll();
|
||||
for (org.libreplan.business.resources.entities.Resource each : resources) {
|
||||
resourceDAO.remove(each.getId());
|
||||
}
|
||||
|
||||
List<CriterionType> types = criterionTypeDAO.findAll();
|
||||
for (CriterionType each : types) {
|
||||
criterionTypeDAO.remove(each.getId());
|
||||
}
|
||||
|
||||
} catch (InstanceNotFoundException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private void givenOrder() {
|
||||
order = Order.create();
|
||||
order.setName("order");
|
||||
|
|
|
|||
|
|
@ -94,9 +94,11 @@ public class CalendarServiceTest {
|
|||
BaseCalendarListDTO baseCalendars = calendarService.getBaseCalendars();
|
||||
assertThat(baseCalendars.baseCalendars.size(), equalTo(previous + 1));
|
||||
|
||||
BaseCalendarDTO calendarDTO = baseCalendars.baseCalendars.get(previous);
|
||||
for (BaseCalendarDTO calendarDTO : baseCalendars.baseCalendars)
|
||||
if (calendarDTO.code.equals(calendar.getCode())) {
|
||||
assertThat(calendarDTO.code, equalTo(calendar.getCode()));
|
||||
assertThat(calendarDTO.name, equalTo(calendar.getName()));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -69,9 +69,13 @@ import org.libreplan.business.orders.entities.OrderLine;
|
|||
import org.libreplan.business.requirements.entities.CriterionRequirement;
|
||||
import org.libreplan.business.requirements.entities.DirectCriterionRequirement;
|
||||
import org.libreplan.business.requirements.entities.IndirectCriterionRequirement;
|
||||
import org.libreplan.business.resources.daos.ICriterionTypeDAO;
|
||||
import org.libreplan.business.resources.daos.IResourceDAO;
|
||||
import org.libreplan.business.resources.entities.PredefinedCriterionTypes;
|
||||
import org.libreplan.business.resources.entities.ResourceEnum;
|
||||
import org.libreplan.business.scenarios.bootstrap.IScenariosBootstrap;
|
||||
import org.libreplan.business.workreports.daos.IWorkReportDAO;
|
||||
import org.libreplan.web.orders.OrderElementTreeModelTest;
|
||||
import org.libreplan.ws.common.api.AdvanceMeasurementDTO;
|
||||
import org.libreplan.ws.common.api.ConstraintViolationDTO;
|
||||
import org.libreplan.ws.common.api.CriterionRequirementDTO;
|
||||
|
|
@ -129,8 +133,25 @@ public class OrderElementServiceTest {
|
|||
@Autowired
|
||||
private IAdHocTransactionService transactionService;
|
||||
|
||||
@Autowired
|
||||
private IWorkReportDAO workReportDAO;
|
||||
|
||||
@Autowired
|
||||
private IResourceDAO resourceDAO;
|
||||
|
||||
@Autowired
|
||||
private ICriterionTypeDAO criterionTypeDAO;
|
||||
|
||||
@Before
|
||||
public void loadRequiredaData() {
|
||||
transactionService.runOnTransaction(new IOnTransaction<Void>() {
|
||||
@Override
|
||||
public Void execute() {
|
||||
OrderElementTreeModelTest.cleanCriteria(workReportDAO,
|
||||
resourceDAO, criterionTypeDAO);
|
||||
return null;
|
||||
}
|
||||
});
|
||||
transactionService.runOnAnotherTransaction(new IOnTransaction<Void>() {
|
||||
@Override
|
||||
public Void execute() {
|
||||
|
|
@ -423,12 +444,7 @@ public class OrderElementServiceTest {
|
|||
.addOrders(orderListDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(0));
|
||||
|
||||
try {
|
||||
orderElementDAO.findByCode(code);
|
||||
assertTrue(true);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
fail();
|
||||
}
|
||||
checkIfExistsByCodeInAnotherTransaction(code);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -548,12 +564,7 @@ public class OrderElementServiceTest {
|
|||
assertTrue(instanceConstraintViolationsList.toString(),
|
||||
instanceConstraintViolationsList.size() == 0);
|
||||
|
||||
try {
|
||||
orderElementDAO.findByCode(code);
|
||||
assertTrue(true);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
fail();
|
||||
}
|
||||
checkIfExistsByCodeInAnotherTransaction(code);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -636,12 +647,7 @@ public class OrderElementServiceTest {
|
|||
assertTrue(instanceConstraintViolationsList.toString(),
|
||||
instanceConstraintViolationsList.size() == 0);
|
||||
|
||||
try {
|
||||
orderElementDAO.findByCode(code);
|
||||
assertTrue(true);
|
||||
} catch (InstanceNotFoundException e) {
|
||||
fail();
|
||||
}
|
||||
checkIfExistsByCodeInAnotherTransaction(code);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
@ -695,7 +701,11 @@ public class OrderElementServiceTest {
|
|||
.addOrders(orderListDTO).instanceConstraintViolationsList;
|
||||
assertThat(instanceConstraintViolationsList.size(), equalTo(0));
|
||||
|
||||
transactionService.runOnTransaction(new IOnTransaction<Void>() {
|
||||
checkIfExistsByCodeInAnotherTransaction(code);
|
||||
}
|
||||
|
||||
private void checkIfExistsByCodeInAnotherTransaction(final String code) {
|
||||
transactionService.runOnAnotherTransaction(new IOnTransaction<Void>() {
|
||||
@Override
|
||||
public Void execute() {
|
||||
try {
|
||||
|
|
|
|||
10
pom.xml
10
pom.xml
|
|
@ -5,7 +5,7 @@
|
|||
<groupId>org.libreplan</groupId>
|
||||
<artifactId>libreplan</artifactId>
|
||||
<packaging>pom</packaging>
|
||||
<version>1.1.3</version>
|
||||
<version>1.2.0</version>
|
||||
<name>LibrePlan</name>
|
||||
|
||||
<!--
|
||||
|
|
@ -28,8 +28,8 @@
|
|||
-->
|
||||
<properties>
|
||||
<!-- Data source properties -->
|
||||
<dataSource.user>naval</dataSource.user>
|
||||
<dataSource.password>naval</dataSource.password>
|
||||
<dataSource.user>libreplan</dataSource.user>
|
||||
<dataSource.password>libreplan</dataSource.password>
|
||||
<dataSource.jndiName>jdbc/libreplan-ds</dataSource.jndiName>
|
||||
<testDataSource.user>${dataSource.user}</testDataSource.user>
|
||||
<testDataSource.password>${dataSource.password}</testDataSource.password>
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
<jdbcDriver.version>8.3-603.jdbc4</jdbcDriver.version>
|
||||
<jdbcDriver.className>org.postgresql.Driver</jdbcDriver.className>
|
||||
<!-- Data source properties -->
|
||||
<dataSource.url>jdbc:postgresql://localhost/naval${libreplan.mode}</dataSource.url>
|
||||
<dataSource.url>jdbc:postgresql://localhost/libreplan${libreplan.mode}</dataSource.url>
|
||||
<testDataSource.url>${dataSource.url}test</testDataSource.url>
|
||||
<!-- Hibernate properties -->
|
||||
<hibernate.dialect>org.hibernate.dialect.PostgreSQLDialect</hibernate.dialect>
|
||||
|
|
@ -131,7 +131,7 @@
|
|||
<jdbcDriver.version>5.0.5</jdbcDriver.version>
|
||||
<jdbcDriver.className>com.mysql.jdbc.Driver</jdbcDriver.className>
|
||||
<!-- Data source properties -->
|
||||
<dataSource.url>jdbc:mysql://localhost/naval${libreplan.mode}</dataSource.url>
|
||||
<dataSource.url>jdbc:mysql://localhost/libreplan${libreplan.mode}</dataSource.url>
|
||||
<testDataSource.url>${dataSource.url}test</testDataSource.url>
|
||||
<!-- Hibernate properties -->
|
||||
<hibernate.dialect>org.hibernate.dialect.MySQL5InnoDBDialect</hibernate.dialect>
|
||||
|
|
|
|||
|
|
@ -1843,3 +1843,296 @@ INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXEC
|
|||
|
||||
-- Release Database Lock
|
||||
-- Release Database Lock
|
||||
|
||||
|
||||
-- *********************************************************************
|
||||
-- Update Database Script - LibrePlan 1.2.0
|
||||
-- *********************************************************************
|
||||
-- Change Log: src/main/resources/db.changelog.xml
|
||||
-- Ran at: 11/25/11 11:26 AM
|
||||
-- Against: naval@jdbc:postgresql://localhost/navaldev
|
||||
-- Liquibase version: 2.0-rc7
|
||||
-- *********************************************************************
|
||||
|
||||
-- Lock Database
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-host::calvarinop::(Checksum: 3:7984328274b0af25bf454a71f709a0dc)
|
||||
-- Add new column to store ldap host
|
||||
ALTER TABLE configuration ADD ldap_host VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap host', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-host', '2.0-rc7', '3:7984328274b0af25bf454a71f709a0dc', 341);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-port::calvarinop::(Checksum: 3:a698fd66dc9b58c8e7df0ffafc6f7d1c)
|
||||
-- Add new column to store ldap port
|
||||
ALTER TABLE configuration ADD ldap_port VARCHAR(5);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap port', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-port', '2.0-rc7', '3:a698fd66dc9b58c8e7df0ffafc6f7d1c', 342);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-base::calvarinop::(Checksum: 3:be1cce8488649e3d266a5df219713071)
|
||||
-- Add new column to store ldap base
|
||||
ALTER TABLE configuration ADD ldap_base VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap base', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-base', '2.0-rc7', '3:be1cce8488649e3d266a5df219713071', 343);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-userdn::calvarinop::(Checksum: 3:c4c93711bd374e215a65f6f45b6a5f44)
|
||||
-- Add new column to store ldap userdn
|
||||
ALTER TABLE configuration ADD ldap_userdn VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap userdn', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-userdn', '2.0-rc7', '3:c4c93711bd374e215a65f6f45b6a5f44', 344);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-password::calvarinop::(Checksum: 3:22761f7b110aec44930935cb79f179d5)
|
||||
-- Add new column to store ldap password
|
||||
ALTER TABLE configuration ADD ldap_password VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap password', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-password', '2.0-rc7', '3:22761f7b110aec44930935cb79f179d5', 345);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-userid::calvarinop::(Checksum: 3:b628b315f6a3d2266cb6d280f9525f5f)
|
||||
-- Add new column to store ldap userid
|
||||
ALTER TABLE configuration ADD ldap_userid VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap userid', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-userid', '2.0-rc7', '3:b628b315f6a3d2266cb6d280f9525f5f', 346);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-save-password-db::calvarinop::(Checksum: 3:b4447892b37ee903664f9b5bd54e7a2e)
|
||||
-- Add new column to store ldap passwords in database
|
||||
ALTER TABLE configuration ADD ldap_save_password_db BOOLEAN;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap passwords in database', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-save-password-db', '2.0-rc7', '3:b4447892b37ee903664f9b5bd54e7a2e', 347);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-auth-enabled::calvarinop::(Checksum: 3:979a11f6d147433ec84e6165927683fa)
|
||||
-- Add new column to store ldap authentication enabled
|
||||
ALTER TABLE configuration ADD ldap_auth_enabled BOOLEAN;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap authentication enabled', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-auth-enabled', '2.0-rc7', '3:979a11f6d147433ec84e6165927683fa', 348);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-navalplan-user::idiazt::(Checksum: 3:76c2b18d10554416d9ca9055d3c2e768)
|
||||
-- Add new column to store if it is a navalplan user
|
||||
ALTER TABLE user_table ADD navalplan_user BOOLEAN;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Add new column to store if it is a navalplan user', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-navalplan-user', '2.0-rc7', '3:76c2b18d10554416d9ca9055d3c2e768', 349);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::delete-constraint-not-null-user-password::idiazt::(Checksum: 3:0470d6d460842219443027cdb633232c)
|
||||
-- Delete constraint not null for user password
|
||||
ALTER TABLE user_table ALTER COLUMN password DROP NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Delete constraint not null for user password', NOW(), 'Drop Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'delete-constraint-not-null-user-password', '2.0-rc7', '3:0470d6d460842219443027cdb633232c', 350);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::set-default-value-navalplan-user::idiazt::(Checksum: 3:8935d0ba839c252967d398f0db3ed01d)
|
||||
ALTER TABLE user_table ALTER COLUMN navalplan_user SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE user_table SET navalplan_user = 'TRUE' WHERE navalplan_user IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN navalplan_user SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', '', NOW(), 'Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'set-default-value-navalplan-user', '2.0-rc7', '3:8935d0ba839c252967d398f0db3ed01d', 351);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::set-default-value-ldap-save-password-db::idiazt::(Checksum: 3:6bcb9c9c00f066bc7ef5e568abf2da6f)
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_password_db SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE configuration SET ldap_save_password_db = 'TRUE' WHERE ldap_save_password_db IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_password_db SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', '', NOW(), 'Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'set-default-value-ldap-save-password-db', '2.0-rc7', '3:6bcb9c9c00f066bc7ef5e568abf2da6f', 352);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::set-default-value-ldap-auth-enabled::idiazt::(Checksum: 3:987742cd9637874021c47ad9388655d2)
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_auth_enabled SET DEFAULT 'FALSE';
|
||||
|
||||
UPDATE configuration SET ldap_auth_enabled = 'FALSE' WHERE ldap_auth_enabled IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_auth_enabled SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', '', NOW(), 'Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'set-default-value-ldap-auth-enabled', '2.0-rc7', '3:987742cd9637874021c47ad9388655d2', 353);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-save-roles-db::calvarinop::(Checksum: 3:e7fc821091b4d96786edf2aa98308f3b)
|
||||
-- Add new column to store ldap roles in database
|
||||
ALTER TABLE configuration ADD ldap_save_roles_db BOOLEAN;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_roles_db SET DEFAULT 'FALSE';
|
||||
|
||||
UPDATE configuration SET ldap_save_roles_db = 'FALSE' WHERE ldap_save_roles_db IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_roles_db SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap roles in database', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-save-roles-db', '2.0-rc7', '3:e7fc821091b4d96786edf2aa98308f3b', 354);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::create-new-table-matching-roles::calvarinop::(Checksum: 3:5afc1ada9ec4ae6bfd66368c2512e145)
|
||||
-- Add new column to store ldap role property
|
||||
CREATE TABLE configuration_roles_ldap (role_libreplan VARCHAR(255) NOT NULL, role_ldap VARCHAR(255) NOT NULL, id_configuration BIGINT NOT NULL, role_matching_id INT NOT NULL, CONSTRAINT PK_CONFIGURATION_ROLES_LDAP PRIMARY KEY (role_libreplan, role_ldap));
|
||||
|
||||
ALTER TABLE configuration_roles_ldap ADD CONSTRAINT id_configuration_fkey FOREIGN KEY (id_configuration) REFERENCES configuration(id) ON UPDATE NO ACTION ON DELETE NO ACTION;
|
||||
|
||||
ALTER TABLE configuration ADD ldap_group_path VARCHAR(255);
|
||||
|
||||
ALTER TABLE configuration ADD ldap_role_property VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap role property', NOW(), 'Create Table, Add Foreign Key Constraint, Add Column (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'create-new-table-matching-roles', '2.0-rc7', '3:5afc1ada9ec4ae6bfd66368c2512e145', 355);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-search-query::idiazt::(Checksum: 3:8e994641ada47323406f65d515ff00a0)
|
||||
-- Add new column to store ldap role search query
|
||||
ALTER TABLE configuration ADD ldap_search_query VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Add new column to store ldap role search query', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-search-query', '2.0-rc7', '3:8e994641ada47323406f65d515ff00a0', 356);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-enabled-autocomplete-login::smontes::(Checksum: 3:0542da97fbff41b95f9cf5ef10ffa322)
|
||||
-- Add new column enabled_autocomplete_login with default value TRUE to configuration table
|
||||
ALTER TABLE configuration ADD enabled_autocomplete_login BOOLEAN;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN enabled_autocomplete_login SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE configuration SET enabled_autocomplete_login = 'TRUE' WHERE enabled_autocomplete_login IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN enabled_autocomplete_login SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('smontes', 'Add new column enabled_autocomplete_login with default value TRUE to configuration table', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-enabled-autocomplete-login', '2.0-rc7', '3:0542da97fbff41b95f9cf5ef10ffa322', 357);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-application-language::calvarinop::(Checksum: 3:f451e552cb7903c699c88ecde02e85c6)
|
||||
-- Add new column to store the language of application for this user
|
||||
ALTER TABLE user_table ADD application_language INT DEFAULT '0';
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store the language of application for this user', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-application-language', '2.0-rc7', '3:f451e552cb7903c699c88ecde02e85c6', 358);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::move-columns-from-configuration-table::calvarinop::(Checksum: 3:7243259227df39ef2f0683d4b425d369)
|
||||
-- Move columns from configuration table to user table
|
||||
ALTER TABLE user_table ADD expand_company_planning_view_charts BOOLEAN;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_company_planning_view_charts SET DEFAULT 'FALSE';
|
||||
|
||||
UPDATE user_table SET expand_company_planning_view_charts = 'FALSE' WHERE expand_company_planning_view_charts IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_company_planning_view_charts SET NOT NULL;
|
||||
|
||||
ALTER TABLE user_table ADD expand_order_planning_view_charts BOOLEAN;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_order_planning_view_charts SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE user_table SET expand_order_planning_view_charts = 'TRUE' WHERE expand_order_planning_view_charts IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_order_planning_view_charts SET NOT NULL;
|
||||
|
||||
ALTER TABLE user_table ADD expand_resource_load_view_charts BOOLEAN;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_resource_load_view_charts SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE user_table SET expand_resource_load_view_charts = 'TRUE' WHERE expand_resource_load_view_charts IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_resource_load_view_charts SET NOT NULL;
|
||||
|
||||
ALTER TABLE configuration DROP COLUMN expand_company_planning_view_charts;
|
||||
|
||||
ALTER TABLE configuration DROP COLUMN expand_order_planning_view_charts;
|
||||
|
||||
ALTER TABLE configuration DROP COLUMN expand_resource_load_view_charts;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Move columns from configuration table to user table', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint, Add Column, Add Default Value, Add Not-Null Constraint, Add Column, Add Default Value, Add Not-Null Constraint, Drop Column (x3)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'move-columns-from-configuration-table', '2.0-rc7', '3:7243259227df39ef2f0683d4b425d369', 359);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-fields::calvarinop::(Checksum: 3:6950443e7dca6f2af1e7d095abde62bc)
|
||||
-- Add new column to store the first and last name for this user
|
||||
ALTER TABLE user_table ADD first_name VARCHAR(255);
|
||||
|
||||
ALTER TABLE user_table ADD last_name VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store the first and last name for this user', NOW(), 'Add Column (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-fields', '2.0-rc7', '3:6950443e7dca6f2af1e7d095abde62bc', 360);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::remove-configuration_roles_ldap::mrego::(Checksum: 3:88dacdfabdf225e6ed8b25e4807afeb8)
|
||||
-- Remove column configuration_roles_ldap in role_matching_id
|
||||
ALTER TABLE configuration_roles_ldap DROP COLUMN role_matching_id;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Remove column configuration_roles_ldap in role_matching_id', NOW(), 'Drop Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'remove-configuration_roles_ldap', '2.0-rc7', '3:88dacdfabdf225e6ed8b25e4807afeb8', 361);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-column-progress_all_by_num_hours-in-planning_data::mrego::(Checksum: 3:9410a670cf6cccd21638c8eddb6b8b36)
|
||||
-- Add column progress_all_by_num_hours in planning_data
|
||||
ALTER TABLE planning_data ADD progress_all_by_num_hours numeric(19,6);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Add column progress_all_by_num_hours in planning_data', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-column-progress_all_by_num_hours-in-planning_data', '2.0-rc7', '3:9410a670cf6cccd21638c8eddb6b8b36', 362);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::update-color-in-calendar_exception_type-to-default::mrego::(Checksum: 3:2f5f94374b2021dca7bc4d8245807ae4)
|
||||
-- Update color in calendar_exception_type to DEFAULT
|
||||
UPDATE calendar_exception_type SET color = 'DEFAULT';
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Update color in calendar_exception_type to DEFAULT', NOW(), 'Update Data', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'update-color-in-calendar_exception_type-to-default', '2.0-rc7', '3:2f5f94374b2021dca7bc4d8245807ae4', 363);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::create-table-manual_function::mrego::(Checksum: 3:aac963ac8a7a63814472c50edf8b367a)
|
||||
CREATE TABLE manual_function (assignment_function_id BIGINT NOT NULL, CONSTRAINT manual_function_pkey PRIMARY KEY (assignment_function_id));
|
||||
|
||||
ALTER TABLE manual_function ADD CONSTRAINT mnual_function_assignment_function_fkey FOREIGN KEY (assignment_function_id) REFERENCES assignment_function(id) ON UPDATE NO ACTION ON DELETE NO ACTION;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', '', NOW(), 'Create Table, Add Foreign Key Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'create-table-manual_function', '2.0-rc7', '3:aac963ac8a7a63814472c50edf8b367a', 364);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::change-numhours-to-effort-in-work-report-lines::idiazt::(Checksum: 3:824cfe1ec43c490e63bf2d8316f1255e)
|
||||
-- Changing work_report_line numHours to effort
|
||||
ALTER TABLE work_report_line RENAME COLUMN num_hours TO effort;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Changing work_report_line numHours to effort', NOW(), 'Rename Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'change-numhours-to-effort-in-work-report-lines', '2.0-rc7', '3:824cfe1ec43c490e63bf2d8316f1255e', 365);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::update-numhours-values-to-effort-values::idiazt::(Checksum: 3:79a9659b3a77004c5fe13bbec8aad88c)
|
||||
-- Updating numHours to effort (hours to seconds)
|
||||
UPDATE work_report_line
|
||||
SET effort = effort*3600;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Updating numHours to effort (hours to seconds)', NOW(), 'Custom SQL', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'update-numhours-values-to-effort-values', '2.0-rc7', '3:79a9659b3a77004c5fe13bbec8aad88c', 366);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::change-sum_charged_hours-to-sum_charged_effort::mrego::(Checksum: 3:202833e32d386f5a3edf903b2d5a21b4)
|
||||
-- Changing sum_charged_hours to sum_charged_effort
|
||||
ALTER TABLE sum_charged_hours RENAME TO sum_charged_effort;
|
||||
|
||||
ALTER TABLE sum_charged_effort RENAME COLUMN direct_charged_hours TO direct_charged_effort;
|
||||
|
||||
ALTER TABLE sum_charged_effort RENAME COLUMN indirect_charged_hours TO indirect_charged_effort;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Changing sum_charged_hours to sum_charged_effort', NOW(), 'Rename Table, Rename Column (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'change-sum_charged_hours-to-sum_charged_effort', '2.0-rc7', '3:202833e32d386f5a3edf903b2d5a21b4', 367);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::update-effort-values-in-sum_charged_effort::mrego::(Checksum: 3:6d7d2103e92b3ac55b9658931fc3ed65)
|
||||
-- Updating effort values (hours to seconds) in sum_charged_effort table
|
||||
UPDATE sum_charged_effort
|
||||
SET direct_charged_effort = direct_charged_effort*3600;
|
||||
|
||||
UPDATE sum_charged_effort
|
||||
SET indirect_charged_effort = indirect_charged_effort*3600;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Updating effort values (hours to seconds) in sum_charged_effort table', NOW(), 'Custom SQL (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'update-effort-values-in-sum_charged_effort', '2.0-rc7', '3:6d7d2103e92b3ac55b9658931fc3ed65', 368);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::drop-foreign-key-sum_charged_hours_id-in-order_element::dmel::(Checksum: 3:288d757a697e34248fbb5dab4177c4a0)
|
||||
ALTER TABLE order_element DROP CONSTRAINT fk92271f0b7ec17fa6;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('dmel', '', NOW(), 'Drop Foreign Key Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'drop-foreign-key-sum_charged_hours_id-in-order_element', '2.0-rc7', '3:288d757a697e34248fbb5dab4177c4a0', 369);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::rename-sum_charged_hours_id-to-sum_charged_effort_id::mrego::(Checksum: 3:f8140dac93702c25f7fe75d9217ef9c5)
|
||||
-- Rename sum_charged_hours_id to sum_charged_effort_id in order_element
|
||||
ALTER TABLE order_element RENAME COLUMN sum_charged_hours_id TO sum_charged_effort_id;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Rename sum_charged_hours_id to sum_charged_effort_id in order_element', NOW(), 'Rename Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'rename-sum_charged_hours_id-to-sum_charged_effort_id', '2.0-rc7', '3:f8140dac93702c25f7fe75d9217ef9c5', 370);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-foreign-key-sum_charged_effort_id-in-order_element::dmel::(Checksum: 3:a8fa898f9cfaa1afa3afbab4c1c9f82b)
|
||||
ALTER TABLE order_element ADD CONSTRAINT sum_charged_effort_id_fkey FOREIGN KEY (sum_charged_effort_id) REFERENCES sum_charged_effort(id) ON UPDATE NO ACTION ON DELETE NO ACTION;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('dmel', '', NOW(), 'Add Foreign Key Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-foreign-key-sum_charged_effort_id-in-order_element', '2.0-rc7', '3:a8fa898f9cfaa1afa3afbab4c1c9f82b', 371);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::drop-column-date-in-stretches-table::mrego::(Checksum: 3:e0ed365c168583ff5c4c81c9ac79d644)
|
||||
ALTER TABLE stretches DROP COLUMN date;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', '', NOW(), 'Drop Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'drop-column-date-in-stretches-table', '2.0-rc7', '3:e0ed365c168583ff5c4c81c9ac79d644', 372);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-version-to-planning-data::ogonzalez::(Checksum: 3:ae9dca1ca9cb3556cf5efdca689b8fc1)
|
||||
ALTER TABLE planning_data ADD version BIGINT NOT NULL DEFAULT '0';
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('ogonzalez', '', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-version-to-planning-data', '2.0-rc7', '3:ae9dca1ca9cb3556cf5efdca689b8fc1', 373);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::change-navalplan_user-to-libreplan_user-in-user_table::mrego::(Checksum: 3:82c71f38665f14d5d8ef9391a5c2487d)
|
||||
-- Changing navalplan_user to libreplan_user in user_table
|
||||
ALTER TABLE user_table RENAME COLUMN navalplan_user TO libreplan_user;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Changing navalplan_user to libreplan_user in user_table', NOW(), 'Rename Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'change-navalplan_user-to-libreplan_user-in-user_table', '2.0-rc7', '3:82c71f38665f14d5d8ef9391a5c2487d', 374);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-role-strategy::idiazt::(Checksum: 3:3145034f8fd26477ae1fac7da835a43e)
|
||||
-- Add new column to store ldap role strategy
|
||||
ALTER TABLE configuration ADD ldap_group_strategy BOOLEAN;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_group_strategy SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE configuration SET ldap_group_strategy = 'TRUE' WHERE ldap_group_strategy IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_group_strategy SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Add new column to store ldap role strategy', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-role-strategy', '2.0-rc7', '3:3145034f8fd26477ae1fac7da835a43e', 375);
|
||||
|
||||
-- Release Database Lock
|
||||
-- Release Database Lock
|
||||
|
|
|
|||
291
scripts/database/upgrade_1.2.0.sql
Normal file
291
scripts/database/upgrade_1.2.0.sql
Normal file
|
|
@ -0,0 +1,291 @@
|
|||
-- *********************************************************************
|
||||
-- Update Database Script
|
||||
-- *********************************************************************
|
||||
-- Change Log: src/main/resources/db.changelog.xml
|
||||
-- Ran at: 11/25/11 11:26 AM
|
||||
-- Against: naval@jdbc:postgresql://localhost/navaldev
|
||||
-- Liquibase version: 2.0-rc7
|
||||
-- *********************************************************************
|
||||
|
||||
-- Lock Database
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-host::calvarinop::(Checksum: 3:7984328274b0af25bf454a71f709a0dc)
|
||||
-- Add new column to store ldap host
|
||||
ALTER TABLE configuration ADD ldap_host VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap host', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-host', '2.0-rc7', '3:7984328274b0af25bf454a71f709a0dc', 341);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-port::calvarinop::(Checksum: 3:a698fd66dc9b58c8e7df0ffafc6f7d1c)
|
||||
-- Add new column to store ldap port
|
||||
ALTER TABLE configuration ADD ldap_port VARCHAR(5);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap port', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-port', '2.0-rc7', '3:a698fd66dc9b58c8e7df0ffafc6f7d1c', 342);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-base::calvarinop::(Checksum: 3:be1cce8488649e3d266a5df219713071)
|
||||
-- Add new column to store ldap base
|
||||
ALTER TABLE configuration ADD ldap_base VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap base', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-base', '2.0-rc7', '3:be1cce8488649e3d266a5df219713071', 343);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-userdn::calvarinop::(Checksum: 3:c4c93711bd374e215a65f6f45b6a5f44)
|
||||
-- Add new column to store ldap userdn
|
||||
ALTER TABLE configuration ADD ldap_userdn VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap userdn', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-userdn', '2.0-rc7', '3:c4c93711bd374e215a65f6f45b6a5f44', 344);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-password::calvarinop::(Checksum: 3:22761f7b110aec44930935cb79f179d5)
|
||||
-- Add new column to store ldap password
|
||||
ALTER TABLE configuration ADD ldap_password VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap password', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-password', '2.0-rc7', '3:22761f7b110aec44930935cb79f179d5', 345);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-userid::calvarinop::(Checksum: 3:b628b315f6a3d2266cb6d280f9525f5f)
|
||||
-- Add new column to store ldap userid
|
||||
ALTER TABLE configuration ADD ldap_userid VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap userid', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-userid', '2.0-rc7', '3:b628b315f6a3d2266cb6d280f9525f5f', 346);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-save-password-db::calvarinop::(Checksum: 3:b4447892b37ee903664f9b5bd54e7a2e)
|
||||
-- Add new column to store ldap passwords in database
|
||||
ALTER TABLE configuration ADD ldap_save_password_db BOOLEAN;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap passwords in database', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-save-password-db', '2.0-rc7', '3:b4447892b37ee903664f9b5bd54e7a2e', 347);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-auth-enabled::calvarinop::(Checksum: 3:979a11f6d147433ec84e6165927683fa)
|
||||
-- Add new column to store ldap authentication enabled
|
||||
ALTER TABLE configuration ADD ldap_auth_enabled BOOLEAN;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap authentication enabled', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-auth-enabled', '2.0-rc7', '3:979a11f6d147433ec84e6165927683fa', 348);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-navalplan-user::idiazt::(Checksum: 3:76c2b18d10554416d9ca9055d3c2e768)
|
||||
-- Add new column to store if it is a navalplan user
|
||||
ALTER TABLE user_table ADD navalplan_user BOOLEAN;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Add new column to store if it is a navalplan user', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-navalplan-user', '2.0-rc7', '3:76c2b18d10554416d9ca9055d3c2e768', 349);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::delete-constraint-not-null-user-password::idiazt::(Checksum: 3:0470d6d460842219443027cdb633232c)
|
||||
-- Delete constraint not null for user password
|
||||
ALTER TABLE user_table ALTER COLUMN password DROP NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Delete constraint not null for user password', NOW(), 'Drop Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'delete-constraint-not-null-user-password', '2.0-rc7', '3:0470d6d460842219443027cdb633232c', 350);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::set-default-value-navalplan-user::idiazt::(Checksum: 3:8935d0ba839c252967d398f0db3ed01d)
|
||||
ALTER TABLE user_table ALTER COLUMN navalplan_user SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE user_table SET navalplan_user = 'TRUE' WHERE navalplan_user IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN navalplan_user SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', '', NOW(), 'Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'set-default-value-navalplan-user', '2.0-rc7', '3:8935d0ba839c252967d398f0db3ed01d', 351);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::set-default-value-ldap-save-password-db::idiazt::(Checksum: 3:6bcb9c9c00f066bc7ef5e568abf2da6f)
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_password_db SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE configuration SET ldap_save_password_db = 'TRUE' WHERE ldap_save_password_db IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_password_db SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', '', NOW(), 'Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'set-default-value-ldap-save-password-db', '2.0-rc7', '3:6bcb9c9c00f066bc7ef5e568abf2da6f', 352);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::set-default-value-ldap-auth-enabled::idiazt::(Checksum: 3:987742cd9637874021c47ad9388655d2)
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_auth_enabled SET DEFAULT 'FALSE';
|
||||
|
||||
UPDATE configuration SET ldap_auth_enabled = 'FALSE' WHERE ldap_auth_enabled IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_auth_enabled SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', '', NOW(), 'Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'set-default-value-ldap-auth-enabled', '2.0-rc7', '3:987742cd9637874021c47ad9388655d2', 353);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-save-roles-db::calvarinop::(Checksum: 3:e7fc821091b4d96786edf2aa98308f3b)
|
||||
-- Add new column to store ldap roles in database
|
||||
ALTER TABLE configuration ADD ldap_save_roles_db BOOLEAN;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_roles_db SET DEFAULT 'FALSE';
|
||||
|
||||
UPDATE configuration SET ldap_save_roles_db = 'FALSE' WHERE ldap_save_roles_db IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_save_roles_db SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap roles in database', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-save-roles-db', '2.0-rc7', '3:e7fc821091b4d96786edf2aa98308f3b', 354);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::create-new-table-matching-roles::calvarinop::(Checksum: 3:5afc1ada9ec4ae6bfd66368c2512e145)
|
||||
-- Add new column to store ldap role property
|
||||
CREATE TABLE configuration_roles_ldap (role_libreplan VARCHAR(255) NOT NULL, role_ldap VARCHAR(255) NOT NULL, id_configuration BIGINT NOT NULL, role_matching_id INT NOT NULL, CONSTRAINT PK_CONFIGURATION_ROLES_LDAP PRIMARY KEY (role_libreplan, role_ldap));
|
||||
|
||||
ALTER TABLE configuration_roles_ldap ADD CONSTRAINT id_configuration_fkey FOREIGN KEY (id_configuration) REFERENCES configuration(id) ON UPDATE NO ACTION ON DELETE NO ACTION;
|
||||
|
||||
ALTER TABLE configuration ADD ldap_group_path VARCHAR(255);
|
||||
|
||||
ALTER TABLE configuration ADD ldap_role_property VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store ldap role property', NOW(), 'Create Table, Add Foreign Key Constraint, Add Column (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'create-new-table-matching-roles', '2.0-rc7', '3:5afc1ada9ec4ae6bfd66368c2512e145', 355);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-search-query::idiazt::(Checksum: 3:8e994641ada47323406f65d515ff00a0)
|
||||
-- Add new column to store ldap role search query
|
||||
ALTER TABLE configuration ADD ldap_search_query VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Add new column to store ldap role search query', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-search-query', '2.0-rc7', '3:8e994641ada47323406f65d515ff00a0', 356);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-enabled-autocomplete-login::smontes::(Checksum: 3:0542da97fbff41b95f9cf5ef10ffa322)
|
||||
-- Add new column enabled_autocomplete_login with default value TRUE to configuration table
|
||||
ALTER TABLE configuration ADD enabled_autocomplete_login BOOLEAN;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN enabled_autocomplete_login SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE configuration SET enabled_autocomplete_login = 'TRUE' WHERE enabled_autocomplete_login IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN enabled_autocomplete_login SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('smontes', 'Add new column enabled_autocomplete_login with default value TRUE to configuration table', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-enabled-autocomplete-login', '2.0-rc7', '3:0542da97fbff41b95f9cf5ef10ffa322', 357);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-application-language::calvarinop::(Checksum: 3:f451e552cb7903c699c88ecde02e85c6)
|
||||
-- Add new column to store the language of application for this user
|
||||
ALTER TABLE user_table ADD application_language INT DEFAULT '0';
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store the language of application for this user', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-application-language', '2.0-rc7', '3:f451e552cb7903c699c88ecde02e85c6', 358);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::move-columns-from-configuration-table::calvarinop::(Checksum: 3:7243259227df39ef2f0683d4b425d369)
|
||||
-- Move columns from configuration table to user table
|
||||
ALTER TABLE user_table ADD expand_company_planning_view_charts BOOLEAN;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_company_planning_view_charts SET DEFAULT 'FALSE';
|
||||
|
||||
UPDATE user_table SET expand_company_planning_view_charts = 'FALSE' WHERE expand_company_planning_view_charts IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_company_planning_view_charts SET NOT NULL;
|
||||
|
||||
ALTER TABLE user_table ADD expand_order_planning_view_charts BOOLEAN;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_order_planning_view_charts SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE user_table SET expand_order_planning_view_charts = 'TRUE' WHERE expand_order_planning_view_charts IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_order_planning_view_charts SET NOT NULL;
|
||||
|
||||
ALTER TABLE user_table ADD expand_resource_load_view_charts BOOLEAN;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_resource_load_view_charts SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE user_table SET expand_resource_load_view_charts = 'TRUE' WHERE expand_resource_load_view_charts IS NULL;
|
||||
|
||||
ALTER TABLE user_table ALTER COLUMN expand_resource_load_view_charts SET NOT NULL;
|
||||
|
||||
ALTER TABLE configuration DROP COLUMN expand_company_planning_view_charts;
|
||||
|
||||
ALTER TABLE configuration DROP COLUMN expand_order_planning_view_charts;
|
||||
|
||||
ALTER TABLE configuration DROP COLUMN expand_resource_load_view_charts;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Move columns from configuration table to user table', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint, Add Column, Add Default Value, Add Not-Null Constraint, Add Column, Add Default Value, Add Not-Null Constraint, Drop Column (x3)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'move-columns-from-configuration-table', '2.0-rc7', '3:7243259227df39ef2f0683d4b425d369', 359);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-fields::calvarinop::(Checksum: 3:6950443e7dca6f2af1e7d095abde62bc)
|
||||
-- Add new column to store the first and last name for this user
|
||||
ALTER TABLE user_table ADD first_name VARCHAR(255);
|
||||
|
||||
ALTER TABLE user_table ADD last_name VARCHAR(255);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('calvarinop', 'Add new column to store the first and last name for this user', NOW(), 'Add Column (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-fields', '2.0-rc7', '3:6950443e7dca6f2af1e7d095abde62bc', 360);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::remove-configuration_roles_ldap::mrego::(Checksum: 3:88dacdfabdf225e6ed8b25e4807afeb8)
|
||||
-- Remove column configuration_roles_ldap in role_matching_id
|
||||
ALTER TABLE configuration_roles_ldap DROP COLUMN role_matching_id;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Remove column configuration_roles_ldap in role_matching_id', NOW(), 'Drop Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'remove-configuration_roles_ldap', '2.0-rc7', '3:88dacdfabdf225e6ed8b25e4807afeb8', 361);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-column-progress_all_by_num_hours-in-planning_data::mrego::(Checksum: 3:9410a670cf6cccd21638c8eddb6b8b36)
|
||||
-- Add column progress_all_by_num_hours in planning_data
|
||||
ALTER TABLE planning_data ADD progress_all_by_num_hours numeric(19,6);
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Add column progress_all_by_num_hours in planning_data', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-column-progress_all_by_num_hours-in-planning_data', '2.0-rc7', '3:9410a670cf6cccd21638c8eddb6b8b36', 362);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::update-color-in-calendar_exception_type-to-default::mrego::(Checksum: 3:2f5f94374b2021dca7bc4d8245807ae4)
|
||||
-- Update color in calendar_exception_type to DEFAULT
|
||||
UPDATE calendar_exception_type SET color = 'DEFAULT';
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Update color in calendar_exception_type to DEFAULT', NOW(), 'Update Data', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'update-color-in-calendar_exception_type-to-default', '2.0-rc7', '3:2f5f94374b2021dca7bc4d8245807ae4', 363);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::create-table-manual_function::mrego::(Checksum: 3:aac963ac8a7a63814472c50edf8b367a)
|
||||
CREATE TABLE manual_function (assignment_function_id BIGINT NOT NULL, CONSTRAINT manual_function_pkey PRIMARY KEY (assignment_function_id));
|
||||
|
||||
ALTER TABLE manual_function ADD CONSTRAINT mnual_function_assignment_function_fkey FOREIGN KEY (assignment_function_id) REFERENCES assignment_function(id) ON UPDATE NO ACTION ON DELETE NO ACTION;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', '', NOW(), 'Create Table, Add Foreign Key Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'create-table-manual_function', '2.0-rc7', '3:aac963ac8a7a63814472c50edf8b367a', 364);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::change-numhours-to-effort-in-work-report-lines::idiazt::(Checksum: 3:824cfe1ec43c490e63bf2d8316f1255e)
|
||||
-- Changing work_report_line numHours to effort
|
||||
ALTER TABLE work_report_line RENAME COLUMN num_hours TO effort;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Changing work_report_line numHours to effort', NOW(), 'Rename Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'change-numhours-to-effort-in-work-report-lines', '2.0-rc7', '3:824cfe1ec43c490e63bf2d8316f1255e', 365);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::update-numhours-values-to-effort-values::idiazt::(Checksum: 3:79a9659b3a77004c5fe13bbec8aad88c)
|
||||
-- Updating numHours to effort (hours to seconds)
|
||||
UPDATE work_report_line
|
||||
SET effort = effort*3600;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Updating numHours to effort (hours to seconds)', NOW(), 'Custom SQL', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'update-numhours-values-to-effort-values', '2.0-rc7', '3:79a9659b3a77004c5fe13bbec8aad88c', 366);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::change-sum_charged_hours-to-sum_charged_effort::mrego::(Checksum: 3:202833e32d386f5a3edf903b2d5a21b4)
|
||||
-- Changing sum_charged_hours to sum_charged_effort
|
||||
ALTER TABLE sum_charged_hours RENAME TO sum_charged_effort;
|
||||
|
||||
ALTER TABLE sum_charged_effort RENAME COLUMN direct_charged_hours TO direct_charged_effort;
|
||||
|
||||
ALTER TABLE sum_charged_effort RENAME COLUMN indirect_charged_hours TO indirect_charged_effort;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Changing sum_charged_hours to sum_charged_effort', NOW(), 'Rename Table, Rename Column (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'change-sum_charged_hours-to-sum_charged_effort', '2.0-rc7', '3:202833e32d386f5a3edf903b2d5a21b4', 367);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::update-effort-values-in-sum_charged_effort::mrego::(Checksum: 3:6d7d2103e92b3ac55b9658931fc3ed65)
|
||||
-- Updating effort values (hours to seconds) in sum_charged_effort table
|
||||
UPDATE sum_charged_effort
|
||||
SET direct_charged_effort = direct_charged_effort*3600;
|
||||
|
||||
UPDATE sum_charged_effort
|
||||
SET indirect_charged_effort = indirect_charged_effort*3600;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Updating effort values (hours to seconds) in sum_charged_effort table', NOW(), 'Custom SQL (x2)', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'update-effort-values-in-sum_charged_effort', '2.0-rc7', '3:6d7d2103e92b3ac55b9658931fc3ed65', 368);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::drop-foreign-key-sum_charged_hours_id-in-order_element::dmel::(Checksum: 3:288d757a697e34248fbb5dab4177c4a0)
|
||||
ALTER TABLE order_element DROP CONSTRAINT fk92271f0b7ec17fa6;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('dmel', '', NOW(), 'Drop Foreign Key Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'drop-foreign-key-sum_charged_hours_id-in-order_element', '2.0-rc7', '3:288d757a697e34248fbb5dab4177c4a0', 369);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::rename-sum_charged_hours_id-to-sum_charged_effort_id::mrego::(Checksum: 3:f8140dac93702c25f7fe75d9217ef9c5)
|
||||
-- Rename sum_charged_hours_id to sum_charged_effort_id in order_element
|
||||
ALTER TABLE order_element RENAME COLUMN sum_charged_hours_id TO sum_charged_effort_id;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Rename sum_charged_hours_id to sum_charged_effort_id in order_element', NOW(), 'Rename Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'rename-sum_charged_hours_id-to-sum_charged_effort_id', '2.0-rc7', '3:f8140dac93702c25f7fe75d9217ef9c5', 370);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-foreign-key-sum_charged_effort_id-in-order_element::dmel::(Checksum: 3:a8fa898f9cfaa1afa3afbab4c1c9f82b)
|
||||
ALTER TABLE order_element ADD CONSTRAINT sum_charged_effort_id_fkey FOREIGN KEY (sum_charged_effort_id) REFERENCES sum_charged_effort(id) ON UPDATE NO ACTION ON DELETE NO ACTION;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('dmel', '', NOW(), 'Add Foreign Key Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-foreign-key-sum_charged_effort_id-in-order_element', '2.0-rc7', '3:a8fa898f9cfaa1afa3afbab4c1c9f82b', 371);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::drop-column-date-in-stretches-table::mrego::(Checksum: 3:e0ed365c168583ff5c4c81c9ac79d644)
|
||||
ALTER TABLE stretches DROP COLUMN date;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', '', NOW(), 'Drop Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'drop-column-date-in-stretches-table', '2.0-rc7', '3:e0ed365c168583ff5c4c81c9ac79d644', 372);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-version-to-planning-data::ogonzalez::(Checksum: 3:ae9dca1ca9cb3556cf5efdca689b8fc1)
|
||||
ALTER TABLE planning_data ADD version BIGINT NOT NULL DEFAULT '0';
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('ogonzalez', '', NOW(), 'Add Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-version-to-planning-data', '2.0-rc7', '3:ae9dca1ca9cb3556cf5efdca689b8fc1', 373);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::change-navalplan_user-to-libreplan_user-in-user_table::mrego::(Checksum: 3:82c71f38665f14d5d8ef9391a5c2487d)
|
||||
-- Changing navalplan_user to libreplan_user in user_table
|
||||
ALTER TABLE user_table RENAME COLUMN navalplan_user TO libreplan_user;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('mrego', 'Changing navalplan_user to libreplan_user in user_table', NOW(), 'Rename Column', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'change-navalplan_user-to-libreplan_user-in-user_table', '2.0-rc7', '3:82c71f38665f14d5d8ef9391a5c2487d', 374);
|
||||
|
||||
-- Changeset src/main/resources/db.changelog-1.1.xml::add-new-column-ldap-role-strategy::idiazt::(Checksum: 3:3145034f8fd26477ae1fac7da835a43e)
|
||||
-- Add new column to store ldap role strategy
|
||||
ALTER TABLE configuration ADD ldap_group_strategy BOOLEAN;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_group_strategy SET DEFAULT 'TRUE';
|
||||
|
||||
UPDATE configuration SET ldap_group_strategy = 'TRUE' WHERE ldap_group_strategy IS NULL;
|
||||
|
||||
ALTER TABLE configuration ALTER COLUMN ldap_group_strategy SET NOT NULL;
|
||||
|
||||
INSERT INTO databasechangelog (AUTHOR, COMMENTS, DATEEXECUTED, DESCRIPTION, EXECTYPE, FILENAME, ID, LIQUIBASE, MD5SUM, ORDEREXECUTED) VALUES ('idiazt', 'Add new column to store ldap role strategy', NOW(), 'Add Column, Add Default Value, Add Not-Null Constraint', 'EXECUTED', 'src/main/resources/db.changelog-1.1.xml', 'add-new-column-ldap-role-strategy', '2.0-rc7', '3:3145034f8fd26477ae1fac7da835a43e', 375);
|
||||
|
||||
-- Release Database Lock
|
||||
-- Release Database Lock
|
||||
|
|
@ -60,7 +60,7 @@ function costCategoryForm($name, $hworkName) {
|
|||
_click(_cell("Save"));
|
||||
}
|
||||
*/
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function costCategoryNotValid(){
|
||||
_assertExists(_div("checkConstraintUniqueName: the cost category name has to be unique. It is already used"));
|
||||
_assert(_isVisible(_div("checkConstraintUniqueName: the cost category name has to be unique. It is already used")));
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ function materialCreate($name) {
|
|||
|
||||
function materialCreateWithoutCategory(){
|
||||
_click(_link("Materials"));
|
||||
_click(_cell("z-button-cm[3]"));
|
||||
_click(_cell("New"));
|
||||
materialWithoutCategoryValidation();
|
||||
}
|
||||
|
||||
|
|
@ -54,12 +54,12 @@ function materialCreateEmpty(){
|
|||
function materialForm($description) {
|
||||
_click(_link("Materials"));
|
||||
_click(_span("z-dottree-ico z-dottree-firstspacer"));
|
||||
_click(_cell("z-button-cm[3]"));
|
||||
_click(_cell("New"));
|
||||
_setValue(_textbox("z-textbox[2]"), $description);
|
||||
_click(_cell("Save"));
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function materialNotValid($material){
|
||||
_assertExists(_div("There exists other Materials with the same name."));
|
||||
_assert(_isVisible(_div("There exists other Materials with the same name.")));
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ function criteriaEdit($oldName, $newName, $cell){
|
|||
_log("Edit a criterion", "custom1");
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function criteriaNotValid(){
|
||||
_assertExists(_div("checkConstraintUniqueCriterionTypeName: criterion type name is already being used"));
|
||||
_assert(_isVisible(_div("checkConstraintUniqueCriterionTypeName: criterion type name is already being used")));
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ function exceptDayForm($name, $standar, $color){
|
|||
_click(_cell("Save"));
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function exceptDayNotValid($ExceptDayName){
|
||||
_assertExists(_span("checkConstraintUniqueName: name is already used"));
|
||||
_assert(_isVisible(_span("checkConstraintUniqueName: name is already used")));
|
||||
|
|
@ -94,7 +94,7 @@ function exceptDayCheckCode($exceptDayName){
|
|||
|
||||
function exceptDayCreateWithoutCode($name){
|
||||
commonCreate("Exception Days");
|
||||
exceptDayForm($name);
|
||||
exceptDayForm($name,"","");
|
||||
commonEmptyCodeValidation();
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +110,7 @@ commonLogin("admin", "admin");
|
|||
|
||||
exceptDayCreate($exceptDayName, $exceptDaystandar, 2);
|
||||
exceptDayCreateDuplicateName($exceptDayName, $exceptDaystandar, 1);
|
||||
exceptDayCreateEmpty("", $exceptDaystandar);
|
||||
exceptDayCreateEmpty("", $exceptDaystandar,"");
|
||||
|
||||
exceptDayEdit($exceptDayName, $exceptDayNewName, 5);
|
||||
|
||||
|
|
|
|||
|
|
@ -66,7 +66,7 @@ function labelCreateDuplicateName($type, $name){
|
|||
_log("Do not allow create a label with duplicate name", "custom1");
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function labelNotValid($labelType){
|
||||
_assertExists(_div("name: "+$labelType+" already exists"));
|
||||
_assert(_isVisible(_div("name: "+$labelType+" already exists")));
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ function progressCreateEmpty() {
|
|||
_log("Do not allow create a progress without name", "custom1");
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function progressNotValid(){
|
||||
_assertExists(_div("The name is not valid, there is another progress type with the same name."));
|
||||
_assert(_isVisible(_div("The name is not valid, there is another progress type with the same name.")));
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ function unitMeasureForm($name){
|
|||
_click(_cell("Save & Continue"));
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function unitMeasureNotValidation(){
|
||||
_assertExists(_div("The meausure name is not valid. There is another unit type with the same measure name"));
|
||||
_assert(_isVisible(_div("The meausure name is not valid. There is another unit type with the same measure name")));
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@ function workHourCreateEmpty(){
|
|||
_log("Do not allow create a empty Work Hour", "custom1");
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function workHourNotValid($hWorkType){
|
||||
_assertExists(_span("checkConstraintUniqueName: the type of work hours name has to be unique. It is already used"));
|
||||
_assert(_isVisible(_span("checkConstraintUniqueName: the type of work hours name has to be unique. It is already used")));
|
||||
|
|
@ -81,7 +81,7 @@ function workHourAssign($hWorkNewName, $ModelName, $materialName, $materialDescr
|
|||
commonWorkReportModelCreate($ModelName);
|
||||
commonCreateProject("new project");
|
||||
commonMachineCreate($materialName, $materialDescription);
|
||||
workReportCreate($materialName, "new project", $hWorkNewName);
|
||||
workReportCreate($materialName, "new project", $hWorkNewName, $ModelName);
|
||||
workHourTryDelete($hWorkNewName, "work report line");
|
||||
reportModelTryDelete($ModelName);
|
||||
commonTryDeleteProject("new project");
|
||||
|
|
@ -131,13 +131,14 @@ function reportModelTryDelete($ModelName){
|
|||
* Functions of Work Report
|
||||
* */
|
||||
|
||||
function workReportCreate($wReport, $project, $workHour) {
|
||||
function workReportCreate($wReport, $project, $workHour, $modelName) {
|
||||
_click(_link("Work Reports"));
|
||||
workReportForm($wReport, $project, $workHour);
|
||||
workReportForm($wReport, $project, $workHour, $modelName);
|
||||
_log("Create a Work Report", "custom1");
|
||||
}
|
||||
|
||||
function workReportForm($machine, $project, $workHour) {
|
||||
function workReportForm($machine, $project, $workHour, $modelName) {
|
||||
_setSelected(_select(0, _near(_span("Select type:"))), $modelName);
|
||||
_click(_cell("New work report"));
|
||||
_click(_cell("Add new row"));
|
||||
_setValue(_textbox(2, _near(_span("Work report lines"))), $machine);
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ function workReportModelForm($name){
|
|||
_click(_cell("Save"));
|
||||
}
|
||||
|
||||
/* test to check a that naval plan give us a error */
|
||||
/* test to check a that LibrePlan give us a error */
|
||||
function workReportModelNotValid(){
|
||||
_assertExists(_div("There exists other workReportType with the same name."));
|
||||
_assert(_isVisible(_div("There exists other workReportType with the same name.")));
|
||||
|
|
|
|||
|
|
@ -133,7 +133,7 @@ function machineAssignProjectForm($machine){
|
|||
_click(_cell($machine));
|
||||
_click(_cell("Add"));
|
||||
_setValue(_textbox(0, _near(_span("Sum of all rows"))), "1");
|
||||
_click(_cell("z-button-cm[40]"));
|
||||
_click(_row("Accept[2]"));
|
||||
_assertExists(_div("box standard-task assigned"));
|
||||
_log("Task assigned", "custom1");
|
||||
_click(_image("ico_save.png"));
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ function subcontractingTaskForSubcontractForm($company, $subProjectName){
|
|||
_setValue(_textbox(0, _near(_span("Subcontract price"))), "6000");
|
||||
_setValue(_textbox(0, _near(_span("Subcontracted code"))), $companyId);
|
||||
_click(_checkbox(0, _near(_span("Hours groups"))));
|
||||
_click(_cell("z-button-cm[39]"));
|
||||
_click(_row("Accept[2]"));
|
||||
_click(_image("ico_save.png"));
|
||||
_click(_cell("OK"));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ function virtualWorkerAssignProjectForm($workerName){
|
|||
_click(_div($workerName));
|
||||
_click(_cell($workerName));
|
||||
_click(_cell("Add"));
|
||||
_click(_cell("z-button-cm[40]"));
|
||||
_click(_row("Accept[2]"));
|
||||
_assertExists(_div("box standard-task assigned"));
|
||||
_log("Task assigned", "custom1");
|
||||
_click(_image("ico_save.png"));
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue