added new calendar and renamed holiday block list
This commit is contained in:
parent
ffb1e0c096
commit
5eb37647cf
@ -8,7 +8,7 @@ erpnext.updates = [
|
||||
"Bookmarks: Add bookmarks via toolbar by clicking on the <i class='icon-star'></i> sign.",
|
||||
]],
|
||||
["5th February, 2013", [
|
||||
"Holiday Block List: Block users from taking leave on certain days.",
|
||||
"Leave Block List: Block users from taking leave on certain days.",
|
||||
]],
|
||||
["2nd February, 2013", [
|
||||
"Warehouse: Added table Warehouse User to restrict Warehouse Entry per user.",
|
||||
|
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"creation": "2013-01-10 16:34:13",
|
||||
"creation": "2013-02-05 11:48:26",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-02-04 15:34:55",
|
||||
"modified": "2013-02-14 17:21:51",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -60,10 +60,10 @@
|
||||
{
|
||||
"description": "Days for which Holidays are blocked for this department.",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "holiday_block_list",
|
||||
"fieldname": "leave_block_list",
|
||||
"fieldtype": "Link",
|
||||
"label": "Holiday Block List",
|
||||
"options": "Holiday Block List"
|
||||
"label": "Leave Block List",
|
||||
"options": "Leave Block List"
|
||||
},
|
||||
{
|
||||
"doctype": "DocPerm",
|
||||
|
@ -1,5 +1,5 @@
|
||||
test_records = [
|
||||
[{"doctype":"Department", "department_name":"_Test Department"}],
|
||||
[{"doctype":"Department", "department_name":"_Test Department with Block List",
|
||||
"holiday_block_list": "_Test Holiday Block List"}],
|
||||
"leave_block_list": "_Test Leave Block List"}],
|
||||
]
|
||||
|
@ -1,16 +0,0 @@
|
||||
[
|
||||
"Allow Users",
|
||||
"Block Holidays on important days.",
|
||||
"Block Days",
|
||||
"HR",
|
||||
"Company",
|
||||
"Holiday Block List Allowed",
|
||||
"Holiday Block List Dates",
|
||||
"Holiday Block List",
|
||||
"Stop users from making Leave Applications on following days.",
|
||||
"Applies to Company",
|
||||
"Holiday Block List Name",
|
||||
"Year",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.",
|
||||
"Allow the following users to make Leave Applications for block days."
|
||||
]
|
@ -1 +0,0 @@
|
||||
[]
|
@ -1,4 +0,0 @@
|
||||
[
|
||||
"Date is repeated",
|
||||
"Block Date"
|
||||
]
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "\u0627\u0644\u0633\u0645\u0627\u062d \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646",
|
||||
"Allow the following users to make Leave Applications for block days.": "\u062a\u0633\u0645\u062d \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0627\u0644\u062a\u0627\u0644\u064a\u0629 \u0644\u062c\u0639\u0644 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0625\u062c\u0627\u0632\u0629 \u0644\u0639\u062f\u0629 \u0623\u064a\u0627\u0645 \u0643\u062a\u0644\u0629.",
|
||||
"Applies to Company": "\u064a\u0646\u0637\u0628\u0642 \u0639\u0644\u0649 \u0634\u0631\u0643\u0629",
|
||||
"Block Days": "\u0643\u062a\u0644\u0629 \u0623\u064a\u0627\u0645",
|
||||
"Block Holidays on important days.": "\u0645\u0646\u0639 \u0627\u0644\u0625\u062c\u0627\u0632\u0627\u062a \u0641\u064a \u0627\u0644\u0623\u064a\u0627\u0645 \u0627\u0644\u0647\u0627\u0645\u0629.",
|
||||
"Company": "\u0634\u0631\u0643\u0629",
|
||||
"HR": "HR",
|
||||
"Holiday Block List": "\u0625\u0642\u0627\u0645\u0627\u062a \u0642\u0627\u0626\u0645\u0629",
|
||||
"Holiday Block List Allowed": "\u0639\u0637\u0644\u0629 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062d\u0638\u0631 \u0645\u0633\u0645\u0648\u062d",
|
||||
"Holiday Block List Dates": "\u0645\u0648\u0627\u0639\u064a\u062f \u0625\u0642\u0627\u0645\u0627\u062a \u0642\u0627\u0626\u0645\u0629",
|
||||
"Holiday Block List Name": "\u0627\u0633\u0645 \u0625\u0642\u0627\u0645\u0627\u062a \u0642\u0627\u0626\u0645\u0629",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "\u0625\u0646 \u0644\u0645 \u064a\u0643\u0646 \u062a\u0645\u060c \u0633\u064a\u0643\u0648\u0646 \u0644\u062f\u064a\u0643 \u0642\u0627\u0626\u0645\u0629 \u062a\u0636\u0627\u0641 \u0625\u0644\u0649 \u0643\u0644 \u0642\u0633\u0645 \u062d\u064a\u062b \u0623\u0646\u0647 \u0644\u0627 \u0628\u062f \u0645\u0646 \u062a\u0637\u0628\u064a\u0642\u0647\u0627.",
|
||||
"Stop users from making Leave Applications on following days.": "\u0648\u0642\u0641 \u0627\u0644\u0645\u0633\u062a\u062e\u062f\u0645\u064a\u0646 \u0645\u0646 \u0625\u062c\u0631\u0627\u0621 \u062a\u0637\u0628\u064a\u0642\u0627\u062a \u0639\u0644\u0649 \u0625\u062c\u0627\u0632\u0629 \u0627\u0644\u0623\u064a\u0627\u0645 \u0627\u0644\u062a\u0627\u0644\u064a\u0629.",
|
||||
"Year": "\u0639\u0627\u0645"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "\u0645\u0646\u0639 \u062a\u0627\u0631\u064a\u062e",
|
||||
"Date is repeated": "\u0648\u064a\u062a\u0643\u0631\u0631 \u0627\u0644\u062a\u0627\u0631\u064a\u062e"
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "Permitir que los usuarios",
|
||||
"Allow the following users to make Leave Applications for block days.": "Permitir a los usuarios realizar las siguientes aplicaciones dejan para los d\u00edas de bloque.",
|
||||
"Applies to Company": "Corresponde a la Empresa",
|
||||
"Block Days": "D\u00edas de bloque",
|
||||
"Block Holidays on important days.": "Bloque Vacaciones en d\u00edas importantes.",
|
||||
"Company": "Empresa",
|
||||
"HR": "HR",
|
||||
"Holiday Block List": "Holiday lista de bloqueo",
|
||||
"Holiday Block List Allowed": "Holiday Lista de bloqueo animales",
|
||||
"Holiday Block List Dates": "Las fechas de vacaciones de listas de bloqueo",
|
||||
"Holiday Block List Name": "Bloque de vacaciones Lista de Nombres",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "Si no est\u00e1 activada, la lista tendr\u00e1 que ser a\u00f1adido a cada Departamento donde se ha de aplicar.",
|
||||
"Stop users from making Leave Applications on following days.": "Deje que los usuarios realicen aplicaciones dejan en los d\u00edas siguientes.",
|
||||
"Year": "A\u00f1o"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "Bloque Fecha",
|
||||
"Date is repeated": "La fecha se repite"
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "Autoriser les utilisateurs",
|
||||
"Allow the following users to make Leave Applications for block days.": "Autoriser les utilisateurs suivants pour faire demandes d'autorisation pour les jours de bloc.",
|
||||
"Applies to Company": "S'applique \u00e0 l'entreprise",
|
||||
"Block Days": "Bloquer les jours",
|
||||
"Block Holidays on important days.": "Bloquer les jours f\u00e9ri\u00e9s importants.",
|
||||
"Company": "Entreprise",
|
||||
"HR": "RH",
|
||||
"Holiday Block List": "Block List vacances",
|
||||
"Holiday Block List Allowed": "Block List vacances accept\u00e9s",
|
||||
"Holiday Block List Dates": "Dates de vacances de listes rouges d'",
|
||||
"Holiday Block List Name": "Nom de la liste de vacances Bloquer",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "Si ce n'est pas coch\u00e9e, la liste devra \u00eatre ajout\u00e9 \u00e0 chaque d\u00e9partement o\u00f9 il doit \u00eatre appliqu\u00e9.",
|
||||
"Stop users from making Leave Applications on following days.": "Emp\u00eacher les utilisateurs de faire des demandes d'autorisation, les jours suivants.",
|
||||
"Year": "Ann\u00e9e"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "Date de bloquer",
|
||||
"Date is repeated": "La date est r\u00e9p\u00e9t\u00e9e"
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u094b \u0905\u0928\u0941\u092e\u0924\u093f \u0926\u0947\u0902",
|
||||
"Allow the following users to make Leave Applications for block days.": "\u0928\u093f\u092e\u094d\u0928 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u094b \u092c\u094d\u0932\u0949\u0915 \u0926\u093f\u0928\u094b\u0902 \u0915\u0947 \u0932\u093f\u090f \u091b\u0941\u091f\u094d\u091f\u0940 \u0905\u0928\u0941\u092a\u094d\u0930\u092f\u094b\u0917 \u092c\u0928\u093e\u0928\u0947 \u0915\u0947 \u0932\u093f\u090f \u0905\u0928\u0941\u092e\u0924\u093f \u0926\u0947\u0902.",
|
||||
"Applies to Company": "\u0915\u0902\u092a\u0928\u0940 \u0915\u0947 \u0932\u093f\u090f \u0932\u093e\u0917\u0942 \u0939\u094b\u0924\u093e \u0939\u0948",
|
||||
"Block Days": "\u092c\u094d\u0932\u0949\u0915 \u0926\u093f\u0928",
|
||||
"Block Holidays on important days.": "\u092e\u0939\u0924\u094d\u0935\u092a\u0942\u0930\u094d\u0923 \u0926\u093f\u0928 \u092a\u0930 \u091b\u0941\u091f\u094d\u091f\u093f\u092f\u093e\u0901 \u092e\u0948.",
|
||||
"Company": "\u0915\u0902\u092a\u0928\u0940",
|
||||
"HR": "\u092e\u093e\u0928\u0935 \u0938\u0902\u0938\u093e\u0927\u0928",
|
||||
"Holiday Block List": "\u0905\u0935\u0915\u093e\u0936 \u092c\u094d\u0932\u0949\u0915 \u0938\u0942\u091a\u0940",
|
||||
"Holiday Block List Allowed": "\u0905\u0935\u0915\u093e\u0936 \u0938\u0942\u091a\u0940 \u092c\u094d\u0932\u0949\u0915 \u0930\u0916 \u0938\u0915\u0924\u0947 \u0939\u0948",
|
||||
"Holiday Block List Dates": "\u0905\u0935\u0915\u093e\u0936 \u092c\u094d\u0932\u0949\u0915 \u0938\u0942\u091a\u0940 \u0924\u093f\u0925\u093f\u092f\u093e\u0902",
|
||||
"Holiday Block List Name": "\u0905\u0935\u0915\u093e\u0936 \u092c\u094d\u0932\u0949\u0915 \u0938\u0942\u091a\u0940 \u092e\u0947\u0902 \u0928\u093e\u092e",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "\u0905\u0917\u0930 \u091c\u093e\u0901\u091a \u0928\u0939\u0940\u0902 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948, \u0907\u0938 \u0938\u0942\u091a\u0940 \u0915\u0947 \u0932\u093f\u090f \u092a\u094d\u0930\u0924\u094d\u092f\u0947\u0915 \u0935\u093f\u092d\u093e\u0917 \u0939\u0948 \u091c\u0939\u093e\u0902 \u0907\u0938\u0947 \u0932\u093e\u0917\u0942 \u0915\u093f\u092f\u093e \u0917\u092f\u093e \u0939\u0948 \u0915\u0947 \u0932\u093f\u090f \u091c\u094b\u0921\u093c\u093e \u091c\u093e \u0939\u094b\u0917\u093e.",
|
||||
"Stop users from making Leave Applications on following days.": "\u0928\u093f\u092e\u094d\u0928\u0932\u093f\u0916\u093f\u0924 \u0926\u093f\u0928 \u092a\u0930 \u091b\u0941\u091f\u094d\u091f\u0940 \u0905\u0928\u0941\u092a\u094d\u0930\u092f\u094b\u0917 \u092c\u0928\u093e\u0928\u0947 \u0938\u0947 \u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e\u0913\u0902 \u0915\u094b \u092c\u0902\u0926 \u0915\u0930\u094b.",
|
||||
"Year": "\u0935\u0930\u094d\u0937"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "\u0924\u093f\u0925\u093f \u092c\u094d\u0932\u0949\u0915",
|
||||
"Date is repeated": "\u0924\u093f\u0925\u093f \u0926\u094b\u0939\u0930\u093e\u092f\u093e \u0939\u0948"
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "Omogu\u0107iti korisnicima",
|
||||
"Allow the following users to make Leave Applications for block days.": "Dopusti sljede\u0107i korisnicima da ostavite Prijave za blok dana.",
|
||||
"Applies to Company": "Odnosi se na Dru\u0161tvo",
|
||||
"Block Days": "Blok Dani",
|
||||
"Block Holidays on important days.": "Blok Odmor o va\u017enim dana.",
|
||||
"Company": "Dru\u0161tvo",
|
||||
"HR": "HR",
|
||||
"Holiday Block List": "Turisti\u010dka Blok Popis",
|
||||
"Holiday Block List Allowed": "Turisti\u010dka Blok Popis dopu\u0161tenih",
|
||||
"Holiday Block List Dates": "Holiday Block List datumi",
|
||||
"Holiday Block List Name": "Turisti\u010dka Blok Popis Ime",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "Ako nije ozna\u010deno, popis \u0107e biti dodan u svakom odjela gdje se mora primjenjivati.",
|
||||
"Stop users from making Leave Applications on following days.": "Prestani korisnike od izrade ostaviti aplikacija na sljede\u0107im danima.",
|
||||
"Year": "Godina"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "Blok Datum",
|
||||
"Date is repeated": "Datum se ponavlja"
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "Gebruikers toestaan",
|
||||
"Allow the following users to make Leave Applications for block days.": "Laat de volgende gebruikers te vertrekken Toepassingen maken voor blok dagen.",
|
||||
"Applies to Company": "Geldt voor Bedrijf",
|
||||
"Block Days": "Blokkeren Dagen",
|
||||
"Block Holidays on important days.": "Blok Vakantie op belangrijke dagen.",
|
||||
"Company": "Vennootschap",
|
||||
"HR": "HR",
|
||||
"Holiday Block List": "Holiday Block List",
|
||||
"Holiday Block List Allowed": "Holiday toegestaan \u200b\u200bBlock List",
|
||||
"Holiday Block List Dates": "Holiday Block List Data",
|
||||
"Holiday Block List Name": "Holiday Block List Name",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "Indien niet gecontroleerd, wordt de lijst worden toegevoegd aan elk Department waar het moet worden toegepast.",
|
||||
"Stop users from making Leave Applications on following days.": "Stop gebruikers van het maken van verlofaanvragen op de volgende dagen.",
|
||||
"Year": "Jaar"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "Blokkeren Datum",
|
||||
"Date is repeated": "Datum wordt herhaald"
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
{
|
||||
"Allow Users": "Permitir que os usu\u00e1rios",
|
||||
"Allow the following users to make Leave Applications for block days.": "Permitir que os usu\u00e1rios a seguir para fazer aplica\u00e7\u00f5es deixam para os dias de bloco.",
|
||||
"Applies to Company": "Aplica-se a Empresa",
|
||||
"Block Days": "Dias bloco",
|
||||
"Block Holidays on important days.": "Bloquear feriados em dias importantes.",
|
||||
"Company": "Companhia",
|
||||
"HR": "HR",
|
||||
"Holiday Block List": "Lista de Bloqueios de f\u00e9rias",
|
||||
"Holiday Block List Allowed": "Lista de feriado Bloco admitidos",
|
||||
"Holiday Block List Dates": "Datas de f\u00e9rias Lista de Bloqueios",
|
||||
"Holiday Block List Name": "Nome de f\u00e9rias Lista de Bloqueios",
|
||||
"If not checked, the list will have to be added to each Department where it has to be applied.": "Se n\u00e3o for controlada, a lista dever\u00e1 ser adicionado a cada departamento onde tem de ser aplicado.",
|
||||
"Stop users from making Leave Applications on following days.": "Pare de usu\u00e1rios de fazer aplica\u00e7\u00f5es deixam nos dias seguintes.",
|
||||
"Year": "Ano"
|
||||
}
|
@ -1,4 +0,0 @@
|
||||
{
|
||||
"Block Date": "Bloquear Data",
|
||||
"Date is repeated": "Data \u00e9 repetido"
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
test_records = [[{
|
||||
"doctype":"Holiday Block List",
|
||||
"holiday_block_list_name": "_Test Holiday Block List",
|
||||
"year": "_Test Fiscal Year 2013",
|
||||
"company": "_Test Company"
|
||||
}, {
|
||||
"doctype": "Holiday Block List Date",
|
||||
"parent": "_Test Holiday Block List",
|
||||
"parenttype": "Holiday Block List",
|
||||
"parentfield": "holiday_block_list_dates",
|
||||
"block_date": "2013-01-02",
|
||||
"reason": "First work day"
|
||||
}, {
|
||||
"doctype": "Holiday Block List Allow",
|
||||
"parent": "_Test Holiday Block List",
|
||||
"parenttype": "Holiday Block List",
|
||||
"parentfield": "holiday_block_list_allowed",
|
||||
"allow_user": "test1@example.com",
|
||||
}
|
||||
]]
|
@ -1,5 +0,0 @@
|
||||
[
|
||||
"HR",
|
||||
"Allow User",
|
||||
"Holiday Block List Allow"
|
||||
]
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "\u062a\u0633\u0645\u062d \u0644\u0644\u0645\u0633\u062a\u062e\u062f\u0645",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Allow": "\u0639\u0637\u0644\u0629 \u0642\u0627\u0626\u0645\u0629 \u0627\u0644\u062d\u0638\u0631 \u0627\u0644\u0633\u0645\u0627\u062d"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "Permitir al usuario",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Allow": "Lista Casas Bloquear Permitir"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "Permettre \u00e0 l'utilisateur",
|
||||
"HR": "RH",
|
||||
"Holiday Block List Allow": "Block List vacances Permettez-"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "\u0909\u092a\u092f\u094b\u0917\u0915\u0930\u094d\u0924\u093e \u0915\u0940 \u0905\u0928\u0941\u092e\u0924\u093f",
|
||||
"HR": "\u092e\u093e\u0928\u0935 \u0938\u0902\u0938\u093e\u0927\u0928",
|
||||
"Holiday Block List Allow": "\u0905\u0935\u0915\u093e\u0936 \u092c\u094d\u0932\u0949\u0915 \u0938\u0942\u091a\u0940 \u0915\u0940 \u0905\u0928\u0941\u092e\u0924\u093f \u0926\u0947\u0902"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "Dopusti korisnika",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Allow": "Turisti\u010dka Popis Blok Dopustite"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "Door gebruiker toestaan",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Allow": "Holiday Block List Laat"
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
{
|
||||
"Allow User": "Permitir que o usu\u00e1rio",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Allow": "Lista de Bloqueios de f\u00e9rias Permitir"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
[
|
||||
"HR",
|
||||
"Reason",
|
||||
"Holiday Block List Date",
|
||||
"Block Date"
|
||||
]
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "\u0645\u0646\u0639 \u062a\u0627\u0631\u064a\u062e",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Date": "\u062a\u0627\u0631\u064a\u062e \u0625\u0642\u0627\u0645\u0627\u062a \u0642\u0627\u0626\u0645\u0629",
|
||||
"Reason": "\u0633\u0628\u0628"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "Bloque Fecha",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Date": "Bloque de vacaciones Lista Fecha",
|
||||
"Reason": "Raz\u00f3n"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "Date de bloquer",
|
||||
"HR": "RH",
|
||||
"Holiday Block List Date": "Liste Date vacances Bloquer",
|
||||
"Reason": "Raison"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "\u0924\u093f\u0925\u093f \u092c\u094d\u0932\u0949\u0915",
|
||||
"HR": "\u092e\u093e\u0928\u0935 \u0938\u0902\u0938\u093e\u0927\u0928",
|
||||
"Holiday Block List Date": "\u0905\u0935\u0915\u093e\u0936 \u092c\u094d\u0932\u0949\u0915 \u0938\u0942\u091a\u0940 \u0924\u093f\u0925\u093f",
|
||||
"Reason": "\u0915\u093e\u0930\u0923"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "Blok Datum",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Date": "Turisti\u010dka Blok Popis Datum",
|
||||
"Reason": "Razlog"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "Blokkeren Datum",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Date": "Holiday Block List Datum",
|
||||
"Reason": "Reden"
|
||||
}
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"Block Date": "Bloquear Data",
|
||||
"HR": "HR",
|
||||
"Holiday Block List Date": "Data feriado Lista de Bloqueios",
|
||||
"Reason": "Raz\u00e3o"
|
||||
}
|
@ -59,11 +59,11 @@ class DocType:
|
||||
# per department
|
||||
department = webnotes.conn.get_value("Employee", self.doc.employee, "department")
|
||||
if department:
|
||||
block_list = webnotes.conn.get_value("Department", department, "holiday_block_list")
|
||||
block_list = webnotes.conn.get_value("Department", department, "leave_block_list")
|
||||
add_block_list(block_list)
|
||||
|
||||
# global
|
||||
for block_list in webnotes.conn.sql_list("""select name from `tabHoliday Block List`
|
||||
for block_list in webnotes.conn.sql_list("""select name from `tabLeave Block List`
|
||||
where ifnull(applies_to_all_departments,0)=1 and company=%s""", self.doc.company):
|
||||
add_block_list(block_list)
|
||||
|
||||
@ -73,7 +73,7 @@ class DocType:
|
||||
from_date = getdate(self.doc.from_date)
|
||||
to_date = getdate(self.doc.to_date)
|
||||
for d in webnotes.conn.sql("""select block_date, reason from
|
||||
`tabHoliday Block List Date` where parent=%s""", block_list, as_dict=1):
|
||||
`tabLeave Block List Date` where parent=%s""", block_list, as_dict=1):
|
||||
block_date = getdate(d.block_date)
|
||||
if block_date > from_date and block_date < to_date:
|
||||
webnotes.msgprint(_("You cannot apply for a leave on the following date because it is blocked")
|
||||
@ -84,7 +84,7 @@ class DocType:
|
||||
|
||||
def is_user_in_allow_list(self, block_list):
|
||||
return webnotes.session.user in webnotes.conn.sql_list("""select allow_user
|
||||
from `tabHoliday Block List Allow` where parent=%s""", block_list)
|
||||
from `tabLeave Block List Allow` where parent=%s""", block_list)
|
||||
|
||||
def get_holidays(self):
|
||||
tot_hol = webnotes.conn.sql("""select count(*) from `tabHoliday` h1, `tabHoliday List` h2, `tabEmployee` e1
|
||||
|
@ -30,7 +30,7 @@ class TestLeaveApplication(unittest.TestCase):
|
||||
def test_global_block_list(self):
|
||||
application = self.get_application(test_records[3])
|
||||
application.doc.leave_approver = "test@example.com"
|
||||
webnotes.conn.set_value("Holiday Block List", "_Test Holiday Block List",
|
||||
webnotes.conn.set_value("Leave Block List", "_Test Leave Block List",
|
||||
"applies_to_all_departments", 1)
|
||||
webnotes.conn.set_value("Employee", "_T-Employee-0002", "department",
|
||||
"_Test Department")
|
||||
|
@ -11,7 +11,7 @@ class DocType:
|
||||
|
||||
def validate(self):
|
||||
dates = []
|
||||
for d in self.doclist.get({"doctype":"Holiday Block List Date"}):
|
||||
for d in self.doclist.get({"doctype":"Leave Block List Date"}):
|
||||
# validate fiscal year
|
||||
validate_fiscal_year(d.block_date, self.doc.year, _("Block Date"))
|
||||
|
||||
@ -19,4 +19,3 @@ class DocType:
|
||||
if d.block_date in dates:
|
||||
webnotes.msgprint(_("Date is repeated") + ":" + d.block_date, raise_exception=1)
|
||||
dates.append(d.block_date)
|
||||
|
@ -1,13 +1,13 @@
|
||||
[
|
||||
{
|
||||
"creation": "2013-02-04 15:31:29",
|
||||
"creation": "2013-02-08 15:13:29",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-02-08 11:36:20",
|
||||
"modified": "2013-02-14 17:15:32",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
{
|
||||
"autoname": "field:holiday_block_list_name",
|
||||
"autoname": "field:leave_block_list_name",
|
||||
"description": "Block Holidays on important days.",
|
||||
"doctype": "DocType",
|
||||
"document_type": "Master",
|
||||
@ -17,7 +17,7 @@
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"name": "__common__",
|
||||
"parent": "Holiday Block List",
|
||||
"parent": "Leave Block List",
|
||||
"parentfield": "fields",
|
||||
"parenttype": "DocType",
|
||||
"permlevel": 0
|
||||
@ -26,7 +26,7 @@
|
||||
"create": 1,
|
||||
"doctype": "DocPerm",
|
||||
"name": "__common__",
|
||||
"parent": "Holiday Block List",
|
||||
"parent": "Leave Block List",
|
||||
"parentfield": "permissions",
|
||||
"parenttype": "DocType",
|
||||
"permlevel": 0,
|
||||
@ -36,13 +36,13 @@
|
||||
},
|
||||
{
|
||||
"doctype": "DocType",
|
||||
"name": "Holiday Block List"
|
||||
"name": "Leave Block List"
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"fieldname": "holiday_block_list_name",
|
||||
"fieldname": "leave_block_list_name",
|
||||
"fieldtype": "Data",
|
||||
"label": "Holiday Block List Name",
|
||||
"label": "Leave Block List Name",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
@ -77,10 +77,10 @@
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"fieldname": "holiday_block_list_dates",
|
||||
"fieldname": "leave_block_list_dates",
|
||||
"fieldtype": "Table",
|
||||
"label": "Holiday Block List Dates",
|
||||
"options": "Holiday Block List Date"
|
||||
"label": "Leave Block List Dates",
|
||||
"options": "Leave Block List Date"
|
||||
},
|
||||
{
|
||||
"description": "Allow the following users to make Leave Applications for block days.",
|
||||
@ -91,10 +91,10 @@
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"fieldname": "holiday_block_list_allowed",
|
||||
"fieldname": "leave_block_list_allowed",
|
||||
"fieldtype": "Table",
|
||||
"label": "Holiday Block List Allowed",
|
||||
"options": "Holiday Block List Allow"
|
||||
"label": "Leave Block List Allowed",
|
||||
"options": "Leave Block List Allow"
|
||||
},
|
||||
{
|
||||
"doctype": "DocPerm"
|
20
hr/doctype/leave_block_list/test_leave_block_list.py
Normal file
20
hr/doctype/leave_block_list/test_leave_block_list.py
Normal file
@ -0,0 +1,20 @@
|
||||
test_records = [[{
|
||||
"doctype":"Leave Block List",
|
||||
"leave_block_list_name": "_Test Leave Block List",
|
||||
"year": "_Test Fiscal Year 2013",
|
||||
"company": "_Test Company"
|
||||
}, {
|
||||
"doctype": "Leave Block List Date",
|
||||
"parent": "_Test Leave Block List",
|
||||
"parenttype": "Leave Block List",
|
||||
"parentfield": "leave_block_list_dates",
|
||||
"block_date": "2013-01-02",
|
||||
"reason": "First work day"
|
||||
}, {
|
||||
"doctype": "Leave Block List Allow",
|
||||
"parent": "_Test Leave Block List",
|
||||
"parenttype": "Leave Block List",
|
||||
"parentfield": "leave_block_list_allowed",
|
||||
"allow_user": "test1@example.com",
|
||||
}
|
||||
]]
|
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"creation": "2013-02-06 14:31:03",
|
||||
"creation": "2013-02-06 17:43:44",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-02-06 14:31:03",
|
||||
"modified": "2013-02-14 17:15:45",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -19,7 +19,7 @@
|
||||
"label": "Allow User",
|
||||
"name": "__common__",
|
||||
"options": "Profile",
|
||||
"parent": "Holiday Block List Allow",
|
||||
"parent": "Leave Block List Allow",
|
||||
"parentfield": "fields",
|
||||
"parenttype": "DocType",
|
||||
"permlevel": 0,
|
||||
@ -27,7 +27,7 @@
|
||||
},
|
||||
{
|
||||
"doctype": "DocType",
|
||||
"name": "Holiday Block List Allow"
|
||||
"name": "Leave Block List Allow"
|
||||
},
|
||||
{
|
||||
"doctype": "DocField"
|
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"creation": "2013-02-04 15:33:14",
|
||||
"creation": "2013-02-05 11:48:25",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-02-04 15:36:10",
|
||||
"modified": "2013-02-14 17:15:52",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@ -15,7 +15,7 @@
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"name": "__common__",
|
||||
"parent": "Holiday Block List Date",
|
||||
"parent": "Leave Block List Date",
|
||||
"parentfield": "fields",
|
||||
"parenttype": "DocType",
|
||||
"permlevel": 0,
|
||||
@ -23,7 +23,7 @@
|
||||
},
|
||||
{
|
||||
"doctype": "DocType",
|
||||
"name": "Holiday Block List Date"
|
||||
"name": "Leave Block List Date"
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
@ -81,9 +81,9 @@ wn.module_page["HR"] = [
|
||||
doctype: "Holiday List"
|
||||
},
|
||||
{
|
||||
"label":wn._("Holiday Block List"),
|
||||
"label":wn._("Leave Block List"),
|
||||
"description":wn._("Block leave applications by department."),
|
||||
doctype: "Holiday Block List"
|
||||
doctype: "Leave Block List"
|
||||
},
|
||||
]
|
||||
},
|
||||
|
14
patches/february_2013/p01_event.py
Normal file
14
patches/february_2013/p01_event.py
Normal file
@ -0,0 +1,14 @@
|
||||
import webnotes
|
||||
|
||||
def execute():
|
||||
webnotes.reload_doc("core", "doctype", "event")
|
||||
|
||||
webnotes.conn.sql("""update tabEvent set subject=description""")
|
||||
|
||||
webnotes.conn.sql("""update tabEvent set description = concat(description, "\n", notes)
|
||||
where ifnull(notes,"") != "" """)
|
||||
|
||||
webnotes.conn.sql("""update tabEvent set starts_on = timestamp(event_date, event_hour)""")
|
||||
|
||||
webnotes.conn.sql("""update tabEvent set ends_on = timestampadd(hour, 1, starts_on)""")
|
||||
|
@ -55,8 +55,6 @@ def boot_session(bootinfo):
|
||||
bootinfo['letter_heads'] = get_letter_heads()
|
||||
|
||||
import webnotes.model.doctype
|
||||
bootinfo['docs'] += webnotes.model.doctype.get('Event')
|
||||
bootinfo['docs'] += webnotes.model.doctype.get('Search Criteria')
|
||||
bootinfo['notification_settings'] = webnotes.doc("Notification Control",
|
||||
"Notification Control").get_values()
|
||||
|
||||
|
@ -1,165 +0,0 @@
|
||||
/**** CALENDAR ****/
|
||||
|
||||
.cal_event {
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
div.cal_body {
|
||||
margin: 16px;
|
||||
background-color: #DDD;
|
||||
position: relative;
|
||||
border-radius: 5px;
|
||||
-moz-border-radius: 5px;
|
||||
-webkit-border-radius: 5px;
|
||||
padding: 16px;
|
||||
-moz-box-shadow: 1px 1px 8px #555;
|
||||
-webkit-box-shadow: 1px 1px 8px #555;
|
||||
box-shadow: 1px 1px 8px #555;
|
||||
}
|
||||
|
||||
div.cal_body h4 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
div.cal_head {
|
||||
margin: 16px;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
div.cal_head div {
|
||||
font-size: 18px;
|
||||
color: #666;
|
||||
padding-top: 8px;
|
||||
}
|
||||
|
||||
div.cal_toolbar {
|
||||
width: 80%;
|
||||
}
|
||||
|
||||
div.cal_toolbar .btn {
|
||||
text-align: center;
|
||||
margin: 0px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
div.cal_view_body {
|
||||
}
|
||||
|
||||
div.cal_view_body_plain {
|
||||
margin: 16px;
|
||||
}
|
||||
|
||||
div.cal_month_head {
|
||||
margin: 8px 0px 8px 0px;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
div.cal_month_head .btn {
|
||||
float: right;
|
||||
}
|
||||
|
||||
span.cal_view_title {
|
||||
display: inline-block;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
div.cal_month_body {
|
||||
}
|
||||
|
||||
.cal_month_headtable {
|
||||
table-layout:fixed;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.cal_month_name {
|
||||
width: 100%;
|
||||
color: #888;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.cal_month_headtable tr td{
|
||||
font-size: 12px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
padding: 4px;
|
||||
}
|
||||
|
||||
table.cal_month_table {
|
||||
border-collapse: collapse;
|
||||
table-layout:fixed;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.cal_month_table td {
|
||||
width: 14.29%;
|
||||
height: 20%;
|
||||
/*overflow:hidden;*/
|
||||
padding:0px;
|
||||
}
|
||||
|
||||
div.cal_month_date {
|
||||
width:100%;
|
||||
font-size: 10px;
|
||||
/*background-color: #EEF;*/
|
||||
}
|
||||
|
||||
div.cal_month_date_holiday {
|
||||
/*background-color: #FFF;*/
|
||||
}
|
||||
|
||||
div.cal_month_unit {
|
||||
width:100%;
|
||||
min-height: 100px;
|
||||
overflow:hidden;
|
||||
cursor:pointer;
|
||||
/*background-color:#FFF;*/
|
||||
}
|
||||
|
||||
div.cal_vu_disabled {
|
||||
background-color:#FFF;
|
||||
cursor:default;
|
||||
}
|
||||
|
||||
table.cal_day_table {
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.cal_day_table td {
|
||||
}
|
||||
|
||||
div.cal_day_body {
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
border-top: 1px solid #AAA;
|
||||
}
|
||||
|
||||
div.cal_day_unit{
|
||||
width:100%;
|
||||
cursor:pointer;
|
||||
}
|
||||
|
||||
table.cal_week_table {
|
||||
border-collapse: collapse;
|
||||
table-layout: fixed;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
table.cal_week_table td {
|
||||
width: 12.5%;
|
||||
}
|
||||
|
||||
div.cal_week_body {
|
||||
width: 100%;
|
||||
overflow-x: hidden;
|
||||
border-top: 1px solid #888;
|
||||
}
|
||||
|
||||
div.cal_week_unit{
|
||||
width: 100%;
|
||||
cursor:pointer;
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
<div class="cal_body">
|
||||
<a class="close" onclick="window.history.back();">×</a>
|
||||
<div class="cal_toolbar btn-group">
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.add_event()">
|
||||
<i class="icon-plus"></i> Add Event
|
||||
</button>
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.refresh('Day')">
|
||||
Day View
|
||||
</button>
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.refresh('Week')">
|
||||
Week View
|
||||
</button>
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.refresh('Month')">
|
||||
Month View
|
||||
</button>
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.refresh(null, true)">
|
||||
<i class="icon-refresh"></i> Refresh
|
||||
</button>
|
||||
</div>
|
||||
<div class="cal_month_head">
|
||||
<span class="cal_view_title"></span>
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.cur_view.next()">
|
||||
<i class="icon-arrow-right"></i>
|
||||
</button>
|
||||
<button class="btn btn-small" onclick="erpnext.calendar.cur_view.prev()">
|
||||
<i class="icon-arrow-left"></i>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
@ -21,690 +21,86 @@
|
||||
//
|
||||
|
||||
pscript.onload_calendar = function(wrapper) {
|
||||
if(!erpnext.calendar) {
|
||||
erpnext.calendar = new Calendar();
|
||||
erpnext.calendar.init(wrapper);
|
||||
|
||||
var me = this;
|
||||
$(document).bind('rename', function(event, dt, old_name, new_name) {
|
||||
erpnext.calendar.rename_notify(dt, old_name, new_name)
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
///// CALENDAR
|
||||
|
||||
Calendar=function() {
|
||||
this.views=[];
|
||||
this.events = {};
|
||||
this.events_by_name = {};
|
||||
this.weekdays = new Array("Sun","Mon","Tue","Wed","Thu","Fri","Sat");
|
||||
}
|
||||
|
||||
Calendar.prototype.init=function (parent) {
|
||||
|
||||
this.wrapper = parent;
|
||||
this.body = $('.cal_body').get(0);
|
||||
|
||||
//this.make_head_buttons();
|
||||
//this.make_header();
|
||||
this.view_title = $('.cal_view_title').get(0);
|
||||
|
||||
this.todays_date = new Date();
|
||||
this.selected_date = this.todays_date;
|
||||
this.selected_hour = 8;
|
||||
|
||||
// Create views
|
||||
this.views['Month'] = new Calendar.MonthView(this);
|
||||
this.views['Week'] = new Calendar.WeekView(this);
|
||||
this.views['Day'] = new Calendar.DayView(this);
|
||||
|
||||
// Month view as initial
|
||||
this.cur_view = this.views['Month'];
|
||||
this.views['Month'].show();
|
||||
wn.ui.make_app_page({
|
||||
parent: wrapper,
|
||||
single_column: true,
|
||||
title: 'Calendar'
|
||||
});
|
||||
|
||||
wn.require('lib/js/lib/fullcalendar/fullcalendar.css');
|
||||
wn.require('lib/js/lib/fullcalendar/fullcalendar.js');
|
||||
}
|
||||
|
||||
Calendar.prototype.rename_notify = function(dt, old_name, new_name) {
|
||||
// calendar
|
||||
if(dt = 'Event'){
|
||||
if(this.events_by_name[old_name]) {
|
||||
delete this.events_by_name[old_name];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.prototype.show_event = function(ev, cal_ev) {
|
||||
var me = this;
|
||||
if(!this.event_dialog) {
|
||||
var d = new Dialog(400, 400, 'Calendar Event');
|
||||
d.make_body([
|
||||
['HTML','Heading']
|
||||
,['Text','Description']
|
||||
,['HTML', 'Ref Link']
|
||||
,['Check', 'Public Event']
|
||||
,['Check', 'Cancelled Event']
|
||||
,['HTML', 'Event Link']
|
||||
,['Button', 'Save']
|
||||
])
|
||||
|
||||
// show the event when the dialog opens
|
||||
d.onshow = function() {
|
||||
// heading
|
||||
var c = me.selected_date;
|
||||
|
||||
this.widgets['Heading'].innerHTML =
|
||||
'<div style="text-align: center; padding:4px; font-size: 14px">'
|
||||
+ erpnext.calendar.weekdays[c.getDay()] + ', ' + c.getDate() + ' ' + month_list_full[c.getMonth()] + ' ' + c.getFullYear()
|
||||
+ ' - <b>'+this.ev.event_hour+'</b></div>';
|
||||
|
||||
// set
|
||||
this.widgets['Description'].value = cstr(this.ev.description);
|
||||
|
||||
this.widgets['Public Event'].checked = false;
|
||||
this.widgets['Cancelled Event'].checked = false;
|
||||
|
||||
if(this.ev.event_type=='Public')
|
||||
this.widgets['Public Event'].checked = true;
|
||||
|
||||
this.widgets['Event Link'].innerHTML = '';
|
||||
this.widgets['Ref Link'].innerHTML = '';
|
||||
|
||||
if(this.ev.ref_type) {
|
||||
$(repl('<table style="width: 100%;"><tr>\
|
||||
<td style="width: 30%"><b>Reference:</b></td>\
|
||||
<td><a href="#Form/%(ref_type)s/%(ref_name)s" \
|
||||
onclick="cur_dialog.hide()">%(ref_type)s: %(ref_name)s</a></td>\
|
||||
</tr></table>', this.ev))
|
||||
.appendTo(this.widgets['Ref Link'])
|
||||
}
|
||||
|
||||
$(repl('<a href="#Form/Event/%(name)s" \
|
||||
onclick="cur_dialog.hide()">More Options</a>', this.ev))
|
||||
.appendTo(this.widgets['Event Link'])
|
||||
}
|
||||
|
||||
// event save
|
||||
d.widgets['Save'].onclick = function() {
|
||||
var d = me.event_dialog;
|
||||
|
||||
// save values
|
||||
d.ev.description = d.widgets['Description'].value;
|
||||
if(d.widgets['Cancelled Event'].checked)
|
||||
d.ev.event_type='Cancel';
|
||||
else if(d.widgets['Public Event'].checked)
|
||||
d.ev.event_type='Public';
|
||||
|
||||
me.event_dialog.hide();
|
||||
|
||||
// if new event
|
||||
me.save_event(d.ev);
|
||||
}
|
||||
this.event_dialog = d;
|
||||
}
|
||||
this.event_dialog.ev = ev;
|
||||
this.event_dialog.cal_ev = cal_ev ? cal_ev : null;
|
||||
this.event_dialog.show();
|
||||
|
||||
}
|
||||
|
||||
Calendar.prototype.save_event = function(doc) {
|
||||
var me = this;
|
||||
var doclist = new wn.model.DocList("Event", doc.name);
|
||||
doclist.save("Save", function(r) {
|
||||
var doc = locals['Event'][r.docname];
|
||||
var cal = erpnext.calendar;
|
||||
cal.cur_view.refresh();
|
||||
|
||||
// if cancelled, hide
|
||||
if(doc.event_type=='Cancel') {
|
||||
$(cal.events_by_name[doc.name].body).toggle(false);
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.prototype.add_event = function() {
|
||||
|
||||
var ev = wn.model.make_new_doc_and_get_name('Event');
|
||||
ev = locals['Event'][ev];
|
||||
|
||||
ev.event_date = dateutil.obj_to_str(this.selected_date);
|
||||
ev.event_hour = this.selected_hour+':00:00';
|
||||
ev.event_type = 'Private';
|
||||
|
||||
this.show_event(ev);
|
||||
}
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.prototype.get_month_events = function(call_back) {
|
||||
// ret fn
|
||||
var me = this;
|
||||
var f = function(r, rt) {
|
||||
if(me.cur_view) me.cur_view.refresh();
|
||||
if(call_back)call_back();
|
||||
}
|
||||
|
||||
//load
|
||||
var y=this.selected_date.getFullYear(); var m = this.selected_date.getMonth();
|
||||
if(!this.events[y] || !this.events[y][m]) {
|
||||
$c('webnotes.widgets.event.load_month_events', args = {
|
||||
'month': m + 1,
|
||||
'year' : y},
|
||||
f);
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.prototype.get_daily_event_list=function(day) {
|
||||
var el = [];
|
||||
var d = day.getDate(); var m = day.getMonth(); var y = day.getFullYear()
|
||||
if(this.events[y] && this.events[y][m] &&
|
||||
this.events[y][m][d]) {
|
||||
var l = this.events[y][m][d]
|
||||
for(var i in l) {
|
||||
for(var j in l[i]) el[el.length] = l[i][j];
|
||||
}
|
||||
return el;
|
||||
}
|
||||
else return [];
|
||||
}
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.prototype.set_event = function(ev) {
|
||||
// don't duplicate
|
||||
if(this.events_by_name[ev.name]) {
|
||||
return this.events_by_name[ev.name];
|
||||
}
|
||||
|
||||
var dt = dateutil.str_to_obj(ev.event_date);
|
||||
var m = dt.getMonth();
|
||||
var d = dt.getDate();
|
||||
var y = dt.getFullYear();
|
||||
|
||||
if(!this.events[y]) this.events[y] = [];
|
||||
if(!this.events[y][m]) this.events[y][m] = [];
|
||||
if(!this.events[y][m][d]) this.events[y][m][d] = [];
|
||||
if(!this.events[y][m][d][cint(ev.event_hour)])
|
||||
this.events[y][m][d][cint(ev.event_hour)] = [];
|
||||
|
||||
var cal_ev = new Calendar.CalEvent(ev, this);
|
||||
this.events[y][m][d][cint(ev.event_hour)].push(cal_ev);
|
||||
this.events_by_name[ev.name] = cal_ev;
|
||||
|
||||
return cal_ev;
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.prototype.clear = function() {
|
||||
this.events = {};
|
||||
this.events_by_name = {};
|
||||
locals.Event = {};
|
||||
}
|
||||
|
||||
Calendar.prototype.refresh = function(viewtype, clear_events){//Sets the viewtype of the Calendar and Calls the View class based on the viewtype
|
||||
if(viewtype)
|
||||
this.viewtype = viewtype;
|
||||
|
||||
if(clear_events)
|
||||
this.clear();
|
||||
|
||||
// switch view if reqd
|
||||
if(this.cur_view.viewtype!=this.viewtype) {
|
||||
this.cur_view.hide();
|
||||
this.cur_view = this.views[this.viewtype];
|
||||
this.cur_view.in_home = false; // for home page
|
||||
this.cur_view.show();
|
||||
}
|
||||
else{
|
||||
this.cur_view.get_events();
|
||||
this.cur_view.refresh(this);
|
||||
}
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
|
||||
Calendar.CalEvent= function(doc, cal) {
|
||||
var me = this;
|
||||
me.doc = doc;
|
||||
|
||||
this.body = $("<div class='label cal_event'></div>")
|
||||
.html(doc.description)
|
||||
.attr("title", doc.description)
|
||||
.css({"cursor":"pointer"})
|
||||
.attr("data-event", doc.name)
|
||||
.click(function() {
|
||||
var doc = locals["Event"][$(this).attr("data-event")];
|
||||
cal.show_event(doc, me);
|
||||
})
|
||||
|
||||
this.show = function(vu) {
|
||||
me.body
|
||||
.html(me.doc.description)
|
||||
.css({"width": ($(vu.body).width()-10)})
|
||||
.appendTo(vu.body)
|
||||
.removeClass("label-success").removeClass("label-info")
|
||||
.addClass(me.doc.event_type=="Public" ? "label-success" : "label-info")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ----------
|
||||
|
||||
Calendar.View =function() { this.daystep = 0; this.monthstep = 0; }
|
||||
Calendar.View.prototype.init=function(cal) {
|
||||
this.cal = cal;
|
||||
this.body = $a(cal.body, 'div', 'cal_view_body');
|
||||
this.body.style.display = 'none';
|
||||
this.create_table();
|
||||
}
|
||||
|
||||
|
||||
Calendar.View.prototype.show=function() {
|
||||
this.body.style.display = 'block';
|
||||
this.get_events(); this.refresh();
|
||||
}
|
||||
|
||||
Calendar.View.prototype.hide=function() {
|
||||
this.body.style.display = 'none';
|
||||
}
|
||||
|
||||
Calendar.View.prototype.next = function() {
|
||||
var s = this.cal.selected_date;
|
||||
this.cal.selected_date = new Date(s.getFullYear(), s.getMonth() + this.monthstep, s.getDate() + this.daystep);
|
||||
this.get_events(); this.refresh();
|
||||
}
|
||||
|
||||
Calendar.View.prototype.prev = function() {
|
||||
var s = this.cal.selected_date;
|
||||
this.cal.selected_date = new Date(s.getFullYear(), s.getMonth() - this.monthstep, s.getDate() - this.daystep);
|
||||
this.get_events(); this.refresh();
|
||||
}
|
||||
|
||||
Calendar.View.prototype.get_events = function() {
|
||||
this.cal.get_month_events();
|
||||
}
|
||||
Calendar.View.prototype.add_unit = function(vu) {
|
||||
this.viewunits[this.viewunits.length] = vu;
|
||||
}
|
||||
Calendar.View.prototype.refresh_units = function() {
|
||||
// load the events
|
||||
if(locals['Event']) {
|
||||
for(var name in locals['Event']) {
|
||||
this.cal.set_event(locals['Event'][name]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for(var r in this.table.rows) {
|
||||
for(var c in this.table.rows[r].cells) {
|
||||
if(this.table.rows[r].cells[c].viewunit) {
|
||||
this.table.rows[r].cells[c].viewunit.refresh();
|
||||
pscript.update_event = function(event) {
|
||||
wn.model.remove_from_locals("Event", event.id);
|
||||
wn.call({
|
||||
module: "utilities",
|
||||
page: "calendar",
|
||||
method: "update_event",
|
||||
args: {
|
||||
"start": wn.datetime.get_datetime_as_string(event.start),
|
||||
"end": wn.datetime.get_datetime_as_string(event.end),
|
||||
"name": event.id
|
||||
},
|
||||
callback: function(r) {
|
||||
if(r.exc) {
|
||||
show_alert("Unable to update event.")
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// ................. Month View..........................
|
||||
Calendar.MonthView = function(cal) { this.init(cal); this.monthstep = 1; this.rows = 5; this.cells = 7; }
|
||||
Calendar.MonthView.prototype=new Calendar.View();
|
||||
Calendar.MonthView.prototype.create_table = function() {
|
||||
|
||||
// create head
|
||||
this.head_wrapper = $a(this.body, 'div', 'cal_month_head');
|
||||
|
||||
// create headers
|
||||
this.headtable = $a(this.head_wrapper, 'table', 'cal_month_headtable');
|
||||
var r = this.headtable.insertRow(0);
|
||||
for(var j=0;j<7;j++) {
|
||||
var cell = r.insertCell(j);
|
||||
cell.innerHTML = erpnext.calendar.weekdays[j];
|
||||
$w(cell, (100 / 7) + '%');
|
||||
}
|
||||
|
||||
this.main = $a(this.body, 'div', 'cal_month_body');
|
||||
this.table = $a(this.main, 'table', 'cal_month_table');
|
||||
var me = this;
|
||||
|
||||
// create body
|
||||
for(var i=0;i<5;i++) {
|
||||
var r = this.table.insertRow(i);
|
||||
for(var j=0;j<7;j++) {
|
||||
var cell = r.insertCell(j);
|
||||
cell.viewunit = new Calendar.MonthViewUnit(cell);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Calendar.MonthView.prototype.refresh = function() {
|
||||
var c =this.cal.selected_date;
|
||||
var me=this;
|
||||
// fill other days
|
||||
|
||||
var cur_row = 0;
|
||||
|
||||
var cur_month = c.getMonth();
|
||||
var cur_year = c.getFullYear();
|
||||
|
||||
var d = new Date(cur_year, cur_month, 1);
|
||||
var day = 1 - d.getDay();
|
||||
|
||||
|
||||
// set day headers
|
||||
var d = new Date(cur_year, cur_month, day);
|
||||
|
||||
this.cal.view_title.innerHTML = month_list_full[cur_month] + ' ' + cur_year;
|
||||
|
||||
for(var i=0;i<6;i++) {
|
||||
if((i<5) || cur_month==d.getMonth()) { // if this month
|
||||
for(var j=0;j<7;j++) {
|
||||
var cell = this.table.rows[cur_row].cells[j];
|
||||
|
||||
if((i<5) || cur_month==d.getMonth()) { // if this month
|
||||
cell.viewunit.day = d;
|
||||
cell.viewunit.hour = 8;
|
||||
if(cur_month == d.getMonth()) {
|
||||
cell.viewunit.is_disabled = false;
|
||||
|
||||
if(same_day(this.cal.todays_date, d))
|
||||
cell.viewunit.is_today = true;
|
||||
else
|
||||
cell.viewunit.is_today = false;
|
||||
|
||||
} else {
|
||||
cell.viewunit.is_disabled = true;
|
||||
pscript.onshow_calendar = function(wrapper) {
|
||||
if(!wrapper.setup_complete) {
|
||||
$('<div id="fullcalendar">').appendTo($(wrapper).find('.layout-main')).fullCalendar({
|
||||
header: {
|
||||
left: 'prev,next today',
|
||||
center: 'title',
|
||||
right: 'month,agendaWeek,agendaDay'
|
||||
},
|
||||
editable: true,
|
||||
events: function(start, end, callback) {
|
||||
wn.call({
|
||||
method: 'utilities.page.calendar.calendar.get_events',
|
||||
type: "GET",
|
||||
args: {
|
||||
start: dateutil.obj_to_str(start),
|
||||
end: dateutil.obj_to_str(end)
|
||||
},
|
||||
callback: function(r) {
|
||||
var events = r.message;
|
||||
$.each(events, function(i, d) {
|
||||
d.editable = d.owner==user;
|
||||
d.allDay = false;
|
||||
});
|
||||
callback(events);
|
||||
}
|
||||
}
|
||||
// new date
|
||||
day++;
|
||||
d = new Date(cur_year, cur_month, day);
|
||||
}
|
||||
}
|
||||
cur_row++;
|
||||
if(cur_row == 5) {cur_row = 0;} // back to top
|
||||
}
|
||||
this.refresh_units();
|
||||
|
||||
}
|
||||
// ................. Daily View..........................
|
||||
Calendar.DayView=function(cal){ this.init(cal); this.daystep = 1; }
|
||||
Calendar.DayView.prototype=new Calendar.View();
|
||||
Calendar.DayView.prototype.create_table = function() {
|
||||
})
|
||||
},
|
||||
dayClick: function(date, allDay, jsEvent, view) {
|
||||
// if current date, show popup to create a new event
|
||||
var ev = wn.model.create('Event')
|
||||
ev.doc.set('start', date);
|
||||
ev.doc.set('end', new Date(date));
|
||||
ev.doc.set('all_day', 1);
|
||||
|
||||
// create body
|
||||
this.main = $a(this.body, 'div', 'cal_day_body');
|
||||
this.table = $a(this.main, 'table', 'cal_day_table');
|
||||
var me = this;
|
||||
|
||||
for(var i=0;i<24;i++) {
|
||||
var r = this.table.insertRow(i);
|
||||
for(var j=0;j<2;j++) {
|
||||
var cell = r.insertCell(j);
|
||||
if(j==0) {
|
||||
cell.innerHTML = i+':00:00';
|
||||
$w(cell, '10%');
|
||||
} else {
|
||||
cell.viewunit = new Calendar.DayViewUnit(cell);
|
||||
cell.viewunit.hour = i;
|
||||
$w(cell, '90%');
|
||||
if((i>=7)&&(i<=20)) {
|
||||
cell.viewunit.is_daytime = true;
|
||||
}
|
||||
},
|
||||
eventClick: function(calEvent, jsEvent, view) {
|
||||
// edit event description or delete
|
||||
wn.set_route("Form", "Event", calEvent.id);
|
||||
},
|
||||
eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
|
||||
pscript.update_event(event);
|
||||
},
|
||||
eventResize: function(event, dayDelta, minuteDelta, allDay, revertFunc) {
|
||||
pscript.update_event(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Calendar.DayView.prototype.refresh = function() {
|
||||
var c =this.cal.selected_date;
|
||||
|
||||
// fill other days
|
||||
var me=this;
|
||||
|
||||
this.cal.view_title.innerHTML = erpnext.calendar.weekdays[c.getDay()] + ', '
|
||||
+ c.getDate() + ' ' + month_list_full[c.getMonth()] + ' ' + c.getFullYear();
|
||||
|
||||
// headers
|
||||
var d = c;
|
||||
|
||||
for(var i=0;i<24;i++) {
|
||||
var cell = this.table.rows[i].cells[1];
|
||||
if(same_day(this.cal.todays_date, d)) cell.viewunit.is_today = true;
|
||||
else cell.viewunit.is_today = false;
|
||||
cell.viewunit.day = d;
|
||||
}
|
||||
this.refresh_units();
|
||||
}
|
||||
|
||||
// ................. Weekly View..........................
|
||||
Calendar.WeekView=function(cal) { this.init(cal); this.daystep = 7; }
|
||||
Calendar.WeekView.prototype=new Calendar.View();
|
||||
Calendar.WeekView.prototype.create_table = function() {
|
||||
|
||||
// create head
|
||||
this.head_wrapper = $a(this.body, 'div', 'cal_month_head');
|
||||
|
||||
// day headers
|
||||
this.headtable = $a(this.head_wrapper, 'table', 'cal_month_headtable');
|
||||
var r = this.headtable.insertRow(0);
|
||||
for(var j=0;j<8;j++) {
|
||||
var cell = r.insertCell(j);
|
||||
}
|
||||
|
||||
// hour header
|
||||
|
||||
// create body
|
||||
this.main = $a(this.body, 'div', 'cal_week_body');
|
||||
this.table = $a(this.main, 'table', 'cal_week_table');
|
||||
var me = this;
|
||||
|
||||
for(var i=0;i<24;i++) {
|
||||
var r = this.table.insertRow(i);
|
||||
for(var j=0;j<8;j++) {
|
||||
var cell = r.insertCell(j);
|
||||
if(j==0) {
|
||||
cell.innerHTML = i+':00:00';
|
||||
$w(cell, '10%');
|
||||
} else {
|
||||
cell.viewunit = new Calendar.WeekViewUnit(cell);
|
||||
cell.viewunit.hour = i;
|
||||
if((i>=7)&&(i<=20)) {
|
||||
cell.viewunit.is_daytime = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Calendar.WeekView.prototype.refresh = function() {
|
||||
var c =this.cal.selected_date;
|
||||
// fill other days
|
||||
var me=this;
|
||||
|
||||
this.cal.view_title.innerHTML = month_list_full[c.getMonth()] + ' ' + c.getFullYear();
|
||||
|
||||
// headers
|
||||
var d = new Date(c.getFullYear(), c.getMonth(), c.getDate() - c.getDay());
|
||||
|
||||
for (var k=1;k<8;k++) {
|
||||
this.headtable.rows[0].cells[k].innerHTML = erpnext.calendar.weekdays[d.getDay()] + ' ' + d.getDate();
|
||||
|
||||
for(var i=0;i<24;i++) {
|
||||
var cell = this.table.rows[i].cells[k];
|
||||
if(same_day(this.cal.todays_date, d))
|
||||
cell.viewunit.is_today = true;
|
||||
else cell.viewunit.is_today = false;
|
||||
|
||||
cell.viewunit.day = d;
|
||||
//cell.viewunit.refresh();
|
||||
}
|
||||
d=new Date(d.getFullYear(),d.getMonth(),d.getDate() + 1);
|
||||
|
||||
}
|
||||
|
||||
this.refresh_units();
|
||||
}
|
||||
|
||||
//------------------------------------------------------.
|
||||
|
||||
Calendar.ViewUnit = function() {}
|
||||
Calendar.ViewUnit.prototype.init = function(parent) {
|
||||
parent.style.border = "1px solid #CCC" ;
|
||||
this.body = $a(parent, 'div', this.default_class);
|
||||
this.parent = parent;
|
||||
|
||||
var me = this;
|
||||
this.body.onclick = function() {
|
||||
erpnext.calendar.selected_date = me.day;
|
||||
erpnext.calendar.selected_hour = me.hour;
|
||||
|
||||
if(erpnext.calendar.cur_vu && erpnext.calendar.cur_vu!=me){
|
||||
erpnext.calendar.cur_vu.deselect();
|
||||
me.select();
|
||||
erpnext.calendar.cur_vu = me;
|
||||
}
|
||||
}
|
||||
this.body.ondblclick = function() {
|
||||
erpnext.calendar.add_event();
|
||||
wrapper.setup_complete = true;
|
||||
} else {
|
||||
$("#fullcalendar").fullCalendar("refetchEvents");
|
||||
}
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.set_header=function(v) {
|
||||
this.header.innerHTML = v;
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.set_today = function() {
|
||||
this.is_today = true;
|
||||
this.set_display();
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.clear = function() {
|
||||
if(this.header)this.header.innerHTML = '';
|
||||
|
||||
// clear body
|
||||
while(this.body.childNodes.length)
|
||||
this.body.removeChild(this.body.childNodes[0]);
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.set_display = function() {
|
||||
var cn = '#FFF';
|
||||
|
||||
// colors
|
||||
var col_tod_sel = '#EEE';
|
||||
var col_tod = '#FFF';
|
||||
var col_sel = '#EEF';
|
||||
|
||||
if(this.is_today) {
|
||||
if(this.selected) cn = col_tod_sel;
|
||||
else cn = col_tod;
|
||||
} else
|
||||
if(this.selected) cn = col_sel;
|
||||
|
||||
if(this.header) {
|
||||
if(this.is_disabled) {
|
||||
this.body.className = this.default_class + ' cal_vu_disabled';
|
||||
this.header.style.color = '#BBB';
|
||||
} else {
|
||||
this.body.className = this.default_class;
|
||||
this.header.style.color = '#000';
|
||||
}
|
||||
|
||||
if(this.day&&this.day.getDay()==0)
|
||||
this.header.style.backgroundColor = '#FEE';
|
||||
else
|
||||
this.header.style.backgroundColor = '';
|
||||
}
|
||||
this.parent.style.backgroundColor = cn;
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.is_selected = function() {
|
||||
return (same_day(this.day, erpnext.calendar.selected_date)
|
||||
&& this.hour==erpnext.calendar.selected_hour)
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.get_event_list = function() {
|
||||
var y = this.day.getFullYear();
|
||||
var m = this.day.getMonth();
|
||||
var d = this.day.getDate();
|
||||
if(erpnext.calendar.events[y] && erpnext.calendar.events[y][m] &&
|
||||
erpnext.calendar.events[y][m][d] &&
|
||||
erpnext.calendar.events[y][m][d][this.hour]) {
|
||||
return erpnext.calendar.events[y][m][d][this.hour];
|
||||
} else
|
||||
return [];
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.refresh = function() {
|
||||
this.clear();
|
||||
|
||||
if(this.is_selected()) {
|
||||
if(erpnext.calendar.cur_vu)erpnext.calendar.cur_vu.deselect();
|
||||
this.selected = true;
|
||||
erpnext.calendar.cur_vu = this;
|
||||
}
|
||||
this.set_display();
|
||||
this.el = this.get_event_list();
|
||||
if(this.onrefresh)this.onrefresh();
|
||||
|
||||
for(var i in this.el) {
|
||||
this.el[i].show(this);
|
||||
}
|
||||
|
||||
var me = this;
|
||||
}
|
||||
|
||||
Calendar.ViewUnit.prototype.select=function() { this.selected = true; this.set_display(); }
|
||||
Calendar.ViewUnit.prototype.deselect=function() { this.selected = false; this.set_display(); }
|
||||
Calendar.ViewUnit.prototype.setevent=function() { }
|
||||
|
||||
Calendar.MonthViewUnit=function(parent) {
|
||||
var me = this;
|
||||
this.header = $("<div class='cal_month_date'></div>")
|
||||
.appendTo(parent)
|
||||
.css({"cursor":"pointer"})
|
||||
.click(function() {
|
||||
me.body.onclick();
|
||||
})
|
||||
.bind("dblclick", function() {
|
||||
me.body.ondblclick();
|
||||
})
|
||||
.get(0);
|
||||
|
||||
this.default_class = "cal_month_unit";
|
||||
this.init(parent);
|
||||
|
||||
this.onrefresh = function() {
|
||||
this.header.innerHTML = this.day.getDate();
|
||||
}
|
||||
}
|
||||
Calendar.MonthViewUnit.prototype = new Calendar.ViewUnit();
|
||||
Calendar.MonthViewUnit.prototype.is_selected = function() {
|
||||
return same_day(this.day, erpnext.calendar.selected_date)
|
||||
}
|
||||
|
||||
Calendar.MonthViewUnit.prototype.get_event_list = function() {
|
||||
return erpnext.calendar.get_daily_event_list(this.day);
|
||||
}
|
||||
|
||||
Calendar.DayViewUnit= function(parent) {
|
||||
this.default_class = "cal_day_unit"; this.init(parent);
|
||||
}
|
||||
Calendar.DayViewUnit.prototype = new Calendar.ViewUnit();
|
||||
Calendar.DayViewUnit.prototype.onrefresh = function() {
|
||||
if(this.el.length<3)
|
||||
this.body.style.height = '30px';
|
||||
else this.body.style.height = '';
|
||||
}
|
||||
|
||||
Calendar.WeekViewUnit=function(parent) {
|
||||
this.default_class = "cal_week_unit"; this.init(parent);
|
||||
}
|
||||
Calendar.WeekViewUnit.prototype = new Calendar.ViewUnit();
|
||||
Calendar.WeekViewUnit.prototype.onrefresh = function() {
|
||||
if(this.el.length<3) this.body.style.height = '30px';
|
||||
else this.body.style.height = '';
|
||||
}
|
||||
|
@ -1 +1,31 @@
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import webnotes
|
||||
|
||||
@webnotes.whitelist()
|
||||
def get_events(start, end):
|
||||
roles = webnotes.get_roles()
|
||||
events = webnotes.conn.sql("""select name as `id`, subject as title,
|
||||
starts_on as `start`, ends_on as `end`, "Event" as doctype, owner
|
||||
from tabEvent where event_date between %s and %s
|
||||
and (event_type='Public' or owner=%s
|
||||
or exists(select * from `tabEvent User` where
|
||||
`tabEvent User`.parent=tabEvent.name and person=%s)
|
||||
or exists(select * from `tabEvent Role` where
|
||||
`tabEvent Role`.parent=tabEvent.name
|
||||
and `tabEvent Role`.role in ('%s')))""" % ('%s', '%s', '%s', '%s',
|
||||
"', '".join(roles)), (start, end,
|
||||
webnotes.session.user, webnotes.session.user), as_dict=1, debug=1)
|
||||
|
||||
return events
|
||||
|
||||
block_days = webnotes.conn.sql("""select block_date as `start`,
|
||||
name as `id`, reason as `title`, "Holiday List Block Date" as doctype,
|
||||
where block_date between %s and %s
|
||||
and """)
|
||||
|
||||
@webnotes.whitelist()
|
||||
def update_event(name, start, end):
|
||||
webnotes.conn.sql("""update tabEvent set starts_on=%s, ends_on=%s where
|
||||
name=%s""", (start, end, name))
|
||||
|
Loading…
Reference in New Issue
Block a user