It does not really do to simply model rebellions by dwarves according to whether they personally are happy, because that basically means we can do whatever we wish as long as we give them nice dining halls and plenty of booze, which is not how things realistically would work. As a solution to this problem I propose that site governments be given a corporate personality. This would mean that the fortress would have an 'alignment' in terms both personality and values, which contrasts with that of the individual dwarves.
To begin with the values are set to that of our civilization and the personality is the mean personality of of it's dominant species (so humans are set to 50 at everything). Various actions and abstract decisions made by the player in play would adjust the corporate personality/values of the government in a given direction. If an individual dwarf personality and values deviate from that of the corporate personality, then that dwarf's loyalty to his government is undermined, causing him to become prone to rebellion.
The rebellions themselves work in the powderkeg/spark fashion. An individual dwarf decides to rebel and keeps this fact initially secret from the player. Dwarves with subordinate positions not only can lead rebellions while retaining their position but they are far more likely to lead rebellions than the average dwarf is. The ultimate leaders of the site cannot lead rebellions, but instead becoming sufficiently disloyal causes them to resign from the government. Subordinate position holders that are particularly honest in their values will also resign the government in a similar fashion if they become sufficiently disloyal/are recruited into a rebellion. It goes without saying that you cannot reappoint a resigned leader to his former position.
Rebellions start with an individual, aside from being a subordinate position holder another factor that encourages rebellion leader is having lots of friends. The rebel leader will recruit followers from the disloyal dwarves, whether they are happy or not in the course of normal conversation and socializing, which will be invisible to the site government. Once the rebellion has sufficient numbers and strength it will make a bid for power, loyal dwarves will fight for the government, disloyal dwarves even if not already recruited into the rebellion will oppose the government and dwarves who have mediocre loyalty will sit it out.
Squads will follow the lead of their commander, the difference between squad members and ordinary dwarves is that mediocre loyalty squad members follow whatever stance taken by their commander, while both loyal and disloyal squad members will follow the lead of their commander should he decide to stay neutral. The outcome of a successful rebellion in a player's site depends upon the state of the site, in all instances a successful rebellion causes the site to become unplayable but how they behave depends upon how complete the site is.
If the site is considered incomplete for the current population, that is to say there is insufficient furniture, rooms, constructed space etc, then the rebel dwarves will abandon the site and build a new site nearby, this will be a hillocks if the fortress population is small; the original site becomes a ruin and new dwarves can be moved in by the player (but not by anyone else). If the site is considered complete for the current population then they will continue to live there and can be visited in adventure mode; but the population will be capped at the total number of dwarves supported by the architectural layout when the player was overthrown.