diff --git a/ietf/meeting/forms.py b/ietf/meeting/forms.py index 871b5c26a..fb5ce1519 100644 --- a/ietf/meeting/forms.py +++ b/ietf/meeting/forms.py @@ -13,7 +13,7 @@ from ietf.doc.utils import get_document_content from ietf.group.models import Group from ietf.ietfauth.utils import has_role from ietf.meeting.models import Session, Meeting, Schedule, countries, timezones -from ietf.meeting.helpers import get_next_interim_number, make_directories +from ietf.meeting.helpers import get_next_interim_number, make_materials_directories from ietf.meeting.helpers import is_meeting_approved, get_next_agenda_name from ietf.message.models import Message from ietf.person.models import Person @@ -217,7 +217,7 @@ class InterimMeetingModelForm(forms.ModelForm): meeting.save() # save with agenda # create directories - make_directories(meeting) + make_materials_directories(meeting) return meeting diff --git a/ietf/meeting/helpers.py b/ietf/meeting/helpers.py index 227d907dd..da8622714 100644 --- a/ietf/meeting/helpers.py +++ b/ietf/meeting/helpers.py @@ -517,6 +517,24 @@ def get_next_agenda_name(meeting): sequence=str(last_sequence + 1).zfill(2)) +def make_materials_directories(meeting): + ''' + This function takes a meeting object and creates the appropriate materials directories + ''' + path = meeting.get_materials_path() + # Default umask is 0x022, meaning strip write premission for group and others. + # Change this temporarily to 0x0, to keep write permission for group and others. + # (WHY??) (Note: this code is old -- was present already when the secretariat code + # was merged with the regular datatracker code; then in secr/proceedings/views.py + # in make_directories()) + saved_umask = os.umask(0) + for leaf in ('slides','agenda','minutes','id','rfc','bluesheets'): + target = os.path.join(path,leaf) + if not os.path.exists(target): + os.makedirs(target) + os.umask(saved_umask) + + def send_interim_approval_request(meetings): """Sends an email to the secretariat, group chairs, and resposnible area director or the IRTF chair noting that approval has been requested for a diff --git a/ietf/secr/meetings/views.py b/ietf/secr/meetings/views.py index f27ba732d..e61eab8ab 100644 --- a/ietf/secr/meetings/views.py +++ b/ietf/secr/meetings/views.py @@ -16,7 +16,7 @@ from django.utils.functional import curry from ietf.ietfauth.utils import role_required from ietf.utils.mail import send_mail -from ietf.meeting.helpers import get_meeting +from ietf.meeting.helpers import get_meeting, make_materials_directories from ietf.meeting.models import Meeting, Session, Room, TimeSlot, SchedTimeSessAssignment, Schedule from ietf.group.models import Group, GroupEvent from ietf.person.models import Person @@ -314,19 +314,8 @@ def add(request): meeting.save() #Create Physical new meeting directory and subdirectories - path = meeting.get_materials_path() - # Default umask is 0x022, meaning strip write premission for group and others. - # Change this temporarily to 0x0, to keep write permission for group and others. - # (WHY??) (Note: this code is old -- was present already when the secretariat code - # was merged with the regular datatracker code; then in secr/proceedings/views.py - # in make_directories()) - saved_umask = os.umask(0) - for leaf in ('slides','agenda','minutes','id','rfc','bluesheets'): - target = os.path.join(path,leaf) - if not os.path.exists(target): - os.makedirs(target) - os.umask(saved_umask) - + make_materials_directories(meeting) + messages.success(request, 'The Meeting was created successfully!') return redirect('meetings') else: