def _send_news(self, period, **kwargs): dtstart, dtend = self.range(**kwargs) recipient_to_events = {} for event in self._all_events(dtstart, dtend): recipients = self._recipients(event, period) for recipient in recipients: events = recipient_to_events.setdefault(recipient.id, []) events.append(event) for uid, events in recipient_to_events.items(): user = User.get_byid(uid) events = [ev for ev in events if (ev.user is None or (ev.user.id != uid and ev.context not in user.ignored_subjects and not ev.isEmptyFile()))] # process moderation events events = [ev for ev in events if not isinstance(ev, ModeratedPostCreated) or ev.context.is_admin(user)] if not events: continue sections = self._get_sections(events) subject = self._subject(sections, events) extra_vars = {'sections': sections, 'subject': subject} text = render('/emails/news_text.mako', extra_vars=extra_vars) html = render('/emails/news_html.mako', extra_vars=extra_vars) msg = EmailMessage(subject, text, html) log.info("Sent to <%s> to %s" % (subject, user.fullname)) user = user.send(msg)
def update_membership(self, group): if hasattr(self, 'form_result'): user = User.get_byid(self.form_result.get('user_id', None)) membership = GroupMember.get(user, group) if membership is not None: role = self.form_result.get('role', 'member') if role == 'not-member': meta.Session.delete(membership) elif role in ['member', 'administrator']: role = GroupMembershipType.get(role) membership.role = role h.flash(_("The status of the user %(fullname)s was updated.") % {'fullname': user.fullname}) else: h.flash(_("Problem updating the status of the user.")) meta.Session.flush() meta.Session.expire(group) if group.administrators == 0: h.flash(_('The group must have at least one administrator!')) meta.Session.rollback() else: meta.Session.commit() else: h.flash(_("Problem updating the status of the user. Cannot find such user.")) redirect(url(controller="group", action="members", id=group.group_id))
def find_user(id): """Get's user object by specified id or url_name.""" try: id = int(id) return User.get_byid(id) except ValueError: # it may be url_name then return meta.Session.query(User).filter_by(url_name=id).first()
def current_user(): from ututi.model import User try: login = session.get('login', None) if login is None: return None login = int(login) except ValueError: return None session_secret = session.get('cookie_secret', None) cookie_secret = request.cookies.get('ututi_session_lifetime', None) if session_secret != cookie_secret: session.delete() response.delete_cookie('ututi_session_lifetime') return None return User.get_byid(login)