propagate from branch 'ca.inverse.sogo.1_3_17' (head a4ef73c2ad79c8da8d8e0c93767ab06e14bc846b)

to branch 'ca.inverse.sogo' (head 25245057b6fcee6d3af9a15a930deba187d79422)

Monotone-Parent: 25245057b6fcee6d3af9a15a930deba187d79422
Monotone-Parent: a4ef73c2ad79c8da8d8e0c93767ab06e14bc846b
Monotone-Revision: 7634b9d503d61b6240548e75e7f872081debc6b4

Monotone-Author: jraby@inverse.ca
Monotone-Date: 2012-06-27T16:06:45
Monotone-Branch: ca.inverse.sogo
maint-2.0.2
Jean Raby 2012-06-27 16:06:45 +00:00
commit e587ae08cf
6 changed files with 83 additions and 25 deletions

View File

@ -1,3 +1,9 @@
2012-06-27 Jean Raby <jraby@inverse.ca>
* SoObjects/Appointments/SOGoAppointmentObject.m
(PUTAction:): detect conflicting event UID and
deny the request accordingly.
2012-06-21 Ludovic Marcotte <lmarcotte@inverse.ca>
* Added the SOGoSearchMinimumWordLength domain

12
NEWS
View File

@ -1,3 +1,14 @@
1.3.17 (2012-MM-DD)
-------------------
New Features
-
Enhancements
- updated Czech translation
Bug Fixes
-
1.3.16 (2012-06-07)
-------------------
Enhancements
@ -8,6 +19,7 @@ Enhancements
- it's no longer possible to click the "Upload" button multiple times
- allow delivery of mail with no subject, but alert the user
- updated Dutch, German, French translations
Bug Fixes
- fixed compilation under GNU/kFreeBSD
- fixed compilation for arm architecture

View File

@ -67,4 +67,4 @@ vtodo_class2 = "(Skrytý úkol)";
= "%{Attendee} %{SentByText}dosud o Vaší pozvánce k události nerozhodl/a.";
/* Resources */
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\"." = "Maximální počet současných rezervací (%{NumberOfSimultaneousBookings}) byl dosažen pro zdroj \"%{Cn} %{SystemEmail}\".";
"Maximum number of simultaneous bookings (%{NumberOfSimultaneousBookings}) reached for resource \"%{Cn} %{SystemEmail}\". The conflicting event is \"%{EventTitle}\", and starts on %{StartDate}." = "Byl dosažen maximální počet současných rezervací\n(%{NumberOfSimultaneousBookings}) pro zdroj \"%{Cn} %{SystemEmail}\". Konfliktní událost je \"%{EventTitle}\" a začíná %{StartDate}.";

View File

@ -1756,15 +1756,25 @@ inRecurrenceExceptionsForEvent: (iCalEvent *) theEvent
{
iCalCalendar *calendar;
SOGoUser *ownerUser;
iCalEvent *event;
iCalEvent *event, *conflictingEvent;
NSString *eventUID;
BOOL scheduling;
calendar = [iCalCalendar parseSingleFromSource: [rq contentAsString]];
event = [[calendar events] objectAtIndex: 0];
eventUID = [event uid];
ownerUser = [SOGoUser userWithLogin: owner];
scheduling = [self _shouldScheduleEvent: [event organizer]];
// make sure eventUID doesn't conflict with an existing event - see bug #1853
// TODO: send out a no-uid-conflict (DAV:href) xml element (rfc4791 section 5.3.2.1)
if (conflictingEvent = [container resourceNameForEventUID: eventUID])
{
NSString *reason = [NSString stringWithFormat: @"Event UID already in use. (%s)", eventUID];
return [NSException exceptionWithHTTPStatus:403 reason: reason];
}
//
// New event and we're the organizer -- send invitation to all attendees

View File

@ -4,6 +4,9 @@
# attendee1_delegate_username and superuser.
# when writing new tests, avoid using superuser when not absolutely needed
# TODO
# - Individual tests should set the ACLs themselves on Resources tests
from config import hostname, port, username, password, \
superuser, superuser_password, \
attendee1, attendee1_username, \
@ -791,6 +794,31 @@ class CalDAVSchedulingTest(unittest.TestCase):
for attendee in org_ev.vevent.attendee_list:
self.assertNotEqual(self.user_email, attendee.value)
def testEventsWithSameUID(self):
""" PUT 2 events with the same UID - bug #1853 """
ics_name = "test-same-uid.ics"
self.ics_list += [ics_name]
self._deleteEvent(self.client,
"%s%s" % (self.user_calendar, ics_name), None)
conflict_ics_name = "test-same-uid-conflict.ics"
self.ics_list += [ics_name]
self._deleteEvent(self.client,
"%s%s" % (self.user_calendar, conflict_ics_name), None)
# 1. create simple event
summary="same uid"
uid=summary
event = self._newEvent(summary, uid)
self._putEvent(self.client, "%s%s" % (self.user_calendar, ics_name), event)
# PUT the same event with a new filename - should trigger a 403
self._putEvent(self.client, "%s%s" % (self.user_calendar, conflict_ics_name), event, exp_status=403)
def testInvitationDelegation(self):
""" invitation delegation """

View File

@ -11,7 +11,7 @@
"Reply" = "Odpovědět";
"Reply All" = "Odp. všem";
"Print" = "Tisk";
"Stop" = "Stop";
"Stop" = "Zastavit";
"Write" = "Napsat";
"Send" = "Odeslat";
@ -19,6 +19,7 @@
"Attach" = "Přiložit";
"Save" = "Uložit";
"Options" = "Možnosti";
"Close" = "Zavřít";
"Size" = "Velikost";
/* Tooltips */
@ -63,8 +64,10 @@
"Shared Account: " = "Sdílený účet: ";
/* acls */
"Default Roles" = "Výchozí oprávnění";
"User rights for:" = "Uživatelská práva pro:";
"Access rights to" = "Přístupová práva k";
"For user" = "Pro uživatele";
"Any Authenticated User" = "Všichni ověření uživatelé";
"List and see this folder" = "Prohlížet tuto složku";
"Read mails from this folder" = "Číst maily v této složce";
@ -104,15 +107,13 @@
"cc" = "Kopie";
"bcc" = "Skrytá kopie";
"Addressbook" = "Adresář";
"Edit Draft..." = "Upravit koncept...";
"Load Images" = "Nahrát obrázky";
"Return Receipt" = "Return Receipt";
"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?";
"Return Receipt (displayed) - %@"= "Return Receipt (displayed) - %@";
"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents.";
"Return Receipt" = "Potvrzení o přečtení";
"The sender of this message has asked to be notified when you read this message. Do you with to notify the sender?" = "Odesílatel této zprávy si přeje být informován o tom, že jste si tuto zprávu přečetli. Chcete odesílateli poslat potvrzení?";
"Return Receipt (displayed) - %@"= "Potvrzení o přečtení (zobrazeno) - %@";
"This is a Return Receipt for the mail that you sent to %@.\n\nNote: This Return Receipt only acknowledges that the message was displayed on the recipient's computer. There is no guarantee that the recipient has read or understood the message contents." = "Toto je potvrzení o přečtení ke zprávě, kterou jste poslali pro %@.\n\nPoznámka: Potvrzení o přijetí znamená pouze to, že se zpráva zobrazila na počítači adresáta. Není ale zaručeno, že adresát zprávu četl a porozuměl jejímu obsahu.";
"Priority" = "Priorita";
"highest" = "Nejvyšší";
@ -123,6 +124,9 @@
"This mail is being sent from an unsecure network!" = "Tento mail je odesílán z nezabezpečené sítě!";
"Address Book:" = "Adresář:";
"Search For:" = "Hledat:";
/* Popup "show" */
"all" = "všechny";
@ -141,8 +145,7 @@
"Date" = "Datum";
"View" = "Zobrazit";
"All" = "Všechny";
"Unread" = "Nepřečtené";
"No message" = "No message";
"No message" = "Žádná zpráva";
"messages" = "zprávy";
"first" = "Nejnovější";
@ -196,8 +199,8 @@
"Delete Folder" = "Smazat složku";
"Use This Folder For" = "Použít tuto složku pro";
"Get Messages for Account" = "Stáhnout zprávy pro účet";
"Properties..." = "Properties...";
"Delegation..." = "Delegation...";
"Properties..." = "Vlastnosti...";
"Delegation..." = "Delegoní...";
/* Use This Folder menu */
"Sent Messages" = "Odeslané zprávy";
@ -208,7 +211,6 @@
"Open Message In New Window" = "Otevřít zprávu v novém okně";
"Reply to Sender Only" = "Odpovědět pouze odesílateli";
"Reply to All" = "Odpovědět všem";
"Forward" = "Přeposlat";
"Edit As New..." = "Upravit jako novou...";
"Move To" = "Přesunout do";
"Copy To" = "Kopírovat do";
@ -255,11 +257,11 @@
"Please select a message." = "Vyberte zprávu prosím.";
"Please select a message to print." = "Zvolte prosím zprávu, kterou chcete tisknout.";
"Please select only one message to print." = "Zvolte pouze jednu zprávu, kterou chcete tisknout.";
"The message you have selected doesn't exist anymore." = "The message you have selected doesn't exist anymore.";
"The message you have selected doesn't exist anymore." = "Zpráva, kterou jste zvolili, již neexistuje.";
"The folder with name \"%{0}\" could not be created."
= "Složka s názvem \"%{0}\" nemohla být vytvořen.";
= "Složka s názvem \"%{0}\" nemohla být vytvořena.";
"This folder could not be renamed to \"%{0}\"."
= "Tato složka nemohla být přejmenována na \"%{0}\".";
"The folder could not be deleted."
@ -272,20 +274,20 @@
"You need to choose a non-virtual folder!" = "Musíte zvolit ne-virtuální složku!";
"Moving a message into its own folder is impossible!"
= "Je nemožné přesunout zprávu do své vlastní složky!";
= "Zprávu nelze přesunout do své vlastní složky!";
"Copying a message into its own folder is impossible!"
= "Je nemožné zkopírovat zprávu do své vlastní složky!";
= "Zprávu nelze zkopírovat do své vlastní složky!";
/* Message operations */
"The messages could not be moved to the trash folder. Would you like to delete them immediately?"
= "The messages could not be moved to the trash folder. Would you like to delete them immediately?";
= "Zprávy nemohou být přesunuty do koše. Chcete je smazat trvale?";
/* Message editing */
"error_validationfailed" = "Potvrzení selhalo";
"error_missingsubject" = "Chybí předmět";
"error_missingrecipients" = "Příjemci nebyli specifikováni";
"Send Anyway" = "Odeslat";
/* Message sending */
"cannot send message: (smtp) all recipients discarded" = "Cannot send message: all recipients are invalid.";
"cannot send message (smtp) - recipients discarded:" = "Cannot send message. The following addresses are invalid:";
"cannot send message: (smtp) error when connecting" = "Cannot send message: error when connecting to the SMTP server.";
"cannot send message: (smtp) all recipients discarded" = "Zprávu nelze odeslat: adresy všech příjemců jsou neplatné.";
"cannot send message (smtp) - recipients discarded:" = "Zprávu nelze odeslat: následující adresy jsou neplatné:";
"cannot send message: (smtp) error when connecting" = "Zprávu nelze odeslat: při spojení se SMTP serverem došlo k chybě.";