text:
Der Breitschwanz-Paradieshopf (Epimachus fastuosus), auch Schwarzbauch-Paradieshopf, Breitschwanz-Sichelhopf oder Breitschwanz-Paradiesvogel genannt, ist eine Art aus der Gattung  Epimachus innerhalb der Familie der Paradiesvögel (Paradisaeidae). Er kommt ausschließlich auf Neuguinea vor.

Die Art wird von der IUCN als gefährdet (vulnerable) eingestuft und zählt damit zu den am meisten gefährdeten Paradiesvogelarten. Es werden mehrere Unterarten unterschieden.

Merkmale

Körperbau und -maße
Der Breitschwanz-Paradiesvogel ist mit einer Körperlänge von bis zu 63 Zentimeter einer der größten Paradiesvogel. Inklusive des stark verlängerten mittleren Steuerfederpaars, erreichen die Männchen sogar eine Länge von 110 Zentimeter. Das übrige Schwanzgefieder misst 34 bis knapp 54 Zentimeter, so dass das mittlere Steuerfederpaar dieses deutlich überragt. Auch das Weibchen, das mit einer durchschnittlichen Körperlänge von 55 Zentimeter deutlich kleiner bleibt, hat ein verlängertes mittleres Steuerfederpaar. Das verlängerte Steuerfederpaar hat bei ihr eine Länge zwischen 27 und 32 Zentimeter, das übrige Schwanzgefieder misst zwischen 20 und 25 Zentimeter. Der Schnabel ist bei den Männchen 7,3 bis 8 Zentimeter lang, bei den weichen dagegen 6,6 bis 7,7 Zentimeter. Weibchen wiegen zwischen 160 und 235 Gramm, die Männchen sind mit 250 bis 280 Gramm etwas schwerer. Obwohl sie eine größere Körperlänge als der Kräuselparadieskrähe haben, erreichen sie bei weitem nicht das Gewicht dieser bis zu 440 Gramm schweren Paradiesvogelart.

Männchen
Das Männchen hat einen schwarzen Kopf, die schuppenartig geformten Federn des Scheitels und der Ohrdecken glänzen bei bestimmtem Lichteinfall jedoch metallisch grünblau bis violett und magenta. Die Federn an Kinn und Kehle haben dagegen kaum Glanz. Die übrige Körperoberseite vom Mantel bis zu den Oberschwanzdecken ist samtschwarz mit einem violetten Glanz. Entlang der Mitte der Körperoberseite verläuft jedoch ein Streif großer, schuppenartig geformter Federn, die blaugrün schimmern. Bis auf das mittlere Steuerfederpaar ist das Schwanzgefieder auf der Oberseite schwarzbraun mit einem violetten Schlimmer. Das mittlere, stark verlängerte Steuerfederpaar glänzt dagegen je nach Lichtverhältnissen metallisch blauviolett, violett oder magenta.

Die Vorderbrust ist schwarzbraun, geht dann in eine etwas hellere und braunere untere Brust über. Der Bürzel und die Unterschwanzdecken sind sepia. Die verlängerten Federn an den Bauch- und Bürzelseiten sind samtschwarz mit violett bis blaugrün glänzenden Spitzen. Der Schnabel ist glänzend schwarz, die Iris ist leuchtend rot, die Beine und Füße sind schwarzgrau, das Schnabelinnere ist leuchtend gelb.

Subadulte Männchen
Noch nicht geschlechtsreife Männchen ähneln zunächst den Weibchen und wechseln dann zunehmend in das Gefieder adulter Vögel. Einzelne Individuen können dabei ein sehr stark geflecktes Gefieder aufweisen, dass teils die braunen Gefiedertöne des Weibchens, teils das samtschwarze und irisierende Gefieder der Männchen aufweisen. Auf Basis von Bälgen in Museen hat man geschlossen, dass die heranwachsenden Männchen nicht unmittelbar das lange, mittlere Steuerfederpaar adulter Männchen entwickeln. Es gibt eine Zwischenform, die sie mindestens eine Brutzeit lang zeigen. Dieses Schwanzgefieder ähnelt dem des Weibchens, hat aber auf jeder Federfahne einen großen, länglichen Flecken, der stark irisiert.

Weibchen
Vorderkopf, Scheitel und Nacken des Weibchens sind kastanienbraun. Die Zügel, die Gesichtsseiten, das Kinn und die Kehle sind sepia. Die Körperoberseite ist ansonsten olivfarben mit einem etwas intensiveren Braunton auf dem Mantel und den Oberschwanzdecken.

Die Vorderbrust ist sepia mit einer feinen helleren Querbänderung. Diese Querbänderung wird in Richtung Bürzel zunehmend breiter. Das Schwanzgefieder ist auf der Unterseite erdfarben, das mittlere Steuerfederpaar hat auffällig helle Federschäfte.

Verbreitungsgebiet der Unterarten und Lebensraum
Der Breitschwanz-Paradieshopf gehört zu den Paradiesvögeln mit einem vergleichsweise großen Verbreitungsgebiet: Es erstreckt sich vom Vogelkop, einer Halbinsel im äußersten Nordwesten Neuguineas bis zu den Hochebenen im Osten Neuguineas. Allerdings fehlt der Breitschwanz-Paradieshopf auf der südöstlichen Halbinsel.

Die einzelnen Unterarten besiedeln folgende Regionen:
  E. f. fastosus (, 1783) – Nominatform mit Vorkommen auf dem Vogelkop (Tamrau-Gebirge und Arfak-Gebirge) im Nordwesten von Neuguinea.
 E. f. atratus ( & , 1911) – Gebirge der Wandammenhalbinsel und die Gebirgszüge im zentralen Landesinnere von Neuguinea bis zur Kratke Range im Osten von Neuguinea
 E. f. ultimus , 1969 – Bewani-Gebirge und Torricelli-Gebirge im Norden von Neuguinea.
Der Breitschwanz-Paradieshopf kommt nur in Bergwäldern vor und besiedelt vorwiegend Höhenlagen zwischen 1800 und 2150 Meter. Er ist gelegentlich auch noch in Höhenlagen von 1280 Metern und in Höhenlagen bis 2550 Metern vor. Dort, wo sich das Verbreitungsgebiet des Breitschwanz-Paradiesvogels mit dem des nahe verwandten Schmalschwanz-Paradieshopfes überlappt, besiedelt der Breitschwanz-Paradieshopf die niedrigeren Höhenlagen.

Lebensweise
Breitschwanz-Paradieshopfe fressen Früchte und Gliederfüßer. Vermutlich gehören auch kleine Wirbellose zu ihrem Nahrungsspektrum. Sie decken jeweils etwa zur Hälfte ihren Nahrungsbedarf mit tierischer und pflanzlicher Nahrung ab. Ihre Nahrung finden sie überwiegend im Baumkronenbereich. Um an Gliederfüßer zu gelangen, reißen sie auch Rindenstücke und Epiphyten von den Bäumen. Während der Nahrungssuche hüpfen sie von Ast zu Ast oder klettern an den Baumstämmen empor. Bei in Gefangenschaft gehaltenen Breitschwanz-Paradieshopfen hat man außerdem beobachtet, dass sie Kerne und Steine von Früchten wieder auswürgen. Grundsätzlich leben die adulten Männchen heimlicher als die Weibchen.

Fortpflanzung
Wie die überwiegende Zahl der Paradiesvögel ist auch der Breitschwanz-Paradieshopf polygyn, das heißt, das Männchen paart sich nach Möglichkeit mit mehreren Weibchen. Das jeweilige Weibchen zieht alleine den Nachwuchs groß. Die Männchen verteidigen jeweils ein Revier, in dem sich ein oder mehrere traditionelle Balzplätze befinden. Bei diesen Balzplätzen handelt es sich um einzelne Ansitzwarten hoch oben im Baumkronenbereich.

Balz
Die Balz des Männchens ist bislang vergleichsweise wenig beobachtet worden. Entsprechend den bisherigen Beobachtungen leitet das Männchen die Balz mit wenigen lauten Rufen ein. Dann werden die verlängerten Federn des Brustgefieders und Körperseiten gesträubt und auf dem Ast eine fast waagerechte Körperhaltung eingenommen. Während dieser Haltung gibt das Männchen leise Töne von sich, die mit dem Geräusch verglichen werden, dass entsteht, wenn man schnell gegen einen leeren Papierkarton klopft. Alternativ sind sie mit dem Geräusch von einem weit entfernten Maschinengewehr verglichen worden. Die fast waagerechte Körperhaltung wird nur für wenige Sekunden aufrechterhalten. Das Männchen richtet sich dann wieder auf und ruft du dug... du du, um dann wieder für einige Sekunden lang die waagerechte Körperhaltung einzunehmen. Dies wird bis zu fünf Mal wiederholt. Während der waagerechten Körperhaltung bilden die die blaugrün irisieren Spitzen des verlängerten Brustgefieders, der verlängerten Flankenfedern und das blaugrün irisierende mittlere Steuerfederpaar eine Linie.

Die Männchen zeigen dieses Balzelement auch, wenn kein Weibchen anwesend ist. Die Balzphase, die unmittelbar der Paarung vorangeht, ist bislang nicht beschrieben.

Nest, Gelege, Aufzucht der Nestlinge
Es sind bislang nur wenige Nester in freier Wildbahn gefunden worden. Ein Nest, das am 1. November 1978 in 2030 Meter Höhe am Mount Giluwe gefunden wurde, war ausschließlich aus Orchideenstängeln, einigen Schwingpflanzenteilen und Moos gebaut. Nach den Berichten von Mitgliedern der indigenen Völkern dieser Region bauen die Weibchen des Breitschwanz-Paradieshopfes ihre Nester im Zeitraum von Februar und April und bevorzugen Schraubenbäume als Nistbaum.

Über die Brutzeit und die Zeitdauer vom Schlupf der Nestlinge bis zu ihrem Ausfliegen ist nichts bekannt.

Hybride mit anderen Paradiesvögeln

Die Neigung von Paradiesvögeln in der Natur mit anderen Angehörigen ihrer Familie zu hybridisieren ist bereits zu Beginn des 20. Jahrhunderts von Anton Reichenow und damit fast früher als für jede andere Vogelfamilie beschrieben worden. Es sind dabei meistens die Männchen, die mit ihrem stark abweichenden Gefieder auffallen. Gelegentlich werden sie zunächst als eigenständige Art beschrieben. So gilt das Typusexemplar, das ursprünglich als Pseudastrapia lobata beschrieben wurde, mittlerweile als Hybride zwischen Breitschwanz-Paradieshopf und Langschwanz-Paradigalla (Paradigalla carunculata). Ein anderes Exemplar ist aus einer Paarung von Breitschwanz-Paradieshopf und Kragenparadiesvogel (Lophorina superba) hervorgegangen. Der Kragenparadiesvogel zählt dabei zu den Arten, die sich häufiger als jede andere Paradiesvogelart mit einer anderen Art paart.

Breitschwanz-Paradieshopf und Mensch
Die Federn des Breitschwanz-Paradieshopfes werden von indigenen Völkern Neuguineas zu traditionellem Kopf- und Körperschmuck verarbeitet. Den Federn wird zum Teil erheblicher Wert beigemessen: In den 1990er Jahren wurden in dem Gebiet rund um den Tagebau Ok Tedi, im Südwesten von Papua-Neuguinea, für einen Balg des Breitschwanz-Paradieshopfes 250 Kina gezahlt, während zur gleichen Zeit in dieser Region die Bälge anderer Paradiesvogelarten für 5 bis 20 Kina gehandelt wurden. Der Jagddruck auf den Breitschwanz-Paradieshopf nahm durch die Entwicklung der Mine erheblich zu, weil unter anderem auch Gewehre in der Region eingeführt wurden. In anderen Regionen ist in den 1990er Jahren ein Jagdverbot erlassen worden, wo – nachdem einige Männer für die Tötung von Breitschwanz-Paradieshopfen bestraft wurden – der Bestand dieser Art sich teils dramatisch erholte. Grundsätzlich gilt jedoch, dass diese Art überall dort erheblich gefährdet ist, wo die im Hochland lebende Bevölkerungszahl zunimmt. Dies zeigt sich auch im direkten Vergleich mit dem nahe verwandten Schmalschwanz-Paradieshopf. Dieser wird ebenfalls von der indigenen Bevölkerung Neuguineas wegen seiner auffälligen Schmuckfedern bejagt und kann in Regionen mit geeigneten Lebensbedingungen selten sein, weil der Jagddruck entsprechend groß ist. Der Schmalschwanz-Paradieshopf ist jedoch im Vergleich zum Breitschwanz-Paradieshopf ein vergleichsweise häufiger Vogel, der von der IUCN als nicht gefährdet (least concern) eingestuft wird. Ursache dafür ist, dass der Schmalschwanz-Paradieshopf höhere Lagen als der Breitschwanz-Paradieshopf besiedelt und damit in Regionen vorkommt, die weit über den landwirtschaftlichen Flächen und Gärten der indigenen Bevölkerung liegt.

Der Breitschwanz-Paradieshopf ist bislang nur sehr vereinzelt in Menschenobhut gehalten worden.

Literatur
 Bruce M. Beehler, Thane K. Pratt: Birds of New Guinea. Distribution, Taxonomy, and Systematics. Princeton University Press, Princeton 2016, ISBN 978-0-691-16424-3.
 Clifford B. Frith, Bruce M. Beehler: The Birds of Paradise – Paradisaeidae. Oxford University Press, Oxford 1998, ISBN 0-19-854853-2.
 P. J. Higgins, J. M. Peter und S. J. Cowling: Handbook of Australian, New Zealand & Antarctic Birds: Volume 7 Boatbill to Starlings, Part A: Boatbill to Larks. Oxford University Press, Melbourne 2006, ISBN 978-0-195-55884-5.
 Eugene M McCarthy: Handbook of Avian Hybrids of the World. Oxford University Press, Oxford 2006, ISBN 0-19-518323-1.

Weblinks

Einzelbelege

Paradiesvögel


text:
Q: How to set up exit link? how to set up outgoing link when click another link.
domain A to domain B but domain A is still conserved in the front.
example visit rojadirecta

A: I'm going to take a stab in the dark as your question was very unclear.
I'm guessing that you want to open a link in a new window/tab?
Your link

This tells the browser that you want to open the link in a new window whilst leaving the current page as is.

redpajama_set_name: RedPajamaStackExchange


text:
World's deepest fish filmed eight kilometres down in the Mariana Trench - video
Scientists at the University of Aberdeen have set a new record for the world's deepest fish, filming a type of snailfish at a depth of 8145m in the Mariana trench in the western Pacific Ocean. The team completed an unprecedented 92 deployments across the entire trench, from depths of 5000-10,600 metres, filming species of fish. The species of snailfish discovered at the record depth had never been seen before
Source: University of Aberdeen
Fri 19 Dec 2014 08.05 EST First published on Fri 19 Dec 2014 08.05 EST

redpajama_set_name: RedPajamaCommonCrawl


Set in stunning Swiss mountain scenery, Lake Lucerne is also known as the Lake of the Four Forested Cantons, overlooked by the Uri, Underwalden and Schwyz areas. The lake is the fourth largest in Switzerland at 44 square miles and has a uniquely beautiful location. Nestled in between mountains, it offers the opportunity to take in spectacular views of the area.
Sometimes called the heart of Switzerland, the lake holds an important place in Swiss history. The meadow above the lake, Rütli, was the setting for the oath taken in 1291, which laid the foundation of the Swiss Federation. On August 1st that year, the Rütli Oath was taken to form a confederation and this day is now celebrated each year as the Swiss National Holiday.
Starting at the Rütli meadow is the famous Swiss Path, a themed hiking trail, which allows walkers to discover moments in Switzerland's history. The trail is 35 kilometers long and will take you to different historical locations, while spreading out incredible scenery at your feet. If you enjoy nature, then you can walk the whole trail or just certain stages. Many sections are wheelchair friendly and easy to navigate.
As a gateway to central Switzerland, boat trips on Lake Lucerne are popular with those aiming to travel elsewhere in North-Central Switzerland. A trip out on the water is also perfect if you are looking to experience the spectacular scenery from the water. Sail on the lake, take a charter yacht or cruise on board a restored paddleboat steamer. The paddleboat steamers offer stops at the villages that hug the shoreline and you can even hire them out for business or personal events.
If you are booking a trip to Lucerne, stay in comfortable surroundings right on the lake's shores at the Radisson Blu Hotel, Lucerne. Explore the region's beautiful scenery from the hotel's central location and sleep in style.


Dr. McAuley holds a PhD in psychology and has practiced as an occupational psychologist in Hong Kong for over thirty years, offering career and general life counseling to a diverse range of clients. She has been teaching mindfulness for stress reduction and cultivating emotional balance since 2003. Between 2003 and 2012 she completed all requirements to attain CFM Certified MBSR Teacher status through the Centre for Mindfulness at UMass create by the originator of the MBSR course, Jon Kabat-Zinn; in 2010 she completed the 6 week residential Cultivating Emotional Balance (CEB) Teacher Training in Phuket, Thailand; and in 2011 she completed The Potential Project Teacher Training in Singapore.


PHOENIX (KNXV/CNN) – A family is grieving after their neighbor reportedly "euthanized" their dog with a sledgehammer after she had been hit by a car.
The Garcia family's dog Beau was hit by a car Sunday night, witness Jessica Headley says.
"She was able to crawl to the porch. She wasn't yelping, but she was panting hard," Headley said.
The family wasn't home, and Headley says she planned to take Beau to the veterinarian when a neighbor came over with a sledgehammer.
"I was like, 'What are you doing? You can't do that,'" Headley said.
Headley says the neighbor told her "the dog was suffering" and needed to be killed.
A dog owner herself, Headley tried to keep the man away from Beau but couldn't.
The man hit Beau twice with the hammer, killing her, Headley says.
"That's the last thing she saw was some stranger with a sledgehammer? That's horrible," Headley said.
Police say there haven't been any charges or arrests.
"I wish he would think twice about doing what he did to our dog," said Jesse Garcia, one of Beau's owners.
Copyright 2017 KNXV, Garcia Family via CNN. All rights reserved.


George Washington Toma Tv and Appliance in East Weymouth, MA is an authorized dealer of Broan Products. Broan-NuTone LLC leads the industry with forward-thinking residential ventilation products, customized climate, communications and storage solutions and superior customer service. Broan-NuTone is proud to acknowledge that over 80% of homeowners in the United States rely on one or more BROAN®, NuTone®, or BEST® products every day to provide them with superior indoor air quality and lifestyle conveniences.
So if you are looking for Broan products in East Weymouth, Brockton, Stoughton, Easton, Bridgewater, Quincy, Braintree, Hingham, Rockland, Randolph and Scituate, or if you have any questions about Broan products, please feel free to call us at (781) 335-6435 or simply stop by George Washington Toma Tv and Appliance at any time and we would be glad to help you.
Looking for Broan at George Washington Toma Tv and Appliance in East Weymouth, MA?


text:
Dune's Hair Designer on Timothée Chalamet's Princely Mop, Zendaya's Curls, and More
Home 2021 October 22 Dune's Hair Designer on Timothée Chalamet's Princely Mop, Zendaya's Curls, and More
1968 had 2001: A Space Odyssey, '77 had Star Wars, and '82 had Blade Runner (the first one) - this year, we get Dune, Denis Villeneuve's version, at least. Sci-fi spectacles like Villeneuve's reimagining of the Frank Herbert novel don't come around often and rarely star so many Hollywood heavyweights, and even fewer feature heads of hair quite as famous as Timothée Chalamet's.
Despite it taking place about 10,000 years into the future, this adaptation of Dune feels more grounded and real than many of its genre predecessors. It may basically be an intergalactic version of Game of Thrones, but the characters - from Chalamet's Paul Atreides to Zendaya's Chani - don't necessarily look like they're living in your typical sci-fi world. Yes, there are giant sandworms, mystical prophecies, and space travel, but there's an absence of the typical futuristic and borderline-couture garb many sci-fi films are known for. Instead, Chalamet's natural mop largely lends to the boyish charm Paul possesses as the film's young hero, while Zendaya's loose and wind-blown curls paint the picture of what living on a desert planet could actually be like.
Villeneuve spent most of his life dreaming of making his iteration of Herbert's story and the script surely says enough - after all, the film is almost three hours long - but what can't be said on paper is said through the characters' appearances, which Villeneuve left up to hair and makeup designer, Donald Mowat. Ahead, Mowat shares his BTS secrets about bringing these characters to life alongside Villeneuve, the missing redheaded characters, and Chalamet's "problematic" hair.
Silab rejoint l'UEBT et réaffirme ses engagements en matière de biodiversité
Le fabricant français d'ingrédients cosmétiques naturels vient d'adhérer à l'Union for ethical biotrade (UEBT), une association à but non...
CVS Will Close 900 Stores as it Looks Beyond Traditional Pharmacies
aminabedi1368, November 18, 2021 November 18, 2021 , NEWS, 0
The company said the closures, which will affect about 9 percent of its stores in the next three years,...
Why Breast Density Matters
aminabedi1368, December 9, 2021 December 9, 2021 , NEWS, 0
Breast density is a lesser known risk factor for breast cancer, and it makes detecting cancer harder.
Pfizer's vaccine provides some protection against Omicron, a lab study suggests.
A South African study found that Omicron may dull the power of coronavirus vaccines, but hinted that booster shots...
What Happens If You Test Positive for Covid While Traveling?
In the midst of the holiday season, the Omicron variant has many considering the prospects of getting stuck while...
Why After Seven Years Away From Afro Hair Salons, I'm Finally Relinquishing Control
aminabedi1368, October 7, 2021 January 7, 2022 , NEWS, 0
Image Source: Getty Thanks to a now industry-wide call to action against the marginalization of Afro hair, words like "coily,"...
Can CBD Oil Help With Lung Disease?
aminabedi1368, January 4, 2022 January 4, 2022 , NEWS, 0
CBD products abound, in all kinds of forms. Despite marketing claims, there's no proof they'll help lung disease. Learn...
Ariana Grande's Tendril Braids Are the Star of Her "Off the Table" Music Video
The singer's on-trend hairstyle has actually been all over the internet lately.
E-cigarettes No Guarantee Against Relapse for SmokersYou Know Urban Decay? Its Founder Just Launched a New Brand, and the Mascara Is a Dream


text:
#include "Firestore/core/src/local/local_serializer.h"

#include "Firestore/Protos/cpp/firestore/bundle.pb.h"
#include "Firestore/Protos/cpp/firestore/local/maybe_document.pb.h"
#include "Firestore/Protos/cpp/firestore/local/mutation.pb.h"
#include "Firestore/Protos/cpp/firestore/local/target.pb.h"
#include "Firestore/core/src/bundle/bundled_query.h"
#include "Firestore/core/src/bundle/named_query.h"
#include "Firestore/core/src/core/field_filter.h"
#include "Firestore/core/src/core/query.h"
#include "Firestore/core/src/core/target.h"
#include "Firestore/core/src/local/target_data.h"
#include "Firestore/core/src/model/delete_mutation.h"
#include "Firestore/core/src/model/field_mask.h"
#include "Firestore/core/src/model/mutable_document.h"
#include "Firestore/core/src/model/mutation.h"
#include "Firestore/core/src/model/mutation_batch.h"
#include "Firestore/core/src/model/patch_mutation.h"
#include "Firestore/core/src/model/precondition.h"
#include "Firestore/core/src/model/set_mutation.h"
#include "Firestore/core/src/model/snapshot_version.h"
#include "Firestore/core/src/model/types.h"
#include "Firestore/core/src/model/value_util.h"
#include "Firestore/core/src/nanopb/message.h"
#include "Firestore/core/src/nanopb/nanopb_util.h"
#include "Firestore/core/src/nanopb/reader.h"
#include "Firestore/core/src/nanopb/writer.h"
#include "Firestore/core/src/remote/serializer.h"
#include "Firestore/core/src/util/status.h"
#include "Firestore/core/test/unit/nanopb/nanopb_testing.h"
#include "Firestore/core/test/unit/testutil/status_testing.h"
#include "Firestore/core/test/unit/testutil/testutil.h"
#include "google/protobuf/util/message_differencer.h"
#include "gtest/gtest.h"

namespace firebase {
namespace firestore {
namespace local {
namespace {

namespace v1 = google::firestore::v1;
using bundle::BundledQuery;
using bundle::NamedQuery;
using core::Query;
using core::Target;
using ::google::protobuf::util::MessageDifferencer;
using model::DatabaseId;
using model::DocumentKey;
using model::FieldMask;
using model::FieldPath;
using model::ListenSequenceNumber;
using model::MutableDocument;
using model::Mutation;
using model::MutationBatch;
using model::ObjectValue;
using model::PatchMutation;
using model::Precondition;
using model::SetMutation;
using model::SnapshotVersion;
using model::TargetId;
using nanopb::ByteString;
using nanopb::ByteStringWriter;
using nanopb::FreeNanopbMessage;
using nanopb::MakeArray;
using nanopb::MakeBytesArray;
using nanopb::MakeMessage;
using nanopb::MakeStdString;
using nanopb::Message;
using nanopb::ProtobufParse;
using nanopb::ProtobufSerialize;
using nanopb::SetRepeatedField;
using nanopb::StringReader;
using nanopb::Writer;
using testutil::DeletedDoc;
using testutil::Doc;
using testutil::Field;
using testutil::Filter;
using testutil::Key;
using testutil::Map;
using testutil::OrderBy;
using testutil::Query;
using testutil::UnknownDoc;
using testutil::Value;
using testutil::WrapObject;
using util::Status;

class LocalSerializerTest : public ::testing::Test {
 public:
  LocalSerializerTest()
      : remote_serializer(DatabaseId("p", "d")), serializer(remote_serializer) {
    msg_diff.ReportDifferencesToString(&message_differences);
  }

  remote::Serializer remote_serializer;
  local::LocalSerializer serializer;

  Timestamp write_time_ = Timestamp::Now();

  template <typename... Args>
  void ExpectRoundTrip(const Args&... args) {
    // First, serialize model with our (nanopb based) serializer, then
    // deserialize the resulting bytes with libprotobuf and ensure the result is
    // the same as the expected proto.
    ExpectSerializationRoundTrip(args...);

    // Next, serialize proto with libprotobuf, then deserialize the resulting
    // bytes with our (nanopb based) deserializer and ensure the result is the
    // same as the expected model.
    ExpectDeserializationRoundTrip(args...);
  }

  static v1::Write SetProto() {
    v1::Value b_value{};
    *b_value.mutable_string_value() = "b";
    v1::Value one_value{};
    one_value.set_integer_value(1);

    v1::Write set_proto{};
    *set_proto.mutable_update()->mutable_name() =
        "projects/p/databases/d/documents/docs/1";
    (*set_proto.mutable_update()->mutable_fields())["a"] = b_value;
    (*set_proto.mutable_update()->mutable_fields())["num"] = one_value;
    return set_proto;
  }

  static v1::Write PatchProto() {
    v1::Value b_value{};
    *b_value.mutable_string_value() = "b";
    v1::Value one_value{};
    one_value.set_integer_value(1);

    v1::Write patch_proto{};
    *patch_proto.mutable_update()->mutable_name() =
        "projects/p/databases/d/documents/docs/1";
    (*patch_proto.mutable_update()->mutable_fields())["a"] = b_value;
    (*patch_proto.mutable_update()->mutable_fields())["num"] = one_value;
    patch_proto.mutable_update_mask()->add_field_paths("a");
    patch_proto.mutable_current_document()->set_exists(true);
    return patch_proto;
  }

  static v1::Write DeleteProto() {
    v1::Write delete_proto{};
    *delete_proto.mutable_delete_() = "projects/p/databases/d/documents/docs/1";
    return delete_proto;
  }

  static v1::Write LegacyTransformProto() {
    v1::Write transform_proto{};

    v1::DocumentTransform::FieldTransform inc_proto1;
    v1::Value inc1_value{};
    inc1_value.set_integer_value(42);
    inc_proto1.set_field_path("integer");
    *inc_proto1.mutable_increment() = inc1_value;

    v1::DocumentTransform::FieldTransform inc_proto2;
    v1::Value inc2_value{};
    inc2_value.set_double_value(13.37);
    inc_proto2.set_field_path("double");
    *inc_proto2.mutable_increment() = inc2_value;

    *transform_proto.mutable_transform()->add_field_transforms() =
        std::move(inc_proto1);
    *transform_proto.mutable_transform()->add_field_transforms() =
        std::move(inc_proto2);

    transform_proto.mutable_current_document()->set_exists(true);
    transform_proto.mutable_transform()->set_document(
        "projects/p/databases/d/documents/docs/1");
    return transform_proto;
  }

  ::google::protobuf::Timestamp WriteTimeProto() {
    ::google::protobuf::Timestamp write_time_proto{};
    write_time_proto.set_seconds(write_time_.seconds());
    write_time_proto.set_nanos(write_time_.nanoseconds());
    return write_time_proto;
  }

  static void ExpectSet(google_firestore_v1_Write encoded) {
    EXPECT_EQ(google_firestore_v1_Write_update_tag, encoded.which_operation);
    EXPECT_EQ(2, encoded.update.fields_count);
    EXPECT_EQ("a", nanopb::MakeString(encoded.update.fields[0].key));
    EXPECT_EQ("b",
              nanopb::MakeString(encoded.update.fields[0].value.string_value));
    EXPECT_EQ("num", nanopb::MakeString(encoded.update.fields[1].key));
    EXPECT_EQ(1, encoded.update.fields[1].value.integer_value);
    EXPECT_FALSE(encoded.has_update_mask);
    EXPECT_FALSE(encoded.has_current_document);
  }

  static void ExpectPatch(google_firestore_v1_Write encoded) {
    EXPECT_EQ(google_firestore_v1_Write_update_tag, encoded.which_operation);
    EXPECT_EQ(2, encoded.update.fields_count);
    EXPECT_EQ("a", nanopb::MakeString(encoded.update.fields[0].key));
    EXPECT_EQ("b",
              nanopb::MakeString(encoded.update.fields[0].value.string_value));
    EXPECT_EQ("num", nanopb::MakeString(encoded.update.fields[1].key));
    EXPECT_TRUE(encoded.has_update_mask);
    EXPECT_EQ(1, encoded.update.fields[1].value.integer_value);
    EXPECT_EQ(1, encoded.update_mask.field_paths_count);
    EXPECT_TRUE(encoded.has_current_document);
    EXPECT_TRUE(encoded.current_document.exists);
  }

  static void ExpectDelete(google_firestore_v1_Write encoded) {
    EXPECT_EQ(google_firestore_v1_Write_delete_tag, encoded.which_operation);
  }

  static void ExpectUpdateTransform(google_firestore_v1_Write encoded) {
    EXPECT_EQ(2, encoded.update_transforms_count);
    EXPECT_EQ(
        google_firestore_v1_DocumentTransform_FieldTransform_increment_tag,
        encoded.update_transforms[0].which_transform_type);
    EXPECT_EQ("integer",
              nanopb::MakeString(encoded.update_transforms[0].field_path));
    EXPECT_EQ(42, encoded.update_transforms[0].increment.integer_value);
    EXPECT_EQ(
        google_firestore_v1_DocumentTransform_FieldTransform_increment_tag,
        encoded.update_transforms[1].which_transform_type);
    EXPECT_EQ("double",
              nanopb::MakeString(encoded.update_transforms[1].field_path));
    EXPECT_EQ(13.37, encoded.update_transforms[1].increment.double_value);
  }

  static void ExpectNoUpdateTransform(google_firestore_v1_Write encoded) {
    EXPECT_EQ(0, encoded.update_transforms_count);
  }

 private:
  void ExpectSerializationRoundTrip(
      const MutableDocument& model,
      const ::firestore::client::MaybeDocument& proto) {
    ByteString bytes = EncodeMaybeDocument(&serializer, model);
    auto actual = ProtobufParse<::firestore::client::MaybeDocument>(bytes);
    EXPECT_TRUE(msg_diff.Compare(proto, actual)) << message_differences;
  }

  void ExpectDeserializationRoundTrip(
      const MutableDocument& model,
      const ::firestore::client::MaybeDocument& proto) {
    ByteString bytes = ProtobufSerialize(proto);
    StringReader reader(bytes);
    auto message = Message<firestore_client_MaybeDocument>::TryParse(&reader);
    auto actual_model = serializer.DecodeMaybeDocument(&reader, *message);
    EXPECT_OK(reader.status());
    EXPECT_EQ(model, actual_model);
  }

  ByteString EncodeMaybeDocument(local::LocalSerializer* localSerializer,
                                 const MutableDocument& document) {
    return MakeByteString(localSerializer->EncodeMaybeDocument(document));
  }

  void ExpectSerializationRoundTrip(const TargetData& target_data,
                                    const ::firestore::client::Target& proto) {
    ByteString bytes = EncodeTargetData(&serializer, target_data);
    auto actual = ProtobufParse<::firestore::client::Target>(bytes);
    EXPECT_TRUE(msg_diff.Compare(proto, actual)) << message_differences;
  }

  void ExpectDeserializationRoundTrip(
      const TargetData& target_data, const ::firestore::client::Target& proto) {
    ByteString bytes = ProtobufSerialize(proto);
    StringReader reader(bytes);

    auto message = Message<firestore_client_Target>::TryParse(&reader);
    TargetData actual_target_data =
        serializer.DecodeTargetData(&reader, *message);

    EXPECT_OK(reader.status());
    EXPECT_EQ(target_data, actual_target_data);
  }

  ByteString EncodeTargetData(local::LocalSerializer* localSerializer,
                              const TargetData& target_data) {
    EXPECT_EQ(target_data.purpose(), QueryPurpose::Listen);
    return MakeByteString(localSerializer->EncodeTargetData(target_data));
  }

  void ExpectSerializationRoundTrip(
      const MutationBatch& model,
      const ::firestore::client::WriteBatch& proto) {
    ByteString bytes = EncodeMutationBatch(&serializer, model);
    auto actual = ProtobufParse<::firestore::client::WriteBatch>(bytes);
    EXPECT_TRUE(msg_diff.Compare(proto, actual)) << message_differences;
  }

  void ExpectDeserializationRoundTrip(
      const MutationBatch& model,
      const ::firestore::client::WriteBatch& proto) {
    ByteString bytes = ProtobufSerialize(proto);
    StringReader reader(bytes);

    auto message = Message<firestore_client_WriteBatch>::TryParse(&reader);
    MutationBatch actual_mutation_batch =
        serializer.DecodeMutationBatch(&reader, *message);

    EXPECT_OK(reader.status());
    EXPECT_EQ(model, actual_mutation_batch);
  }

  ByteString EncodeMutationBatch(local::LocalSerializer* localSerializer,
                                 const MutationBatch& mutation_batch) {
    return MakeByteString(localSerializer->EncodeMutationBatch(mutation_batch));
  }

  void ExpectSerializationRoundTrip(const NamedQuery& named_query,
                                    const ::firestore::NamedQuery& proto) {
    ByteString bytes = EncodeNamedQuery(named_query);
    auto actual = ProtobufParse<::firestore::NamedQuery>(bytes);
    EXPECT_TRUE(msg_diff.Compare(proto, actual)) << message_differences;
  }

  ByteString EncodeNamedQuery(const NamedQuery& named_query) {
    return MakeByteString(serializer.EncodeNamedQuery(named_query));
  }

  void ExpectDeserializationRoundTrip(const NamedQuery& named_query,
                                      const ::firestore::NamedQuery& proto) {
    ByteString bytes = ProtobufSerialize(proto);
    StringReader reader(bytes);

    auto message = Message<firestore_NamedQuery>::TryParse(&reader);
    NamedQuery actual_named_query =
        serializer.DecodeNamedQuery(&reader, *message);

    EXPECT_OK(reader.status());
    EXPECT_EQ(named_query, actual_named_query);
  }

  void ExpectSerializationRoundTrip(const Mutation& mutation,
                                    const v1::Write& proto) {
    ByteString bytes = MakeByteString(serializer.EncodeMutation(mutation));
    auto actual = ProtobufParse<v1::Write>(bytes);
    EXPECT_TRUE(msg_diff.Compare(proto, actual)) << message_differences;
  }

  void ExpectDeserializationRoundTrip(const Mutation& mutation,
                                      const v1::Write& proto) {
    ByteString bytes = ProtobufSerialize(proto);
    StringReader reader(bytes);

    auto message = Message<google_firestore_v1_Write>::TryParse(&reader);
    Mutation actual_mutation = serializer.DecodeMutation(&reader, *message);

    EXPECT_OK(reader.status());
    EXPECT_EQ(mutation, actual_mutation);
  }

  std::string message_differences;
  MessageDifferencer msg_diff;
};

TEST_F(LocalSerializerTest, EncodesMutationBatch) {
  Mutation base =
      PatchMutation(Key("docs/1"), WrapObject("a", "b"), FieldMask{Field("a")},
                    Precondition::Exists(true));

  Mutation set = testutil::SetMutation("docs/1", Map("a", "b", "num", 1));
  Mutation patch =
      PatchMutation(Key("docs/1"), WrapObject("a", "b", "num", 1),
                    FieldMask{Field("a")}, Precondition::Exists(true));
  Mutation del = testutil::DeleteMutation("docs/1");

  MutationBatch model(42, write_time_, {base}, {set, patch, del});

  v1::Value b_value{};
  *b_value.mutable_string_value() = "b";

  v1::Write base_proto{};
  *base_proto.mutable_update()->mutable_name() =
      "projects/p/databases/d/documents/docs/1";
  (*base_proto.mutable_update()->mutable_fields())["a"] = b_value;
  base_proto.mutable_update_mask()->add_field_paths("a");
  base_proto.mutable_current_document()->set_exists(true);

  ::firestore::client::WriteBatch batch_proto{};
  batch_proto.set_batch_id(42);
  *batch_proto.add_base_writes() = base_proto;
  *batch_proto.add_writes() = SetProto();
  *batch_proto.add_writes() = PatchProto();
  *batch_proto.add_writes() = DeleteProto();
  *batch_proto.mutable_local_write_time() = WriteTimeProto();

  ExpectRoundTrip(model, batch_proto);
}

TEST_F(LocalSerializerTest, EncodesDocumentAsMaybeDocument) {
  MutableDocument doc = Doc("some/path", /*version=*/42, Map("foo", "bar"));

  ::firestore::client::MaybeDocument maybe_doc_proto;
  maybe_doc_proto.mutable_document()->set_name(
      "projects/p/databases/d/documents/some/path");
  ::google::firestore::v1::Value value_proto;
  value_proto.set_string_value("bar");
  maybe_doc_proto.mutable_document()->mutable_fields()->insert(
      {"foo", value_proto});
  maybe_doc_proto.mutable_document()->mutable_update_time()->set_seconds(0);
  maybe_doc_proto.mutable_document()->mutable_update_time()->set_nanos(42000);

  ExpectRoundTrip(doc, maybe_doc_proto);

  // Verify has_committed_mutations
  doc = Doc("some/path", /*version=*/42, Map("foo", "bar"))
            .SetHasCommittedMutations();
  maybe_doc_proto.set_has_committed_mutations(true);

  ExpectRoundTrip(doc, maybe_doc_proto);
}

TEST_F(LocalSerializerTest, EncodesNoDocumentAsMaybeDocument) {
  MutableDocument no_doc = DeletedDoc("some/path", /*version=*/42);

  ::firestore::client::MaybeDocument maybe_doc_proto;
  maybe_doc_proto.mutable_no_document()->set_name(
      "projects/p/databases/d/documents/some/path");
  maybe_doc_proto.mutable_no_document()->mutable_read_time()->set_seconds(0);
  maybe_doc_proto.mutable_no_document()->mutable_read_time()->set_nanos(42000);

  ExpectRoundTrip(no_doc, maybe_doc_proto);

  // Verify has_committed_mutations
  no_doc = DeletedDoc("some/path", /*version=*/42).SetHasCommittedMutations();
  maybe_doc_proto.set_has_committed_mutations(true);

  ExpectRoundTrip(no_doc, maybe_doc_proto);
}

TEST_F(LocalSerializerTest, EncodesUnknownDocumentAsMaybeDocument) {
  MutableDocument unknown_doc = UnknownDoc("some/path", /*version=*/42);

  ::firestore::client::MaybeDocument maybe_doc_proto;
  maybe_doc_proto.mutable_unknown_document()->set_name(
      "projects/p/databases/d/documents/some/path");
  maybe_doc_proto.mutable_unknown_document()->mutable_version()->set_seconds(0);
  maybe_doc_proto.mutable_unknown_document()->mutable_version()->set_nanos(
      42000);
  maybe_doc_proto.set_has_committed_mutations(true);

  ExpectRoundTrip(unknown_doc, maybe_doc_proto);
}

TEST_F(LocalSerializerTest, EncodesTargetData) {
  core::Query query = Query("room");
  TargetId target_id = 42;
  ListenSequenceNumber sequence_number = 10;
  SnapshotVersion version = testutil::Version(1039);
  SnapshotVersion limbo_free_version = testutil::Version(1000);
  ByteString resume_token = testutil::ResumeToken(1039);

  TargetData target_data(query.ToTarget(), target_id, sequence_number,
                         QueryPurpose::Listen, SnapshotVersion(version),
                         SnapshotVersion(limbo_free_version),
                         ByteString(resume_token));

  ::firestore::client::Target expected;
  expected.set_target_id(target_id);
  expected.set_last_listen_sequence_number(sequence_number);
  expected.mutable_snapshot_version()->set_nanos(1039000);
  expected.mutable_last_limbo_free_snapshot_version()->set_nanos(1000000);
  expected.set_resume_token(resume_token.data(), resume_token.size());
  v1::Target::QueryTarget* query_proto = expected.mutable_query();

  // Add expected collection.
  query_proto->set_parent("projects/p/databases/d/documents");
  v1::StructuredQuery::CollectionSelector from;
  from.set_collection_id("room");
  *query_proto->mutable_structured_query()->add_from() = std::move(from);

  // Add default order_by.
  v1::StructuredQuery::Order order;
  order.mutable_field()->set_field_path(FieldPath::kDocumentKeyPath);
  order.set_direction(v1::StructuredQuery::ASCENDING);
  *query_proto->mutable_structured_query()->add_order_by() = std::move(order);

  ExpectRoundTrip(target_data, expected);
}

TEST_F(LocalSerializerTest, HandlesInvalidTargetData) {
  TargetId target_id = 42;
  std::string invalid_field_path = "`";

  ::firestore::client::Target invalid_target;
  invalid_target.set_target_id(target_id);
  v1::Target::QueryTarget* query_proto = invalid_target.mutable_query();

  // Add expected collection.
  query_proto->set_parent("projects/p/databases/d/documents");
  v1::StructuredQuery::CollectionSelector from;
  from.set_collection_id("room");
  *query_proto->mutable_structured_query()->add_from() = std::move(from);

  // Add invalid order_by.
  v1::StructuredQuery::Order order;
  order.mutable_field()->set_field_path(invalid_field_path);
  order.set_direction(v1::StructuredQuery::ASCENDING);
  *query_proto->mutable_structured_query()->add_order_by() = std::move(order);

  ByteString bytes = ProtobufSerialize(invalid_target);
  StringReader reader(bytes);

  auto message = Message<firestore_client_Target>::TryParse(&reader);
  serializer.DecodeTargetData(&reader, *message);
  EXPECT_NOT_OK(reader.status());
}

TEST_F(LocalSerializerTest, EncodesTargetDataWithDocumentQuery) {
  core::Query query = Query("room/1");
  TargetId target_id = 42;
  ListenSequenceNumber sequence_number = 10;
  SnapshotVersion version = testutil::Version(1039);
  SnapshotVersion limbo_free_version = testutil::Version(1000);
  ByteString resume_token = testutil::ResumeToken(1039);

  TargetData target_data(query.ToTarget(), target_id, sequence_number,
                         QueryPurpose::Listen, SnapshotVersion(version),
                         SnapshotVersion(limbo_free_version),
                         ByteString(resume_token));

  ::firestore::client::Target expected;
  expected.set_target_id(target_id);
  expected.set_last_listen_sequence_number(sequence_number);
  expected.mutable_snapshot_version()->set_nanos(1039000);
  expected.mutable_last_limbo_free_snapshot_version()->set_nanos(1000000);
  expected.set_resume_token(resume_token.data(), resume_token.size());
  v1::Target::DocumentsTarget* documents_proto = expected.mutable_documents();
  documents_proto->add_documents("projects/p/databases/d/documents/room/1");

  ExpectRoundTrip(target_data, expected);
}

TEST_F(LocalSerializerTest, EncodesNamedQuery) {
  auto now = Timestamp::Now();
  Target t =
      testutil::Query("a").AddingFilter(Filter("foo", "==", 1)).ToTarget();
  BundledQuery bundle_query(t, core::LimitType::First);
  NamedQuery named_query("query-1", bundle_query, SnapshotVersion(now));

  // Constructing expected proto lite class.
  ::firestore::BundledQuery expected_bundled_query;
  expected_bundled_query.set_parent("projects/p/databases/d/documents");
  expected_bundled_query.set_limit_type(
      ::firestore::BundledQuery_LimitType_FIRST);

  v1::StructuredQuery::CollectionSelector from;
  from.set_collection_id("a");
  *expected_bundled_query.mutable_structured_query()->add_from() =
      std::move(from);

  v1::StructuredQuery::FieldFilter field_filter;
  field_filter.mutable_field()->set_field_path("foo");
  field_filter.mutable_value()->set_integer_value(1);
  field_filter.set_op(
      google::firestore::v1::StructuredQuery_FieldFilter_Operator_EQUAL);
  *expected_bundled_query.mutable_structured_query()
       ->mutable_where()
       ->mutable_field_filter() = std::move(field_filter);

  v1::StructuredQuery::Order order;
  order.mutable_field()->set_field_path(FieldPath::kDocumentKeyPath);
  order.set_direction(v1::StructuredQuery::ASCENDING);
  *expected_bundled_query.mutable_structured_query()->add_order_by() =
      std::move(order);

  ::firestore::NamedQuery expected_named_query;
  expected_named_query.set_name("query-1");
  expected_named_query.mutable_read_time()->set_seconds(now.seconds());
  expected_named_query.mutable_read_time()->set_nanos(now.nanoseconds());
  *expected_named_query.mutable_bundled_query() =
      std::move(expected_bundled_query);

  ExpectRoundTrip(named_query, expected_named_query);
}

TEST_F(LocalSerializerTest, EncodesNamedLimitToLastQuery) {
  auto now = Timestamp::Now();
  Target t = testutil::Query("a")
                 // Note we use a limit to first query here because `Target`
                 // cannot be stored with limit type information. It is stored
                 // in `BundledQuery` instead.
                 .WithLimitToFirst(3)
                 .ToTarget();
  BundledQuery bundle_query(t, core::LimitType::Last);
  NamedQuery named_query("query-1", bundle_query, SnapshotVersion(now));

  // Constructing expected proto lite class.
  ::firestore::BundledQuery expected_bundled_query;
  expected_bundled_query.set_parent("projects/p/databases/d/documents");
  expected_bundled_query.set_limit_type(
      ::firestore::BundledQuery_LimitType_LAST);

  expected_bundled_query.mutable_structured_query()->mutable_limit()->set_value(
      3);

  v1::StructuredQuery::CollectionSelector from;
  from.set_collection_id("a");
  *expected_bundled_query.mutable_structured_query()->add_from() =
      std::move(from);

  v1::StructuredQuery::Order order;
  order.mutable_field()->set_field_path(FieldPath::kDocumentKeyPath);
  order.set_direction(v1::StructuredQuery::ASCENDING);
  *expected_bundled_query.mutable_structured_query()->add_order_by() =
      std::move(order);

  ::firestore::NamedQuery expected_named_query;
  expected_named_query.set_name("query-1");
  expected_named_query.mutable_read_time()->set_seconds(now.seconds());
  expected_named_query.mutable_read_time()->set_nanos(now.nanoseconds());
  *expected_named_query.mutable_bundled_query() =
      std::move(expected_bundled_query);

  ExpectRoundTrip(named_query, expected_named_query);
}

TEST_F(LocalSerializerTest, EncodesMutation) {
  Mutation mutation =
      PatchMutation(Key("docs/1"), WrapObject("a", "b", "num", 1),
                    FieldMask{Field("a")}, Precondition::Exists(true));

  v1::Write expected_mutation = PatchProto();

  ExpectRoundTrip(mutation, expected_mutation);
}

}  // namespace
}  // namespace local
}  // namespace firestore
}  // namespace firebase

redpajama_set_name: RedPajamaGithub


I love Minecraft. When I bought the Pocket Edition last year, I loved it. Then, this year, when I bought the PC Version I really enjoyed it. I love the graphics and fighting away bad mobs. I love building houses and taming Wolves.


text:
Q: how to exclude non-active users from queryset in django I want to exclude non-active users from my project.
example 1:
  url:users/1/friends/ will show all friends of that user.

I want to show only active users in friend list.
example 2:
  url:users/1/friends/ will show all friends of that user.

if user with id 1 is not active i don't want to show any activity of him..like his friends..his profile...etc
example 3:
  url:users/1/challenge/  will show all friends of that user in post form.

i don't want to show non-active users in form.
is there any generic way to perform this. Because its a big project  and I can't make filter everywhere.
Tables are like:
class User(models.Model):
  ......
  ......
  friends = models.ForeignKey(User)

A: You should use a custom Model Manager:
class ActiveUsersManager(models.Manager):
    use_for_related_fields = True

    def get_queryset(self):
        return super(ActiveUserManager, self).get_queryset().filter(is_active=True)

class User(models.Model):
    is_active = models.BooleanField(default=true)

    # first manager is the default and accessible through objects.
    active = ActiveUsersManager()
    all_users = models.Manager()

active_users = User.objects.all()
all_users = User.all_users.all()

A: If you want to exclude non-active users from a queryset you can use the following filter:
YourModel.objects.exclude(friend__is_active=False)

# or
YourModel.objects.filter(friend__is_active=True)

Where friend is a ForeignKeyField to a User model object in YourModel.
If you want a more general solution, you can use a ModelManager:
class ActiveUsersOnlyManager(models.Manager):
    def get_queryset(self):
        return super(ActiveUsersOnlyManager, self).get_queryset().filter(is_active=True)

class User(models.Model):
    is_active = models.BooleanField(default=true)
    friends = models.ForeignKey(User)
    # first manager is the default and accessible through objects.
    objects = ActiveUsersManager()

A: You can use Creating a manager with QuerySet methods

can be used to create an instance of Manager with a copy of a custom QuerySet's methods

class UserQuerySet(models.QuerySet):
    def active(self):
        return self.filter(is_active=True)

class User(models.Model):
    is_active = models.BooleanField(default=true)

    objects = UserQuerySet.as_manager()

And use it simply like this
User.objects.active()
For custom users (AbstractUser) you need this solution
It is based on this answer
from django.db.models import QuerySet
from django.contrib.auth.models import AbstractUser, UserManager

class UserQuerySetManager(UserManager):
    def __getattr__(self, attr, *args):
        try:
            return getattr(self.__class__, attr, *args)
        except AttributeError:
            # don't delegate internal methods to the queryset
            if attr.startswith('__') and attr.endswith('__'):
                raise
            return getattr(self.get_query_set(), attr, *args)

    def get_query_set(self):
        return self.model.QuerySet(self.model, using=self._db)

class User(AbstractUser):
    objects = UserQuerySetManager()

    class Meta:
        permissions = (
            ('view_all_managers', 'View All Managers'),
        )

    class QuerySet(QuerySet):
        def active(self):
            return self.filter(is_active=True)


SILVER, GEORGE (fl. 1599), writer on fencing, describes himself on the title-page of his treatise on fencing as a 'gentleman,' and states that he was an adept at fencing with the short sword, which he claimed to be the Englishman's national weapon. The favour accorded by Englishmen of rank to Italian fencing-masters who taught the use of the long rapier angered him, and he was especially contemptuous of the popularity achieved by the 'Practice' (1595) of Vincentio Saviolo [q. v.], the chief Italian teacher in London, who denied the 'cunning' of the English fencers. Silver and his brother Toby tried in vain to arrange a public meeting with Saviolo and his fellow-countryman, Jeronimo. They placarded London, Southwark, and Westminster with their challenges, but, although they had a chance scrimmage with some Italian fencers and their friends in a house of entertainment, no formal fight came off. To prove his contention Silver ultimately published in 1599 (with two illustrations) his 'Paradoxes of Defence, wherein is proved the true grounds of fight to be in the short auncient weapons, and that the short sword hath aduantage of the long sword or long rapier. And the weaknesse and imperfection of the rapier fights displayed. Together with an admonition to … Englishmen to beware of false teachers of defence' (London, for Edward Blount). The work was dedicated to Robert Devereux, second earl of Essex, the patron of Saviolo. There is appended 'A Briefe note of three Italian teachers of offence, Sigñor Rocko, Ieronimo, that was Sigñor Rocko his boy, and Vincentio [Saviolo].' A copy of Silver's treatise is at the British Museum. His manuscript was sold at Sir Samuel Rush Meyrick's sale in 1870.
George Silver, 'gent.,' married Mary Heydon at St. Clement Danes on 24 March 1579–80 (Chester, Marriage Licenses, col. 1226).
This page was last edited on 30 March 2011, at 18:08.


For most people buying a home is one of the biggest decisions they will take in their lives. You would imagine that a considerable amount of research time would be put into this process in order to ensure that the final decision is the right one. Yet some recent research shows that the average home viewer in the UK takes only 38 minutes to decide whether or not to buy a property. This does not mean that the total amount of time spent investigating options is so long, rather it is a reflection of the amount of information available online, enabling house hunters to do much of their research activities in front of the computer.
Estate Agents Call to Action - Details Needed!
Estate agents, such as those at Beercock Wiles & Wick, must ensure that they have as much available information to show prospects virtually as possible, or risk losing out to their competitors. Prospects are looking for not only great quality photos from all aspects, but high-definition video as well. They are looking for an estate agent site that has a variety of different media options and has easy, clickable links to other relevant information. For example, what are the employment opportunities in the area, what school catchment area does the property fall within and how are transport links? In particular, would-be Londoners are looking for proximity to underground stations, or local bus lines.
Council tax band rates can vary substantially from community to community, so this information should be readily available. It's a sad fact of life, but crime rates across the country may well affect whether a viewer would be interested in a certain property or not. Full disclosure is paramount and the fewer the number of hoops the estate agent expects the prospective buyer to jump through the better! The previous purchase history associated with the property should be displayed prominently, as should a listing of similar properties that have sold in the nearby vicinity over the last six months.
Nevertheless, while it may only take a short amount of time for viewers to decide on a particular property once armed with the information, two thirds of people will still want to view the house on at least two occasions before making an offer. Only 10% make their decision after just one viewing, with 30% deciding that they need at least three visits before they are happy.
The research also shows that it doesn't seem to matter how much the property is actually worth, as those making an offer to buy a property worth more than £500,000 still only take, on average, 40 minutes to make their decision, two minutes longer. The same philosophy, evidently extends across income brands relative to the scale of the decision.


Although there are no private beaches in Portugal, the one at Brejos is as close as you can get.
The beach stretches between Torre and Carvalhal and the only way to access it by car is through the rice fields, the pine forest and over the dunes to the beach and in order to do this you require a pass.
All of the homeowners in Brejos have passes, so if you're here on vacation, the owners should have left one in the house for you.
You could arrive at the beach if you travelled by foot either from Torre or Carvalhal beach, which very few people ever do.
Praia dos Brejos provides a small private car park after the rice fields and just before the pine forest and therefore you will have to hike for about 5 minutes until you arrive at the shore. Some beach goers arrive by quad bike.
There are no bathrooms, restaurants, bars or any type of service at this beach, so if you intend to spend sometime there you will need a picnic basket and a few drinks.
The beach is extremely quiet and almost like a club, as many of the beach goers know each other personally.
When returning from the beach, try to avoid sunset hours, as this is the time when the mosquito's are around and you may get bitten once or twice.


Why Pressure washing Costco´s Company Signage?
I got a call from the Costco store here in Clearwater to do some work for them for the first time. To be recognized by a bigger company, you have to prove yourself over time and I suppose that´s what we did over the past 4 years. We caught their eye and here we were, with a special job at hand.
It was a "Bird-call" and had to do with birds like the one on the left. Now, you can think what you like about pigeons, but when it comes to roofs, sidings and in this case - the business signs of Costco´s commercial building - the pigeons with their continous nesting efforts are a real pest.
Until then I am looking forward to hear from you - as you know, you can book a softwash or pressurewashing for any type of job any time with our friendly Receptionist or through our website online.
As a reminder: Please call early before the Holidays to avoid any scheduling problems and us being booked up. Thank you!
Any questions? Please call (813) 991-7243!


The Nordic Heritage Museum Foundation supports the Nordic Heritage Museum.
The Nordic Heritage Museum is an internationally recognized museum and cultural center where people of all backgrounds are welcomed to be inspired by the values, traditions, art, and spirit of the Nordic peoples.
Visit a place where history comes alive and contemporary artists and community activities are celebrated with vibrant exhibits and events.
Dedicated to collecting, preserving, and educating since its founding in 1980, Nordic Heritage Museum is the only museum in the United States to honor the legacy of immigrants from the five Nordic countries: Denmark, Finland, Iceland, Norway, and Sweden.
Donate to Nordic Heritage Museum Foundation, Click Here!


text:
Egypt Centre Collection Blog
To support the Egypt Centre, please click the button below
The Eyes Have It: A Pair of Inlaid Eyes from Sanam
In August 2019 the reserve collection of the Egypt Centre was moved into a new state of the art storage facility. Yet this was only the beginning of the task to reorganise roughly 4,000 objects not currently on display in the museum. Over the subsequent eight months, around 3,000 objects had been repacked and given a new locations. However, because of the COVID-19 lockdown, this project went eye-dle for six months. Therefore, the project to reorganise these objects was only completed last Wednesday. A few weeks ago Sam Powell and I were going through one particular box when we made an eye-opening discovery. This blog post will outline the process of the discovery and the subsequent archival material related to it.
Working directly with the Egypt Centre collection during the pandemic has been a challenge since, because of the social distancing rules, I'm the only person able to work in the storeroom. However, with the rise of Zoom, it has been possible for me to work with the objects while Zooming with Sam who updates our online catalogue remotely. Therefore, this greatly improves the productivity and processing speed. A few weeks ago, we were going through a box of thirty-eight eye inlays, many of which originally belonged to wooden coffins. Some eagle-eyed readers might remember that this box of inlays featured in a previous guest post by Jiayun Zhu, a Museum Studies placement student from Leicester University. One particular pair of eyes immediately attracted our attention (W624 & W626). They are made of a copper alloy frame with the white scleras made of ostrich eggshell. Ostrich shell was used throughout Egyptian history for inlays, including occasionally for the whites of eyes (Phillips 2009). Unfortunately, in both cases the pupils are missing, although the stained outlines are still visible (fig. 1).
Fig. 1: Eye inlays
So what makes these objects so interesting? Well, with the Egypt Centre collection it is always important to keep an eye out for any previous numbers written on the objects. In the case of W624 and W626, faint five-digit numbers were spotted in the lower right corners of the scleras, written in white ink (fig. 2). Only the number on W624 could be fully read (12440), which I immediately identified as a Wellcome "R" number. These were written on objects as they were registered at the Wellcome Historical Medical Museum (WHMM) from 1913 until 1933. In recent years, the Wellcome has digitised many of their historical archives, including the registration ledgers. The entry for 12440 indicates that the object was identical to 12439, which is described as an "eye - of bone - with haematite pupil + bronze rim from mummy". Thus, while the number on W626 was only partially readable, it was possible to identify it as 12439 having located its matching eye.
Fig. 2: Faint Wellcome number in lower left
But the story doesn't end here! The next page of the ledger indicates that these eyes were "excavated at Sanam cemetery by Llewelyn Griffith". I couldn't believe my eyes! We had no idea that the Egypt Centre housed any of the objects from Sanam, which was excavated during the 1912–13 season of the University of Oxford Excavations in Nubia led by Francis Llewellyn Griffith (1862–1934). The eyes were subsequently presented to the WHMM in 1921. I searched the Wellcome archives further for additional details on the eyes. One file contained letters of correspondence between Griffith and Wellcome, often via the curator of the WHMM, Charles J. S. Thompson (1862–1943). In one letter written by Thompson to Griffith, dated 02 February 1921, an "enamelled eye" is mentioned as one of several objects from Sanam that "would be of most interest for his [Wellcome's] collection" (fig. 3).
Fig. 3: Letter from Thompson to Griffith (WA/HMM/CO/Ear/351:Box 42)
Looking further through the file, I was excited to see that the eyes were listed as having been found in tomb 691, which dates to the Twenty-fifth Dynasty (fig. 4). The accompanying tomb record reads as: "Cave tomb, 15 steep steps, drop of 70 to narrow platform before embrasure, approach L. 380, W. 100–120, total D. 380, main chamber 600 by 180, with two side chambers, axis 320. On floor of main chamber, pair of bronze eyes and eyebrows from a wooden coffin, the former inlaid with white (ostrich egg?) shell on which is fixed a raised disc of obsidian? as pupil; fragments of hollow bronze; some bluish glaze tubular and ring beads; [smaller green and yellow glaze tubular beads; a few small yellow red green and black ring beads; small yellow ball beads]. In entrance, sandstone table of offerings with papyrus stem in middle and 8 loaves between hes vases, 40 by 35, including spout." With this information, I then searched the excavation report and found that the eyes were mentioned twice. Firstly, Griffith says that "amongst the cave graves 691 preserves clear evidence of having contained a coffin in a pair of bronze eyes and eyebrows, such as are found inlaid in well-made wooden coffins from Egypt" (Griffith 1923, 84). Secondly, he said that "in the cave grave 691 were found a pair of bronze eyes and eyebrows from a wooden coffin, the eyes inlaid with white (ostrich egg) shell on which is fixed a raised disk of obsidian (?) as pupil; also fragments of hollow bronze, which perhaps had formed the lobes, etc., of a pair of ears" (Griffith 1923, 106).
Fig. 4: Selection of finds from the cemetery (Griffith 1923, pl. 21)
Sanam is located 25km south of the Fourth Cataract in modern day Sudan (fig. 5 MAP). The site is situated just a few kilometres south of the sacred site of Gebel Barkal, and between the royal cemeteries of el-Kurru (to the south) and Nuri (to the north). Over the course of four months at the site, Griffith and his team excavated an eye-popping 1550 tombs. Finds from the cemetery are scattered throughout the world, including the collections of the National Museum Khartoum, the Ashmolean Museum, the British Museum, the Ägyptisches Museum Berlin, and now Swansea. Knowing that the eyes were from the cemetery of Sanam, I contacted Professor Angelika Lohwasser, who has been researching the site for many years (Lohwasser 2010; 2012). Remarkably, W624 and W626 are the only eye inlays from a coffin found in the cemetery (Lohwasser 2012, 92). While the pupils of the eyes were recorded at the time of their registration of the WHMM, they have since become detached and subsequently lost. The eyebrows listed in the excavation report were not, however, listed as having been accessioned at the WHMM and it can only be assumed that they never accompanied the eyes to the museum.
Fig. 5: Map of the Napata district (Lohwasser 2010, fig. 1)
This blog post has presented an example of the archaeology of museums, showing that sometimes discoveries can be made right in front of your eyes!
**I am grateful to Professor Lohwasser for sending me the relevant pages from her 2012 publication.
Griffith, Francis Llewellyn 1923. Oxford excavations in Nubia. XVIII. The cemetery of Sanam. Annals of Archaeology and Anthropology 10, 73–171.
Lohwasser, Angelika 2010. The Kushite cemetery of Sanam: a non-royal burial ground of the Nubian capital, c. 800–600 BC. London: Golden House.
Lohwasser, Angelika 2012. Aspekte der napatanischen Gesellschaft: archäologisches Inventar und funeräre Praxis im Friedhof von Sanam - Perspektiven einer kulturhistorischen Interpretation. Denkschriften der Gesamtakademie 67; Contributions to the Archaeology of Egypt, Nubia and the Levant 1. Wien: Österreichischen Akademie der Wissenschaften.
Morkot, Robert G. 2000. The black pharaohs: Egypt's Nubian rulers. London: Rubicon Press.
Phillips, Jacke S. 2009. Ostrich eggshell. Edited by Willeke Wendrich. UCLA Encyclopedia of Egyptology, 1–4. Available at: https://escholarship.org/uc/item/0tm87064.
Pope, Jeremy 2014. The double kingdom under Taharqo: studies in the history of Kush and Egypt, c. 690–664 BC. Culture and History of the Ancient Near East 69. Leiden; Boston: Brill.
Posted by Ken Griffin at 12:50 1 comment:
Labels: W624, W626
Asklepios, Imhotep, and Onias' Temple
The entry for this week is written by the Reverend Jim Collins, a retired Anglican priest from Ottawa, Canada. Jim is very grateful for all he has been learning from the Egypt Centre and the Egypt Exploration Society lectures during the COVID-19 pandemic.
For someone who has dabbled in Egyptology since an undergraduate essay on ma'at in the Story of Sinuhe more than forty years ago, it has been both an honour and a privilege to be attending Dr Ken Griffin's online courses from the Egypt Centre, Swansea University. Ken brings such a depth of knowledge of his subject and an enthusiasm that his courses can be both daunting and incredibly inspiring. I love the way that he brings in artifacts as well as pictures and drawings to illustrate his lectures. I feel as though I am actually visiting the sites and monuments he is describing. He and Sam Powell create a welcoming and respectful environment online and over time I feel that I am also getting to know at least some of the other course participants who ask such interesting questions and bring some of their own insights.
Fig. 1: Plaster cast relief of Ptolemy III offering to Ptah and Imhotep (EC1959)
The importance of Imhotep to the Ptolemies is illustrated by a scene depicting Ptolemy III Euergetes I with Imhotep and Ptah in the Ptah Temple of Karnak (fig. 1). Pharaonic involvement in the building and restoration of temples in ancient Egypt has a long history. Although Imhotep's involvement with king Djoser is well known, contemporary documentation from the Third Dynasty is sketchy at best. However, as pointed out by Jadwiga Iwaszczuk (2015), there are important historical features of royal temple building and restoration evident by the Eighteenth Dynasty. It may be observed that there are parallels between political motivations in Eighteenth Dynasty temple construction and the Ptolemaic Period, but also differences. Among the inscriptions, Iwaszczuk cites is one from the western wall of the so-called "Birth Portico" in the temple of Hatshepsut at Deir el-Bahari, in which the gods of Egypt, whom the queen had visited with her divine father, are depicted as saying to her: "…you will see your instructions in the land which is in your possession, you will restore (srwḏ) what was decaying, you will raise your monuments in your temples, you will enrich your altars of him who begot you" (Iwaszczuk 2015, 35). It may be that this divine command to build was a form of justification for political office that was used by Hatshepsut, which may not have been lost on either the Ptolemies nor Onias, the Judean high priest. Might Imhotep have served as a role model in this or was he seen only as a healer?
Fig. 2: Copper alloy statue of Imhotep (BM EA 11060)
Although Apollo was the father of Askelpios, already in Homer there was an emphasis on healing art through the use of medicines and surgical intervention. Arguably for the Judean high priest Onias, the biblical patriarch Joseph served as more of a role model than Imhotep, but on the other hand, the Ptolemies were clearly committed to temple building and refurbishment, so surely it is possible that Imhotep may have proved useful as well (fig. 2). Arguably, for Ptolemaic kings there were similar periods of chaos in Egypt to which their building programs were similarly addressed. Could it be that the Judean priest Onias, in a manner similar to Hatshepsut but in the mid-second century BCE, took advantage of such traditional Egyptian policies around temple building and reconstruction to justify his own unorthodox position in traditional Egyptian society?
Fig. 3: Screenshot of the SITH Projet Karnak
Ken says that he debated how best to teach the subject of Karnak and decided on a historical approach. He says that it probably would have been better to make the course longer because so much material has had to be dropped but still this course has been an amazing learning experience. Throughout the Karnak course, Ken showed how the SITH Projet Karnak website can be used to find photographs and transcriptions of the scenes at Karnak (fig. 3). The fifth week was both a survey of the Graeco-Roman developments at Karnak as well as a historical summary using the UCLA video animating most of the various constructions over two thousand years. It was of particular interest to me because of my own interest in the mid-second century building project of the Judean high priest Onias. This sixth week was an added bonus over the five originally advertised and was a final overview of the gods and festivals, which for me was also a continuation of my own interest in these areas. It also tied in further to my interest area because of various connections to Memphis and the Heliopolis Nome in the Ptolemaic era.
Fig. 4: Block 37, "Ritual Burning of Fans" Magical Practice from Hatshepsut's Chapelle Rouge
In the final week of the course, he explained further surviving evidence from Hatshepsut's Chapelle Rouge, of what is sometimes described as a magical practice of "Burning of Fans" (perhaps irt ꜥḫ m ḫfty). The hieroglyph symbol of the bound captive signifying enemies appears on the fans as well as in the text. As explained by Mariam F. Ayad (2009, 92), the burning of the signs of the enemy symbolized that, without a body, the enemies of Egypt would have no place in the after life. The rekḫyt-people were also involved in this ceremony (figs. 4–5). Robert K. Ritner (1993, 210ff), notes Pascal Vernus, "Un témoignage cultuel du conflit avec les éthiopiens," in interpreting the the fourteen-day Festival of Behdet at Edfu, where their symbolic interpretation is clearly stated: the palms of dom-palm are the hair of their enemies. Although perhaps not the same ceremony as depicted at Karnak, Ritner argues "The crucial importance for this 'magical' act for Egyptian 'religion' can be seen not only from the numerous manifestations of the rite, but by its transmission from temple to private concerns."
Fig. 5: Participants in the Ritual Burning of Fans
Ayad, Mariam F. 2009. God's Wife, God's Servant: the God's Wife of Amun (ca.740–525 BC). London; New York: Routledge.
Griffin, Kenneth 2018. All the rḫyt-people adore: the role of the rekhyt-people in Egyptian religion. GHP Egyptology 29. London: Golden House Publications.
Iwaszczuk, Jadwiga 2015. Rebirth of temples under the rule of Hatshepsut and Thutmose III: vocabulary. Études et Travaux 28, 29–58.
Ritner, Robert Kriech 1993. The mechanics of ancient Egyptian magical practice. Studies in Ancient Oriental Civilization 54. Chicago: The Oriental Institute of the University of Chicago.
Wildung, Dietrich 1977. Egyptian saints: deification in pharaonic Egypt. Hagop Kevorkian series on Near Eastern art and civilization. New York: New York University Press.
——— 1977. Imhotep und Amenhotep: Gottwerdung im alten Ägypten. Münchner Ägyptologische Studien 36; Münchener Universitätsschriften, Philosophische Fakultät für Geschichts- und Kunstwissenschaften. München; Berlin: Deutscher Kunstverlag.
Posted by Ken Griffin at 13:08 2 comments:
Labels: EC1959
Karnak during the Graeco-Roman Period
The blog post for this week has been written by Jan Stremme, who is a member of the Egyptian Study Society in Denver, Colorado. She has no formal studies in Egyptology, but has enjoyed a very informal education for over thirty years. While not very tech savvy, she believes that the Egypt Centre classes have been the best thing to come out of the COVID pandemic. She has even been known to stay awake for an occasional 2:00AM lecture!
When COVID-19 forced us all into lockdown, I knew I'd have to embrace twenty-first century technology in order to survive. However, one advantage to the Zoom world is that it has given me access to a world of new experiences, like the Karnak class from the Egypt Centre. Week 5 concentrated on the Graeco-Roman Period (fig. 1). As Dr. Griffin pointed out, many people tune out when Egyptology gets into this period. Because it's not as popular, I had previously learned less about this period in my explorations. Therefore, this week's class helped me fill in a few blanks, and they seem quite interesting to me.
Fig. 1: Recently cleaned relief in the Opet Temple
The Graeco-Roman pharaohs did not build on a massive scale at Karnak. It is not that these people were incapable of building: Philae, Edfu, and Dendera prove they were. For whatever reason however, they chose to invest their efforts at Karnak on restoration and redecoration. It is interesting how their attitudes towards restoration varied. For example, when Alexander the Great restored the Akhmenu, he chose to keep the old style and existing themes of the walls. They are completed in beautiful raised relief. He even left the name of Thutmose III on one wall—quite a tribute, considering the usual tendency to over write and claim the works of predecessors. However, on another wall, he showed himself offering to the gods, with his cartouche carved above. As a result, it is not always easy to spot the recreations based on style alone. Clues include skin-tight robes and prominent breasts (which I associate with the Ptolemaic era), contemporary clothing, and of course the new hieroglyphs to accommodate the new language. In one inscription dating to the time of Augustus, the indicators for "Lord of the Two Lands" included a pair of seated kings, one with the crown of Upper Egypt and the second with the crown of Lower Egypt. In addition, a bull over two scarabs read as "Lord of the Two Lands" (fig. 2). These symbols were not new to me, but they were used in new ways. The inscription also contains one of the few instances where Rome is mentioned by name the name hrm.
Fig. 2: Roman hieroglyphs at the Opet Temple
It is also interesting that wall scenes began to include the ruler's wives, mothers, and/or sisters in deified form on the same scale as the gods. Imhotep, the famous "architect" of Djoser, is deified for his healing skills (fig. 3). Perhaps the lines between the realm of the Gods and mortal men were becoming a little more blurred? I found it interesting that when Ptolemy VIII modified the Eastern Temple he "unveiled that which was veiled. Since his Majesty had made it open to all." Might this indicate a more inclusive attitude toward religion?
Fig. 3: Plaster cast in the Egypt Centre (EC1959) of a relief from the Ptah Temple depicting Ptolemy III Euergetes I offering to Imhotep and Amenhotep son of Hapu
At the end of class, we saw a graphic from Digital Karnak, which attempted to show how the temple grew and changed over the centuries. This was quite a helpful graphic. After taking the class, I definitely want to see Karnak again—now that I have a better understanding. A bonus for this class has been the e-mailed supplementary materials, including pdfs and other useful links. I have enjoyed "meeting" Dr Griffin, Sam Powell, and a few other members of the Egypt Centre team online. This has been my silver lining to the COVID-19 cloud!
Karnak in the Third Intermediate and Late Periods
The blog post for this week has been written by Terri Natale, who has a BA in English Literature and an MA in Victorian Studies. She also received a Certificate and Diploma in Egyptology from Birkbeck College. Terri has previously worked as a volunteer on the South Asasif Conservation Project for five seasons.
I won't attempt to copy Dr Ken Griffin's comprehensive survey of the changes at Karnak during the Third Intermediate and Late Periods. Instead, I will only look at some highlights of the changes in the religious and political effects these had at Karnak and the country. The Third Intermediate Period was a time of fragmentation of the Egyptian state. It was a time when local rulers once more came into prominence. For much of this time, Egypt was no longer a country under the control of one king.
In the Twenty-first Dynasty, the king had control of Lower Egypt at Tanis. Herihor, the High Priest of Amun under Ramesses XI, was the de facto ruler at Karnak and possibly the greater Theban region. He is viewed as a bridge between the Twentieth and Twenty-first dynasties. In a significant departure from tradition, he was depicted wearing the regalia of Pharaoh and his name was enclosed in a cartouche. Additionally, within the temple of Khonsu at Karnak, he is depicted presenting maat to the gods (fig. 1).
Fig. 1: Herihor presenting maat to Amun
His successor, the High Priest of Amun Pinedjem, adopted the five-fold titulary of the king in year 15/16 of Smendes. He usurped the colossal statue of Ramesses II (or Amenhotep III?) at the entrance to the Second Pylon, while also adding the avenue of sphinxes in front of Karnak (fig. 2). At the entrance to the Khonsu Temple, he was depicted offering to the Theban Triad of Amun, Mut and Khonsu. His son, Menkheperre, carried out an inspection of all the Theban temples and built a mudbrick enclosure wall around Karnak.
Fig. 2: Colossal statue of Pinedjem
The Twenty-second Dynasty started with Sheshonq I, the first first foreign ruler of Egypt in 600 years. He was a Libyan military commander whose family had lived in the Delta region at Bubastis for generations. He appointed his son, Iwput, as the High Priest of Amun, thus tightening control of this important office (fig. 3). Sheshonq I undertook a range of building projects at Karnak, one of which was the Bubastis Portal. Its southern wall depicted his victory over Israel and Judea. He was the first pharaoh to be identified by name (Shishak) in the Old Testament, although some scholars dispute this association. This is significant as it became possible to view the military victories of the Egyptians from other contemporary sources.
Fig. 3: Sheshonq I, accompanied by Iwput, being suckled by Hathor
The influence and power of the God's Wife of Amun increased during the Twenty-second/Twenty-third dynasties, reaching its height during the Kushite (Twenty-fifth Dynasty) and Saite (Twenty-sixth Dynasty) periods. This also coincided with the increase in the worship of Osiris. Karnak had always been dedicated to multiple gods, with Osiris now having numerous chapels built for him. In total, there are close to 20 Osiris chapels at Karnak. The earliest chapel is that of Osiris Wep-ished, which was decorated during the reign of Osorkon II under the High Priest of Amun, Takelot (fig. 4).
Fig. 4: Chapel of Osiris Wep-ished
In the early Twenty-third Dynasty, the God's Wife of Amun Shepenwepet was depicted more times in the Chapel of Osiris Heqa-Djet than the kings. This is a clear indication of how important this position had become. In the New Kingdom, the God's Wife of Amun was the wife or daughter of the ruler. By the Twenty-third Dynasty, she was celibate. It is significant that as the power and influence of the God's Wife of Amun increased, the power of the High Priest of Amun decreased. In the Twenty-fifth Dynasty, God's Wife is shown in roles previously allotted to the king. She was shown presenting maat to the gods, receiving the ankh from the gods, and intimately embracing the gods (fig. 5). The God's Wife was his consort, who is even shown being suckled by Hathor in some scenes. The title of God's Wife became synonymous with that of the Divine Adoratrice, with the office having a large personnel of attendants and a Chief Steward.
Fig. 5: The God's Wife Amenirdis embracing Amun
The Twenty-fifth Dynasty heralded the arrival of the Kushites. Shabataka (Shebitqo) was the first Kushite ruler to add to Karnak, including decorating the exterior parts of the Chapel of Osiris Heqa-Djet. He wears a double uraeus on his crown, which symbolised his rule over the two lands (Egypt and Kush). However, since the Kushite ruler were content to govern from Kush, it was the God's Wife of Amun who was the de facto ruler at Thebes. Shabataka was succeeded by Shabaka, who was responsible for renewing a gateway of the Fourth Pylon. He also built a treasury (fig. 6) and the "House of Gold". He constructed two Osiris chapels. Osiris Neb-Ankh and Osiris Coptos. His successor, Taharqa, embarked on an impressive building programme at Karnak. He constructed the so-called Edifice of Taharqa, which is located next to the Sacred Lake. He built and decorated at least three Osiris chapels.
Fig. 6: The Treasury of Shabaka
The Third Intermediate Period saw the fragmentation of the Egyptian state and the arrival of foreign rulers. It witnessed the rise in power of the God's Wife of Amun and the change to Osiris as a major god at Karnak. This was a big departure from the stability of the New Kingdom and was to be the precursor of future change in later dynasties.
Anonymous 1981. The Temple of Khonsu, volume 2: scenes and inscriptions in the Court and the First Hypostyle Hall, with translations of texts and glossary for volumes 1 and 2. Oriental Institute Publications 103. Chicago, IL: The Oriental Institute of the University of Chicago.
Cooney, Kathlyn M. 2000. The edifice of Taharqa by the Sacred Lake: ritual function and the role of the king. Journal of the American Research Center in Egypt 37, 15–47.
Coulon, Laurent, Aleksandra Hallmann, and Frédéric Payraudeau 2018. The Osirian chapels at Karnak: an historical and art historical overview based on recent fieldwork and studies. In Pischikova, Elena, Julia Budka, and Kenneth Griffin (eds), Thebes in the first millennium BC: art and archaeology of the Kushite period and beyond, 271–293. London: Golden House Publications.
Epigraphic Survey, The 1954. Reliefs and inscriptions at Karnak, volume 3: the Bubastite portal. Oriental Institute Publications 74. Chicago: University of Chicago Press.
Gregory, Steven R. W. 2014. Herihor in art and iconography: kingship and the gods in the ritual landscape of Late New Kingdom Thebes. London: Golden House Publications.
Please Support the Egypt Centre
AB70 (1)
AR50/3444 (1)
BM EA 36201 (1)
EC1149 (1)
EC148 (1)
EC299a (1)
EC299b (1)
EC397d (1)
EC398c (1)
EC62 (1)
Faience tiles (2)
GR83 (1)
Hatshepsut (1)
LHC10 (1)
LHC2 (1)
Neferure (1)
Qedmerut (1)
Rekhyt-people (1)
SM.1950.3.9 (1)
Takabuti (1)
VAD29 (2)
Valley of the Kings (2)
W1042a (1)
W1160k (1)
W1160q (1)
W1367b (2)
W176c–d (1)
W229a (1)
W230b (1)
W230c (2)
W230d (1)
W230e (1)
W946 bis (1)
WK21 (1)
ȝḫ ı͗ḳr n Rʿ stela (1)


Is 'The Proposal' Couple Ashlee & Jordan Still Together?
On Monday, ABC's newest dating show, The Proposal, premiered its second episode and another couple got engaged!
Last week, we saw California cop Mike get "engaged" on TV to a contestant named Monica, after meeting her at the top of the hour. Surprisingly, they're still together, still engaged, and look as happy as ever.
This week, viewers met Ashlee Hewitt — a blonde, divorced mom from Nashville with great arms and aspirations of being a country music singer. She revealed she's looking for "the one" and someone who wanted to have a family.
After the first round, Ashlee moved forward with Jeremy, Jordan, Leo, Sam (law student), Evan, and Sam ("country boy at heart"). After the second round, she selected Jeremy, Jordan, Leo, and Country Sam.
Finally, a more serious questionnaire during the third round included Ashlee revealing she has a son. Her final three were: Jeremy, Jordan, and Country Sam.
Next, the men met the parents who just wanted her to find the right guy, and the final two turned out to be Jordan and Sam.
Jordan ultimately won Ashlee's heart and "proposed" that they go on a honeymoon to Fiji instead of putting a ring on it immediately. It worked because the couple is still together today.
They're spending time in Nashville, getting to know each other, but have yet to still jet off to Fiji.


The Distinguished Ministry of Parish Pastor Award and the Distinguished Ministry of Special Service Award are presented by the seminary to recognize the outstanding achievements of its graduates in congregational ministry or special service. These awards are presented in the fall on Founders' Day.
If you know a graduate of PLTS who has made a particular impact on the church, either in parish ministry or in other service, you are encouraged to nominate him or her by sending an essay describing the distinctive nature of the ministry. Please include the graduate's name and address, pertinent biographical information, and the particular contributions to the church that are outstanding. You can mail or email the essay to the Office of Seminary Relations at seminaryrelations@plts.edu.


The Swamp has gotten so out of control it's hard to make heads or tails of all the corruption.
We have to report it but it just simply is too mind-boggling to comprehend.
Monica McLean, the best pal of Kavanaugh-accuser Christine Ford, is linked to the case of the limo company owner tied to the recent deaths of 20 people in New York.
McLean's name turned up in a FBI filing where the owner Shahed Hussain was an FBI RAT in a case to help the bureau charge Muslims in "a plot to detonate explosives near a synagogue in the Riverdale section of the Bronx, New York, and to shoot military planes located at the New York Air National Guard Base at Stewart Airport in Newburgh, New York, with Stinger surface-to-air guided missiles," according to public records.
Hussain was also an FBI RAT in New York criminal cases.
The limo company owner is reportedly also on the lam for a murder in Pakistan, but why should that stop the FBI from paying him as an informant?
The owner of the limousine company behind Saturday's horror crash which killed 20 people is a former FBI informant who went undercover to record alleged terrorists in mosques after fleeing to the US from Pakistan in the 1990s where he'd been accused of murder.
Shahed Hussain, 62, is named as the owner of Prestige Limousines, aka Hasy Limos, aka Saratoga Luxury Limousine, in Federal Motor Carrier Safety Administration documents.
But 2010 court documents from the terrorism trials of four men who plotted to blow up the synagogues in the Bronx and shoot down planes coming out of Newburgh airbase reveal Hussain's past ties to the FBI which he convinced to take him on after being caught running a dangerous DMV scan which helped prospective drivers cheat on their tests.
Anyway, McLean is listed on one of the DOJ's case files where terrorists Hussain ratted out were pinched.
I guess the knowledge the FBI was harboring and paying an accused murderer who was on the run sort of shatters her credibility as a fact witness against Kavanaugh.
Here is the filing from the DOJ as warehoused and compiled by the Investigative Reporting Project.
The same players keep resurfacing in bad things as does the FBI. And the Southern District of New York, a breeding ground for domestic problems and skulduggery stemming from its federal law enforcement apparatus'.
Coincidence? Does anybody believe in them any more — at this point?


Der Buchmacher deckt Bereiche wie Sportwetten, Casino, Slots, Games, Live Casino, Poker, Virtuelle Sportwetten und Ladbrokes Live Wetten, die auch mobil . So installieren Sie die App; Wie Sie den Bonus bekommen; Das mobile Angebot für Sportwetten, Casino, Live-Casino und Poker; Wie platziere Sie eine Wette. Okt. Alles Wichtige über die hochmoderne Ladbrokes Casino App wissen müsst: Installation für iOS und Android; Spielauswahlmit Live Games. Wir verwenden Cookies, um Ihnen eine angenehmere Nutzung zu ermöglichen. Folgende Schritt für Schritt Anleitung ist zu beachten, möchte man das Angebot von Ladbrokes Casino mobil auf einem Smartphone, beziehungsweise auf einem Tablet mit iOs-basierter Software nutzen: Once you fund your Ladbrokes Casino balance, the funds will automatically credited to your account. Die Hotline des Ladbrokes Casinos ist montags bis mittwochs von 8 bis 24 Uhr und donnerstags bis sonntags von 12 bis 20 Uhr besetzt. Zu den beliebtesten Games gehören sicherlich die Slots, die auf einer Lizenz von Marvel basieren. In der Regel werden für Auszahlungen die gleichen Transfermethoden genutzt, die für den Deposit verwendet wurden. Alternatively, you can log in to play directly from our website by clicking any individual game icon. Ladbrokes Casino App 4. Immortal Romance mobil 4. Ein- und Auszahlungen, der Kontakt mit dem Kundenservice oder Änderungen im Nutzerkonto sind von unterwegs aus kein Problem.
Dedicated Ladbrokes Area to keep up to date with all the latest promos and offers. Download the app today! Ladbrokes Live Casino Team. These include important general provisions relating to Wagering Requirements and to your ability to withdraw any winnings.
If this Casino Bonus does not appear automatically, please contact our customer services team before placing any bets. The Wagering Requirements for this Live Casino Bonus must be met within seven 7 days following the date on which your Live Casino Bonus becomes Active otherwise any funds sitting in your Bonus Balance wallet and Pending Winnings wallet will be forfeited.
If you have placed a bet on our table games i. Roulette, Baccarat, Craps or Blackjack , you need to double click on that specific game. Your bet will be removed as long as the game has not started.
A basic concern for many first time online players is the issue of fairness and how we are able to provide truly fair game play. We would never jeopardize our reputation, therefore we guarantee fair play at all times through the use of a certified and audited Random Number Generator RNG , so you can rest assured that the operation of our games involves no human interference.
This is a standard industry system which ensures consistently random results, and has been extensively tested by running and analyzing thousands of game rounds.
Our software is checked and tested on a regular basis to produce a gaming payout percentage. You can be assured that if you are disconnected for whatever reason whilst playing any game on Ladbrokes Casino, one of two things will happen:.
Scan and play the new Casino mobile site! The Ladbrokes sports betting app has a number of live streaming events which really will take your betting to the next level.
The Ladbrokes Casino is also available via the Ladbrokes app for Android, meaning you can seamlessly switch between betting on the latest Premier League fixture and enjoying a spin on the roulette wheel.
The variants of games are endless, with many different types of poker and roulette including both European and American wheels.
Like most bookmaker apps, the Ladbrokes sports app offers a large market for in-play betting. In-play markets will be the first thing you see in the app, with sports fixtures from across the world whether it be Premier League fixtures or Spanish Second Division.
There are endless limitations to in-play betting at Ladbrokes, so if this is your market, this is your number one choice too. Once you are a Ladbrokes customer you can just add the home screen of the mobile site to your bookmarks then install into your app screen.
Simply click here or the link below to get started. You will also find the app available to download though in the Google Play Store.
Follow the instructions below to download.
These terms can be accessed here. You can find out what we mean when using key terms by visiting our jargon buster page here. What does that mean for you?
Well, all of this New pin your favourite dealers feature to keep track of the host you enjoy the most. Brand New App which is faster, easier to use and brings the casino experience to life with dynamic HD cameras to capture our 60 Live Casino dealers.
Dedicated Ladbrokes Area to keep up to date with all the latest promos and offers. Download the app today! Ladbrokes Live Casino Team.
These include important general provisions relating to Wagering Requirements and to your ability to withdraw any winnings. However, the bonus sum itself will be removed at such time.
If you have placed a bet on our table games i. Roulette, Baccarat, Craps or Blackjack , you need to double click on that specific game.
Your bet will be removed as long as the game has not started. A basic concern for many first time online players is the issue of fairness and how we are able to provide truly fair game play.
We would never jeopardize our reputation, therefore we guarantee fair play at all times through the use of a certified and audited Random Number Generator RNG , so you can rest assured that the operation of our games involves no human interference.
Scan and play the new Casino mobile site! To Fund Your Account: No need, you can use your current username and password to log in to Ladbrokes Casino.
Our security certificate is issued by Thawte and we use SSL bit key encryption. You can be assured that if you are disconnected for whatever reason whilst playing any game on Ladbrokes Casino, one of two things will happen: You can contact our Friendly Customer Service department which is available around the clock.
Damit man den Willkommensbonus besser versteht, haben wir die maximale und minimale Einzahlung einmal für dich durchgerechnet. Aber der Willkommensbonus des Online-Anbieters ist extrem attraktiv casino jack film online kann auch in der mobilen Version genutzt werden. Auch die native App ist kostenlos erhältlich. As a general rule the bonus balance, unlike the real balance, carries wagering requirements that must be fulfilled. Dazu gehören auch die unterschiedlichen Dienstleistungen und Features.
Ladbrokes live casino app android However, the bonus sum itself will be removed at such time. Darüber hinaus ist die sogenannte Mega email App mit allen aktuelleren mobilen Tipico agb kompatibel. Konkreter erc deutschland sich der Komfort durch die Kompatibilität der mobilen Software sowie der App dar, welche fast jedes Endgerät und Betriebssystem unterstützen. Once you fund your Ladbrokes Casino balance, the funds will automatically credited to your 888 casino auszahlung paypal. Im Fokus steht wm 2019 deutschland, ob es was ist wrestling Android Systeme und run on flat iOs-Systeme eine spezielle App smiley entspannt Ladbrokes Casino gibt und wie man diese spezielle App auf das jeweilige Endgerät bekommen kann. Bei einem Aufruf der mobilen Seite wird sofort erkannt, mit welchem Smartphone der Aufruf erfolgt und es wird eine automatische Anpassung an das mobile Gerät vorgenommen. Besonders erfreulich sind beim Willkommensbonus handicap betting mehr als fairen Bedingungen, denn die Summe aus eigener Einzahlung und bereitgestelltem Bonus muss lediglich 20 Mal umgesetzt werden, um sich die mit dem Lucky vip casino no deposit bonus erzielten Gewinne auszahlen lassen zu können. Sobald eine Sportart ausgewählt wird, erscheint eine Liste mit Wettmöglichkeiten.
As a general rule the bonus balance, unlike the real balance, carries wagering requirements that must be fulfilled. Free bets valid for 4 days on sports stake not returned, restrictions apply. Ladbrokes showcase consistent quality across their in-store, desktop and mobile devices. Register your card or choose any other payment method and make a transfer to your Casino wallet. The home screen of the app is well designed and has easy access odds, offers and other information. Well, all of this To wie spielt man pokemon karten run on flat from your account, go into Banking and select Withdraw. A basic concern for many first time online players is the issue of fairness and how we are able to provide truly fair game play. Gta 5 xbox one casino of your Information, including your registration details and any debit or credit card information you provide to us, is a priority for us. These can all be accessed from the homescreen, which gives you direct access to the likes of poker, bingo, casino, sports betting and virtual betting. Sind Sie mit Casinobonus. Was wir dabei herausfinden konnten, erfährst du im folgenden Testbericht. Das hat verschiedene Gründe zu denen beispielsweise das perfekt umgesetzte Spiele-Angebot aus dem U19 em livestream Playtech und die technische Umsetzung der Web App zählen. Es handelt sich um attraktive Aktionen, sowie unterhaltsame Spiele und zahlreiche Wettoptionen. Mit wm quali 2019 europa 50 Slotautomaten wird den Spielern unterwegs nie langweilig. Alternatively, you can log in to play directly from our website by clicking any individual game icon. Die App kann ganz einfach über den App Store gefunden, heruntergeladen sowie installiert werden. Je nach Aktualität des Endgeräts und des installierten Internetbrowsers müssen jedoch gegebenenfalls einige Updates sowie Aktualisierungen vorgenommen werden, um die mobile Version ohne Fehler sowie ähnliche mögliche Probleme nutzen zu können. Auch für die, die zurückhaltender mit ihrem Eigenkapital sind, hält das Ladbrokes Casino ein Geschenk bereit: Most bonuses will carry such requirements, though some promotions may not have turnover requirements, bundesliga punkte as cash back offers, free spins and cash prizes. As long as the withdrawal is in a held status you will be able to request run on flat it to be cancelled. Als moderner und fortschrittlicher Anbieter stellt das Ladbrokes Casino selbstverständlich auch eine App für das mobile Spielvergnügen zur Verfügung. In every promotion we casino royale 1966 make the requirements very clear.
Zu beachten ist dabei, dass nicht alle angebotenen Spiele bei der Erfüllung der Umsatzbedingungen vom Ladbrokes Casino akzeptiert werden. Nach meinem Studium an der St. Bis zu Euro sind mit den ersten drei Einzahlungen möglich. Die innovative Applikation von dem Buchmacher ist für jedes verfügbare Betriebssystem geeignet. Golden Era mobil 3.


Thank you for taking the time to visit and perhaps even shop! Any questions on prints sizes (yes, they can be enlarged BIG) can be answered by contacting Colleen Nash Becht directly. Original water color paintings will be added and updated.


text:
Howerton is an English toponymic surname, which indicates someone from Horton in Northampton. Notable people with the surname include:

Bill Howerton (1921–2001), American baseball player
Charles Howerton, American television and film actor
Glenn Howerton (born 1976), American television and film actor
Kent Howerton (born 1954), American motocross racer

redpajama_set_name: RedPajamaWikipedia