def form_valid(self, form): # special logic, we auto-fill the author and slug fields newsitem = form.save(commit=False) newsitem.author = self.request.user newsitem.slug = find_unique_slug(News, newsitem.title) newsitem.save() return super(NewsCreateView, self).form_valid(form)
def create_todolist_packages(form, creator=None): package_names = form.package_names() packages = form.packages() timestamp = now() if creator: # todo list is new, populate creator and slug fields todolist = form.save(commit=False) todolist.creator = creator todolist.slug = find_unique_slug(Todolist, todolist.name) todolist.save() else: # todo list already existed form.save() todolist = form.instance # first mark removed any packages not in the new list to_remove = set() for todo_pkg in todolist.packages(): if todo_pkg.pkg and todo_pkg.pkg not in packages: to_remove.add(todo_pkg.pk) elif todo_pkg.pkgname not in package_names: to_remove.add(todo_pkg.pk) TodolistPackage.objects.filter( pk__in=to_remove).update(removed=timestamp) # Add (or mark unremoved) any packages in the new packages list todo_pkgs = [] for package in packages: # ensure get_or_create uses the fields in our unique constraint defaults = { 'pkg': package, 'pkgbase': package.pkgbase, 'repo': package.repo, } todo_pkg, created = TodolistPackage.objects.get_or_create( todolist=todolist, pkgname=package.pkgname, arch=package.arch, defaults=defaults) if created: todo_pkgs.append(todo_pkg) else: save = False if todo_pkg.removed is not None: todo_pkg.removed = None save = True if todo_pkg.pkg != package: todo_pkg.pkg = package save = True if save: todo_pkg.save() return todo_pkgs
def form_valid(self, form): # special logic, we auto-fill the author and slug fields newsitem = form.save(commit=False) newsitem.author = self.request.user newsitem.slug = find_unique_slug(News, newsitem.title) newsitem.save() if newsitem.send_announce: ctx = { 'news': newsitem, } template = loader.get_template('news/news_email_notification.txt') send_mail('[arch-announce] %s' % newsitem.title, template.render(ctx), '"Arch Linux: Recent news updates: %s" <*****@*****.**>' % newsitem.author.get_full_name(), ['*****@*****.**'], fail_silently=True) return super(NewsCreateView, self).form_valid(form)
def form_valid(self, form): # special logic, we auto-fill the author and slug fields newsitem = form.save(commit=False) newsitem.author = self.request.user newsitem.slug = find_unique_slug(News, newsitem.title) newsitem.save() if newsitem.send_announce: ctx = { 'news': newsitem, } template = loader.get_template('news/news_email_notification.txt') send_mail( '[arch-announce] %s' % newsitem.title, template.render(ctx), '"Arch Linux: Recent news updates: %s" <*****@*****.**>' % newsitem.author.get_full_name(), ['*****@*****.**'], fail_silently=True) return super(NewsCreateView, self).form_valid(form)
def form_valid(self, form): # special logic, we auto-fill the author and slug fields newsitem = form.save(commit=False) newsitem.author = self.request.user newsitem.slug = find_unique_slug(News, newsitem.title) newsitem.save() if newsitem.send_announce: ctx = { 'news': newsitem, } headers = dict() if settings.MAILMAN_PASSWORD: headers['Approved'] = settings.MAILMAN_PASSWORD template = loader.get_template('news/news_email_notification.txt') EmailMessage( subject=f'[arch-announce] {newsitem.title}', body=template.render(ctx), from_email=f'"Arch Linux: Recent news updates: {newsitem.author.get_full_name()}" <{settings.ANNOUNCE_EMAIL}>', to=[settings.ANNOUNCE_EMAIL], headers=headers).send() return super(NewsCreateView, self).form_valid(form)