def event_create(request): if not may_manage_planning(request.user): raise PermissionDenied if request.method == 'POST': form = EventCreateForm(request.POST) if form.is_valid(): fd = form.cleaned_data day = date_to_dt(fd['date']) e = Event({ 'name': fd['name'], 'date': day, 'kind': fd['template'] }) e.save() for poolname, periods in templates[fd['template']].items(): pool = Pool.by_name(poolname) for period in periods: begin_date = day + datetime.timedelta(seconds=period[0][0]) end_date = day + datetime.timedelta(seconds=period[1][0]) v = Vacancy({ 'name': period[2], 'event': _id(e), 'begin': (begin_date, period[0][1]), 'end': (end_date, period[1][1]), 'pool': _id(pool), 'assignee': None, 'reminder_needed': True, }) v.save() return HttpResponseRedirect( reverse('planning-event-edit', args=(e._id, ))) else: form = EventCreateForm() return render(request, 'planning/event_create.html', {'form': form})
def event_create(request): if request.method == 'POST': form = EventCreateForm(request.POST) if form.is_valid(): fd = form.cleaned_data day = date_to_dt(fd['date']) e = Event({ 'name': fd['name'], 'date': day, 'kind': fd['template']}) e.save() for poolname, periods in templates[fd['template']].items(): pool = Pool.by_name(poolname) for period in periods: begin_date = day + datetime.timedelta(seconds=period[0][0]) end_date = day + datetime.timedelta(seconds=period[1][0]) v = Vacancy({ 'name': period[2], 'event': _id(e), 'begin': (begin_date, period[0][1]), 'end': (end_date, period[1][1]) , 'pool': _id(pool), 'assignee': None, 'reminder_needed': True, }) v.save() return HttpResponseRedirect(reverse('planning-event-edit', args=(e._id,))) else: form = EventCreateForm() return render_to_response('planning/event_create.html', {'form': form}, context_instance=RequestContext(request))
def event_new(request): AddEventForm = get_add_event_form(request.user) if request.method == 'POST': form = AddEventForm(request.POST) if form.is_valid(): fd = form.cleaned_data if not request.user.is_related_with(fd['owner']): raise PermissionDenied e = subscr_Es.Event({ 'date': date_to_dt(fd['date']), 'owner': _id(fd['owner']), 'description': fd['description'], 'mailBody': fd['mailBody'], 'humanName': fd['humanName'], 'createdBy': request.user._id, 'name': fd['name'], 'cost': str(fd['cost']), 'is_open': True}) e.save() return HttpResponseRedirect(reverse('event-detail', args=(e.name,))) else: form = AddEventForm() ctx = {'form': form} return render_to_response('subscriptions/event_new.html', ctx, context_instance=RequestContext(request))
def event_new_or_edit(request, edit=None): superuser = '******' in request.user.cached_groups_names if edit is not None: e = subscr_Es.event_by_name(edit) if e is None: raise Http404 if not superuser and not request.user.is_related_with(e.owner) and \ not _id(e.owner) == request.user.id: raise PermissionDenied AddEventForm = get_add_event_form(request.user, superuser) if request.method == 'POST': form = AddEventForm(request.POST) if form.is_valid(): fd = form.cleaned_data if not superuser and not request.user.is_related_with( fd['owner']) and not fd['owner'] == request.user.id: raise PermissionDenied name = fd['name'] # If not secretariaat, then prefix name with the username prefix = str(request.user.name) + '-' if not superuser and not name.startswith(prefix): name = prefix + name d = { 'date': date_to_dt(fd['date']), 'owner': _id(fd['owner']), 'description': fd['description'], 'mailBody': fd['mailBody'], 'humanName': fd['humanName'], 'createdBy': request.user._id, 'name': name, 'cost': str(fd['cost']), 'is_open': True} if edit is None: e = subscr_Es.Event(d) else: e._data.update(d) e.save() act = 'bewerkt' if edit else 'aangemaakt' EmailMessage( "Activiteit %s %s door %s" % (fd['humanName'], act, unicode(request.user.humanName)), "%s heeft een activiteit %s:\n\n"\ " http://karpenoktem.nl%s" % (unicode(request.user.humanName), act, reverse('event-detail', args=(e.name,))), 'Karpe Noktem Activiteiten <*****@*****.**>', ['*****@*****.**']).send() return HttpResponseRedirect(reverse('event-detail', args=(e.name,))) elif edit is None: form = AddEventForm() else: d = e._data form = AddEventForm(d) ctx = {'form': form} return render_to_response('subscriptions/event_new_or_edit.html', ctx, context_instance=RequestContext(request))
def event_new_or_edit(request, edit=None): superuser = subscr_Es.is_superuser(request.user) if edit is not None: e = subscr_Es.event_by_name(edit) if e is None: raise Http404 if not superuser and not request.user.is_related_with(e.owner) and \ not _id(e.owner) == request.user._id: raise PermissionDenied AddEventForm = get_add_event_form(request.user, superuser, bool(edit)) if request.method == 'POST': form = AddEventForm(request.POST) if form.is_valid(): fd = form.cleaned_data # The superuser may do everything, and when you yourself are the # owner that's always okay too. if not superuser and fd['owner'] != request.user.id: # Check some more constraints. owner = Es.by_id(fd['owner']) if not request.user.is_related_with(owner): raise PermissionDenied( _('Gebruiker niet verwant met eigenaar') ) if not subscr_Es.may_set_owner(request.user, owner): raise PermissionDenied(_('Mag deze eigenaar niet kiezen')) d = { 'date': date_to_dt(fd['date']), 'owner': _id(fd['owner']), 'description': fd['description'], 'description_html': kn.utils.markdown.parser.convert( fd['description']), 'has_public_subscriptions': fd['has_public_subscriptions'], 'may_unsubscribe': fd['may_unsubscribe'], 'humanName': fd['humanName'], 'createdBy': request.user._id, 'cost': str(fd['cost']), 'max_subscriptions': fd['max_subscriptions'], 'is_official': superuser} if edit is None: name = fd['name'] # If not secretariaat, then prefix name with the username if fd['owner'] == request.user.id: prefix = str(request.user.name) + '-' else: prefix = str(Es.by_id(fd['owner']).name) + '-' if (not superuser and not name.startswith(prefix) and ( edit is None or e.name != name)): name = prefix + name d['name'] = name d['is_open'] = True # default for new events e = subscr_Es.Event(d) else: e.update(d, request.user, save=False) e.save() render_then_email( 'subscriptions/' + ('event-edited' if edit else 'new-event') + '.mail.html', Es.by_name('secretariaat').canonical_full_email, { 'event': e, 'user': request.user }, headers={ 'In-Reply-To': e.messageId, 'References': e.messageId, }, ) return HttpResponseRedirect( reverse('event-detail', args=(e.name,))) elif edit is None: form = AddEventForm() else: d = e._data form = AddEventForm(d) ctx = {'form': form, 'edit': edit} return render(request, 'subscriptions/event_new_or_edit.html', ctx)
def event_new_or_edit(request, edit=None): superuser = '******' in request.user.cached_groups_names if edit is not None: e = subscr_Es.event_by_name(edit) if e is None: raise Http404 if not superuser and not request.user.is_related_with(e.owner) and \ not _id(e.owner) == request.user._id: raise PermissionDenied AddEventForm = get_add_event_form(request.user, superuser) if request.method == 'POST': form = AddEventForm(request.POST) if form.is_valid(): fd = form.cleaned_data if not superuser and not request.user.is_related_with( fd['owner']) and not fd['owner'] == request.user.id: raise PermissionDenied name = fd['name'] # If not secretariaat, then prefix name with the username if fd['owner'] == request.user.id: prefix = str(request.user.name) + '-' else: prefix = str(Es.by_id(fd['owner']).name) + '-' if (not superuser and not name.startswith(prefix) and ( edit is None or e.name != name)): name = prefix + name d = { 'date': date_to_dt(fd['date']), 'owner': _id(fd['owner']), 'description': fd['description'], 'description_html': kn.utils.markdown.parser.convert( fd['description']), 'mailBody': fd['mailBody'], 'subscribedByOtherMailBody': fd['subscribedByOtherMailBody'], 'confirmationMailBody': fd['confirmationMailBody'], 'everyone_can_subscribe_others': fd['everyone_can_subscribe_others'], 'has_public_subscriptions': fd['has_public_subscriptions'], 'humanName': fd['humanName'], 'createdBy': request.user._id, 'name': name, 'cost': str(fd['cost']), 'is_open': True, 'is_official': superuser} if edit is None: e = subscr_Es.Event(d) else: e._data.update(d) e.save() render_then_email('subscriptions/' + ('event-edited' if edit else 'new-event') + '.mail.txt', Es.by_name('secretariaat').canonical_full_email, { 'event': e, 'user': request.user}) return HttpResponseRedirect(reverse('event-detail', args=(e.name,))) elif edit is None: form = AddEventForm() else: d = e._data form = AddEventForm(d) ctx = {'form': form, 'edit': edit} return render_to_response('subscriptions/event_new_or_edit.html', ctx, context_instance=RequestContext(request))
def secr_add_user(request): if 'secretariaat' not in request.user.cached_groups_names: raise PermissionDenied if request.method == 'POST': form = AddUserForm(request.POST) if form.is_valid(): fd = form.cleaned_data # First, create the entity. u = Es.User({ 'types': ['user'], 'names': [fd['username']], 'humanNames': [{ 'human': fd['first_name'] + ' ' + fd['last_name'] }], 'person': { 'titles': [], 'nick': fd['first_name'], 'given': None, 'family': fd['last_name'], 'dateOfBirth': date_to_dt(fd['dateOfBirth']) }, 'email': fd['email'], 'address': { 'street': fd['addr_street'], 'number': fd['addr_number'], 'zip': fd['addr_zip'], 'city': fd['addr_city'] }, 'telephone': fd['telephone'], 'studies': [{ 'institute': _id(fd['study_inst']), 'study': _id(fd['study']), 'from': DT_MIN, 'until': DT_MAX, 'number': fd['study_number'] }], 'is_active': True, 'password': None }) logging.info("Added user %s" % fd['username']) u.save() # Then, add the relations. groups = ['leden'] if fd['incasso']: groups.append('incasso') else: groups.append('geen-incasso') for group in groups: Es.add_relation(u, Es.id_by_name(group, use_cache=True), _from=date_to_dt(fd['dateJoined'])) for l in fd['addToList']: Es.add_relation(u, Es.id_by_name(l, use_cache=True), _from=now()) # Let giedo synch. to create the e-mail adresses, unix user, etc. # TODO use giedo.async() and let giedo send the welcome e-mail giedo.sync() # Create a new password and send it via e-mail pwd = pseudo_randstr() u.set_password(pwd) giedo.change_password(str(u.name), pwd, pwd) render_then_email("leden/set-password.mail.html", u, { 'user': u, 'password': pwd }) # Send the welcome e-mail render_then_email("leden/welcome.mail.html", u, {'u': u}) Es.notify_informacie('adduser', request.user, entity=u._id) return HttpResponseRedirect( reverse('user-by-name', args=(fd['username'], ))) else: form = AddUserForm() return render(request, 'leden/secr_add_user.html', {'form': form})
def secr_add_user(request): if 'secretariaat' not in request.user.cached_groups_names: raise PermissionDenied if request.method == 'POST': form = AddUserForm(request.POST) if form.is_valid(): fd = form.cleaned_data nm = find_name_for_user(fd['first_name'], fd['last_name']) u = Es.User({ 'types': ['user'], 'names': [nm], 'humanNames': [{'human': fd['first_name']+' '+ fd['last_name']}], 'person': { 'titles': [], 'nick': fd['first_name'], 'given': None, 'family': fd['last_name'], 'gender': fd['sex'], 'dateOfBirth': date_to_dt( fd['dateOfBirth']) }, 'emailAddresses': [ {'email': fd['email'], 'from': DT_MIN, 'until': DT_MAX}], 'addresses': [ {'street': fd['addr_street'], 'number': fd['addr_number'], 'zip': fd['addr_zip'], 'city': fd['addr_city'], 'from': DT_MIN, 'until': DT_MAX}], 'telephones': [ {'number': fd['telephone'], 'from': DT_MIN, 'until': DT_MAX}], 'studies': [ {'institute': _id(fd['study_inst']), 'study': _id(fd['study']), 'from': DT_MIN, 'until': DT_MAX, 'number': fd['study_number']}], 'is_active': True, 'password': None }) logging.info("Added user %s" % nm) u.save() Es.add_relation(u, Es.id_by_name('leden', use_cache=True), _from=date_to_dt(fd['dateJoined'])) for l in fd['addToList']: Es.add_relation(u, Es.id_by_name(l, use_cache=True), _from=now()) Es.notify_informacie("%s is ingeschreven als lid." % ( u.humanName)) giedo.sync_async(request) request.user.push_message("Gebruiker toegevoegd. "+ "Let op: hij heeft geen wachtwoord "+ "en hij moet nog gemaild worden.") return HttpResponseRedirect(reverse('user-by-name', args=(nm,))) else: form = AddUserForm() return render_to_response('leden/secr_add_user.html', {'form': form}, context_instance=RequestContext(request))
def secr_add_user(request): if 'secretariaat' not in request.user.cached_groups_names: raise PermissionDenied if request.method == 'POST': form = AddUserForm(request.POST) if form.is_valid(): fd = form.cleaned_data # First, create the entity. u = Es.User({ 'types': ['user'], 'names': [fd['username']], 'humanNames': [{'human': fd['first_name'] + ' ' + fd['last_name']}], 'person': { 'titles': [], 'nick': fd['first_name'], 'given': None, 'family': fd['last_name'], 'dateOfBirth': date_to_dt( fd['dateOfBirth']) }, 'emailAddresses': [ {'email': fd['email'], 'from': DT_MIN, 'until': DT_MAX}], 'addresses': [ {'street': fd['addr_street'], 'number': fd['addr_number'], 'zip': fd['addr_zip'], 'city': fd['addr_city'], 'from': DT_MIN, 'until': DT_MAX}], 'telephones': [ {'number': fd['telephone'], 'from': DT_MIN, 'until': DT_MAX}], 'studies': [ {'institute': _id(fd['study_inst']), 'study': _id(fd['study']), 'from': DT_MIN, 'until': DT_MAX, 'number': fd['study_number']}], 'is_active': True, 'password': None }) logging.info("Added user %s" % fd['username']) u.save() # Then, add the relations. groups = ['leden'] if fd['incasso']: groups.append('incasso') else: groups.append('geen-incasso') for group in groups: Es.add_relation(u, Es.id_by_name(group, use_cache=True), _from=date_to_dt(fd['dateJoined'])) for l in fd['addToList']: Es.add_relation(u, Es.id_by_name(l, use_cache=True), _from=now()) # Let giedo synch. to create the e-mail adresses, unix user, etc. # TODO use giedo.async() and let giedo send the welcome e-mail giedo.sync() # Create a new password and send it via e-mail pwd = pseudo_randstr() u.set_password(pwd) giedo.change_password(str(u.name), pwd, pwd) render_then_email("leden/set-password.mail.txt", u, { 'user': u, 'password': pwd}) # Send the welcome e-mail render_then_email("leden/welcome.mail.txt", u, { 'u': u}) Es.notify_informacie('adduser', request.user, entity=u._id) return HttpResponseRedirect(reverse('user-by-name', args=(fd['username'],))) else: form = AddUserForm() return render_to_response('leden/secr_add_user.html', {'form': form}, context_instance=RequestContext(request))
def event_new_or_edit(request, edit=None): superuser = subscr_Es.is_superuser(request.user) if edit is not None: e = subscr_Es.event_by_name(edit) if e is None: raise Http404 if not superuser and not request.user.is_related_with(e.owner) and \ not _id(e.owner) == request.user._id: raise PermissionDenied AddEventForm = get_add_event_form(request.user, superuser, bool(edit)) if request.method == 'POST': form = AddEventForm(request.POST) if form.is_valid(): fd = form.cleaned_data # The superuser may do everything, and when you yourself are the # owner that's always okay too. if not superuser and fd['owner'] != request.user.id: # Check some more constraints. owner = Es.by_id(fd['owner']) if not request.user.is_related_with(owner): raise PermissionDenied( _('Gebruiker niet verwant met eigenaar')) if not subscr_Es.may_set_owner(request.user, owner): raise PermissionDenied(_('Mag deze eigenaar niet kiezen')) d = { 'date': date_to_dt(fd['date']), 'owner': _id(fd['owner']), 'description': fd['description'], 'description_html': kn.utils.markdown.parser.convert(fd['description']), 'has_public_subscriptions': fd['has_public_subscriptions'], 'may_unsubscribe': fd['may_unsubscribe'], 'humanName': fd['humanName'], 'createdBy': request.user._id, 'cost': str(fd['cost']), 'max_subscriptions': fd['max_subscriptions'], 'is_official': superuser } if edit is None: name = fd['name'] # If not secretariaat, then prefix name with the username if fd['owner'] == request.user.id: prefix = str(request.user.name) + '-' else: prefix = str(Es.by_id(fd['owner']).name) + '-' if (not superuser and not name.startswith(prefix) and (edit is None or e.name != name)): name = prefix + name d['name'] = name d['is_open'] = True # default for new events e = subscr_Es.Event(d) else: e.update(d, request.user, save=False) e.save() render_then_email( 'subscriptions/' + ('event-edited' if edit else 'new-event') + '.mail.html', Es.by_name('secretariaat').canonical_full_email, { 'event': e, 'user': request.user }, headers={ 'In-Reply-To': e.messageId, 'References': e.messageId, }, ) return HttpResponseRedirect( reverse('event-detail', args=(e.name, ))) elif edit is None: form = AddEventForm() else: d = e._data form = AddEventForm(d) ctx = {'form': form, 'edit': edit} return render(request, 'subscriptions/event_new_or_edit.html', ctx)
def event_new_or_edit(request, edit=None): superuser = '******' in request.user.cached_groups_names if edit is not None: e = subscr_Es.event_by_name(edit) if e is None: raise Http404 if not superuser and not request.user.is_related_with(e.owner) and \ not _id(e.owner) == request.user._id: raise PermissionDenied AddEventForm = get_add_event_form(request.user, superuser) if request.method == 'POST': form = AddEventForm(request.POST) if form.is_valid(): fd = form.cleaned_data if not superuser and not request.user.is_related_with( fd['owner']) and not fd['owner'] == request.user.id: raise PermissionDenied name = fd['name'] # If not secretariaat, then prefix name with the username if fd['owner'] == request.user.id: prefix = str(request.user.name) + '-' else: prefix = str(Es.by_id(fd['owner']).name) + '-' if (not superuser and not name.startswith(prefix) and (edit is None or e.name != name)): name = prefix + name d = { 'date': date_to_dt(fd['date']), 'owner': _id(fd['owner']), 'description': fd['description'], 'description_html': kn.utils.markdown.parser.convert(fd['description']), 'mailBody': fd['mailBody'], 'subscribedByOtherMailBody': fd['subscribedByOtherMailBody'], 'confirmationMailBody': fd['confirmationMailBody'], 'everyone_can_subscribe_others': fd['everyone_can_subscribe_others'], 'has_public_subscriptions': fd['has_public_subscriptions'], 'humanName': fd['humanName'], 'createdBy': request.user._id, 'name': name, 'cost': str(fd['cost']), 'is_open': True, 'is_official': superuser } if edit is None: e = subscr_Es.Event(d) else: e._data.update(d) e.save() render_then_email( 'subscriptions/' + ('event-edited' if edit else 'new-event') + '.mail.txt', Es.by_name('secretariaat').canonical_full_email, { 'event': e, 'user': request.user }) return HttpResponseRedirect( reverse('event-detail', args=(e.name, ))) elif edit is None: form = AddEventForm() else: d = e._data form = AddEventForm(d) ctx = {'form': form, 'edit': edit} return render_to_response('subscriptions/event_new_or_edit.html', ctx, context_instance=RequestContext(request))
def secr_add_user(request): if "secretariaat" not in request.user.cached_groups_names: raise PermissionDenied if request.method == "POST": form = AddUserForm(request.POST) if form.is_valid(): fd = form.cleaned_data # First, create the entity. u = Es.User( { "types": ["user"], "names": [fd["username"]], "humanNames": [{"human": fd["first_name"] + " " + fd["last_name"]}], "person": { "titles": [], "nick": fd["first_name"], "given": None, "family": fd["last_name"], "gender": fd["gender"], "dateOfBirth": date_to_dt(fd["dateOfBirth"]), }, "emailAddresses": [{"email": fd["email"], "from": DT_MIN, "until": DT_MAX}], "addresses": [ { "street": fd["addr_street"], "number": fd["addr_number"], "zip": fd["addr_zip"], "city": fd["addr_city"], "from": DT_MIN, "until": DT_MAX, } ], "telephones": [{"number": fd["telephone"], "from": DT_MIN, "until": DT_MAX}], "studies": [ { "institute": _id(fd["study_inst"]), "study": _id(fd["study"]), "from": DT_MIN, "until": DT_MAX, "number": fd["study_number"], } ], "is_active": True, "password": None, } ) logging.info("Added user %s" % fd["username"]) u.save() # Then, add the relations. groups = ["leden"] groups.append({"m": "mannen", "v": "vrouwen"}.get(fd["gender"])) if fd["incasso"]: groups.append("incasso") else: groups.append("geen-incasso") for group in groups: Es.add_relation(u, Es.id_by_name(group, use_cache=True), _from=date_to_dt(fd["dateJoined"])) for l in fd["addToList"]: Es.add_relation(u, Es.id_by_name(l, use_cache=True), _from=now()) # Let giedo synch. to create the e-mail adresses, unix user, etc. # TODO use giedo.async() and let giedo send the welcome e-mail giedo.sync() # Create a new password and send it via e-mail pwd = pseudo_randstr() u.set_password(pwd) giedo.change_password(str(u.name), pwd, pwd) render_then_email("leden/set-password.mail.txt", u, {"user": u, "password": pwd}) # Send the welcome e-mail render_then_email("leden/welcome.mail.txt", u, {"u": u}) Es.notify_informacie("adduser", request.user, entity=u._id) return HttpResponseRedirect(reverse("user-by-name", args=(fd["username"],))) else: form = AddUserForm() return render_to_response("leden/secr_add_user.html", {"form": form}, context_instance=RequestContext(request))