<feed xmlns='http://www.w3.org/2005/Atom'>
<title>cccms/db/seeds, branch master</title>
<subtitle>[no description]</subtitle>
<id>http://erdgeist.org/gitweb/cccms/atom?h=master</id>
<link rel='self' href='http://erdgeist.org/gitweb/cccms/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/'/>
<updated>2026-08-09T14:03:40Z</updated>
<entry>
<title>Drop nodes.external_url</title>
<updated>2026-08-09T14:03:40Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-08-09T14:03:40Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=0f4288d91de7b48f7bbed832ca80246b0055cc64'/>
<id>urn:sha1:0f4288d91de7b48f7bbed832ca80246b0055cc64</id>
<content type='text'>
The column moved to page.rb and was now written only by publish_draft!
and by the chapter seed, and read by nothing.

lib/tasks/pages.rake goes with it. backfill_external_url reads the dropped
column. backfill_address is spent and no longer safe to re-run.
</content>
</entry>
<entry>
<title>Replace awesome_nested_set with a plain parent_id-based NestedTree concern</title>
<updated>2026-07-07T00:46:37Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-07T00:46:37Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=7b6af89509e8439fe2474e623ee97e4db67ab011'/>
<id>urn:sha1:7b6af89509e8439fe2474e623ee97e4db67ab011</id>
<content type='text'>
Root-caused this session: appending a child to any node never widened
that parent's own rgt boundary, on the pinned revision (Gemfile tracked
main directly, chasing a too-conservative gemspec constraint - not, as
first assumed, a deliberate pin to avoid a known bug). Reproduced
cleanly on a single ordinary create with no concurrency and no bulk
operation involved, confirmed via the gem's own SetValidator, then
confirmed as the root cause of nodes_controller_test.rb's 3 long-standing
"pre-existing" failures - not three separate mysteries, one bug.

admin_controller's sitemap needed its own real conversion, not just a
drop-in: awesome_nested_set's lft column implicitly provided correct
depth-first tree order for free, which the old code combined with a
separate class-level each_with_level iterator. Both replaced by one
method, self_and_descendants_ordered_with_level, computing an ordered
[node, level] list in a single query-then-walk pass - checked against
the actual view template first (admin/index.html.erb) rather than
assumed, since it relies on list order alone to render correct visual
nesting.

lft/rgt/depth columns intentionally left in schema, unused - dropping
them is a separate, deliberately deferred migration once this is proven
running for a while, not bundled with the behavior change.
</content>
</entry>
<entry>
<title>Correct chapters seed against live ccc.de pages</title>
<updated>2026-07-03T00:01:57Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-03T00:01:57Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=e5e8212db58ec6ed7421ed95a85f6b654e8e300a'/>
<id>urn:sha1:e5e8212db58ec6ed7421ed95a85f6b654e8e300a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ascade-destroy occurrences; support events without a fixed start time</title>
<updated>2026-07-03T00:00:53Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-03T00:00:53Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=bff34fb568f7a83c03e2e51b458a1e44b67b794e'/>
<id>urn:sha1:bff34fb568f7a83c03e2e51b458a1e44b67b794e</id>
<content type='text'>
- Event#occurrences is now dependent: :destroy, so destroying an Event
  (directly, or via Node's cascade) removes its Occurrence rows instead
  of orphaning them.
- Renamed generate_occurences -&gt; generate_occurrences (typo fix);
  callback and method updated together.
- Occurrence.generate returns early when event.start_time is nil, so a
  chapter with no sourced time produces zero occurrences instead of a
  guessed one.
- seed_chapter no longer falls back to 19:00 when start_time is absent;
  base_time/end_time are nil in that case.

Database-level foreign key cascade on occurrences.event_id is still
pending.
</content>
</entry>
<entry>
<title>Remove review notes file</title>
<updated>2026-07-01T22:14:22Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-01T22:14:22Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=ab7e3e803c88d2a0a0b82aecd939f53b095df4eb'/>
<id>urn:sha1:ab7e3e803c88d2a0a0b82aecd939f53b095df4eb</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rewrite chapter seeds: multi-event support, drop is_primary, fix data</title>
<updated>2026-07-01T22:13:28Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-07-01T22:13:28Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=db9bd097ec54964a93efccd3056bfcb4a9484052'/>
<id>urn:sha1:db9bd097ec54964a93efccd3056bfcb4a9484052</id>
<content type='text'>
- seed_chapter now accepts events: array instead of flat rrule:/
  start_time: params; each event hash supports rrule:, start_time:,
  tag_list:, location:, duration_hours:
- Chapters with multiple open days now represented correctly
  (Stralsund: Thursday Chaostreff + 2nd/4th Saturday OpenSpace;
  Hamburg: 2nd Friday + last Tuesday; Stuttgart: 1st Tuesday +
  3rd Wednesday; Freiburg: Mon+Tue open + biweekly Plenum;
  Backnang: 3rd Sunday + 1st Tuesday; Tübingen: last Sunday +
  2nd Monday at different venues)
- is_primary removed from migration entirely — replaced by
  tag_list: 'open-day' on events
- Stale EN descriptions corrected: Berlin, Darmstadt, Erlangen,
  Essen, Freiburg, Göttingen, Hamburg, Hannover, Karlsruhe,
  Paderborn, Stuttgart, Ulm
- chaostreff-stralsund duplicate entry removed (Port39 is erfa only)
</content>
</entry>
<entry>
<title>Add chapter_detail template with events and external URL rendering</title>
<updated>2026-06-30T17:22:24Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-29T14:26:31Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=4705ef970469a852c7bdb4c097ba748e972c8f63'/>
<id>urn:sha1:4705ef970469a852c7bdb4c097ba748e972c8f63</id>
<content type='text'>
New public page template for erfa and chaostreff nodes. Renders the
node's external_url and lists associated events below the page content.

Seed script updated to set template_name: 'chapter_detail' on all
chapter drafts so the template is applied on publish.
</content>
</entry>
<entry>
<title>Phase 2: chapter nodes, aggregate partial, fixes</title>
<updated>2026-06-30T17:22:24Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-28T02:43:28Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=4dd49b1eebb0a99d3aee66b7eca539c87a9c6332'/>
<id>urn:sha1:4dd49b1eebb0a99d3aee66b7eca539c87a9c6332</id>
<content type='text'>
- _chapter.html.erb: new partial for erfa/chaostreff aggregated lists;
  renders title, location, external_url, sanitized body
- content_helper: fix aggregate attr regex to allow hyphens in values
  (erfa-detail tag was silently dropped); add debug logging (remove)
- page.rb: suppress libxml stderr noise in rewrite_links_in_body
- db/seeds/chapters.rb: one-shot seed script for erfa and chaostreff
  chapter nodes under parent nodes 548/549; creates bilingual pages,
  external_url, primary events with RRULEs where known
  Note: run Node.rebuild!(false) after execution to fix lft/rgt values
</content>
</entry>
<entry>
<title>Phase 1: standalone events, external_url on nodes</title>
<updated>2026-06-30T17:22:24Z</updated>
<author>
<name>erdgeist</name>
<email>erdgeist@erdgeist.org</email>
</author>
<published>2026-06-30T17:15:22Z</published>
<link rel='alternate' type='text/html' href='http://erdgeist.org/gitweb/cccms/commit/?id=a7a6ad786eeb9f94f7882462bccbdd31e1bb4743'/>
<id>urn:sha1:a7a6ad786eeb9f94f7882462bccbdd31e1bb4743</id>
<content type='text'>
- Migration: node_id nullable on events and occurrences, add
  title/description/is_primary to events, external_url to nodes
- Existing events marked is_primary: true (were all 1:1 with nodes)
- Node: has_one :event -&gt; has_many :events
- Event: belongs_to :node optional, validates title presence for
  standalone events, is_primary uniqueness scoped to node_id,
  display_title helper falling back through node title
- Occurrence: belongs_to :node optional, summary falls back to
  event.display_title
- nodes_helper: event_information uses events.first (interim; will
  be replaced in Phase 3 event UI)
- Tests: fix node.event -&gt; node.events.first in event_test
</content>
</entry>
</feed>
