text:
is a Japanese action seinen manga series written and illustrated by Shinjirō. It was serialized by Media Factory in its Monthly Comic Alive magazine between November 2009 and June 2017. The series was compiled into thirteen volumes between 2010 and 2017. The series is published in French by Bamboo Édition's Doki-Doki imprint. An anime adaptation was greenlit and aired from July 2016 to September 2016. The manga has been licensed for release in English by Yen Press.

Plot
After saving a homeless man from some thugs, Seigi receives a strange tattoo from the man as a gift. This act leads to a series of events that will pull Seigi into the middle of a conflict between a special U.S. Army unit and the Kingdom of Selinistan as they scramble to collect "Power Crests", weaponized ancient artifacts with the ability to shift the balance of power in the world.

Characters

U.S. forces and allies

Seigi has a strong sense of justice and ends up receiving a mysterious tattoo after rescuing a homeless man from some thugs. Seigi has trained in the Akatsuka-style of jujitsu since childhood under the supervision of his enthusiastic grandfather. His Power Crest, "Void Maker", allows him to create black holes and regenerate from injuries; it's also one of the few tattoos which does not require a trigger like the others. Due to his parents having "weird ideas" when he was born, his given name is written in kanji but pronounced as the English word. Seigi preferentially goes by his nickname, the traditional Japanese pronunciation of his given name.

Bluesy, aka "Izzy", is a mysterious girl who appears before Seigi. Izzy has overwhelming physical power thanks to her Power Crest, which gives control over air. She's a U.S. Army lieutenant in charge of recovering the tattoos in Japan. Despite appearing to be of high school age, Izzy is older than Tom, a side effect of her Power Crest stopping her aging. She later loses her left arm during a battle with Cal.

Touko is Seigi's classmate and childhood friend, she also has a not-so-subtle crush on him. Her most distinguishing feature is her well-developed body compared to other girls her age. After being possessed by Iltutmish, she accidentally gets a Power Crest in her forehead which (like all Power Crests) increases her physical abilities when activate. She is later killed and devoured by a monstrous Iltutmish causing Seigi to fall into despair.

An otaku with a love for moe characters working as Izzy's subordinate. He possesses a copied Power Crest known as "Noise Canceller" which allows him to negate the powers of other tattoo users. Because of his lacking fighting prowess, he's often ends up injured after every confrontation.

The commander of the Curse Unit of the U.S. Army and a good friend of Izzy. Nicknamed "Foxfire", her Power Crest allows her to create fiery explosions using the components in the air, she often teases Izzy about her small bust.

A Brigadier General in the U.S. Army who prefers to be called "Colonel", he's a patriot as well as the leading member of the tattoo program. Even after losing his right arm, both legs, and even his vision in the fight against Cal, he refuses to let his disabilities hold him back.

A soldier from the Japan Self-Defense Forces and one of the few Japanese Power Crest users, he offers to help Seigi and his group. Much like Tom, Tamaki's also an otaku and the pair quickly become friends. Later on, he proposes to his girlfriend (who's also an Otaku) despite knowing that could rise death flags. Nicknamed "Bull Demon", his Power Crest allows him to warp dimensions around himself to accelerate at incredible speeds, ignoring all possible damage to his body.

Independents

A highly skilled combatant whose motives are unclear. He's an old acquaintance of Izzy and a defector from both the U.S. Army and Kingdom. Like that of Seigi, Brad also possesses the Void Maker, but Brad's Power Crest is killing him slowly. He becomes a mentor of sorts towards Seigi, but later on sacrifices himself in order to save Seigi and Izzy, with his soul and memories being transferred over to the former.

A renegade American scientist who absconded the country with a number of Power Crests, one of which being Void Maker which he latter gave to Seigi as thanks for saving his life. He also helps Brad Blackstone in order to access and modify the source code of his tattoo.

Kingdom of Selinistan

The princess of the Kingdom of Selinistan. A nationalist who desires world domination, she seized power in a coup d'état which killed both of her peace-minded parents. Aryabhata wishes to change the world to suit her own ends, regardless of what others may think or feel. She strikes a beautiful figure, and comports herself with dignity, but her love of games is unequaled. Like Seigi, her Power Crest doesn't require a trigger, Arya's Power Crest allows her linked to the source of all other Power Crests, thereby allowing her to utilize any other power at will. Created as a tool to control the Power Crests, once she found out about the abuse and cruel experiments perpetrated by the king, her resentment towards humanity drove her to want to rewrite the world.

A girl member of Brahman, who has pledged her allegiance to Arya. Nicknamed "Schrödinger's Cat", her Power Crest allows her to possess others as well as phase through matter so long as someone acknowledges her presence. She and Lurker have a pet capybara named "Mickey" and later on adopt a one-eyed kitten they find on the street. With Arya's power, Il can also turn herself into a giant, black smilodon.

A loyal servant and close aide to the princess, Cal's the Vice-Commander of Brahman. Nicknamed "Aegis Armadillo", her Power Crest allows her to create powerful barriers that can be used to block incoming attacks as well as cut nearly anything, she's also a deadly swordswoman as well. Despite her serious demeanor, she's easily frustrated by Arya's antics. She also admits to being in love with Brad but he turns her down in favor of Izzy.

A sadistic, whip-wielding man working under Arya, Lurker is a member of Brahman. He later develops an obsession with Izzy because of his Lolita Complex and the fact she blasted off two of his fingers. Nicknamed "Behemoth Viper", his Power Crest allows him to increase the mass of his whip (and possibly other items), allowing him to rip apart rock and metal as easily as he can flesh and bone.

One of Arya's "clone" sisters who doesn't hate humanity like her. She explained BB the origins of Arya and why she wants to remake the world.

Media

Manga

Anime

An anime adaptation produced by J.C.Staff was announced. It was initially slated to premiere in 2015, but it broadcast between July 4, 2016 and September 19, 2016. The anime was released across six Blu-ray volumes. The opening theme is "Belief" by May'n, while the ending theme is "EGOISTIC EMOTION" by idol unit TRIGGER, which is composed of Izzy's and Tōko's voice actors, Mikako Komatsu and Chika Anzai respectively. Crunchyroll has licensed the series in North America, while Funimation released it on home video as part of the two companies' partnership.

References

External links
English
  at Hachette Book Group

Japanese
  at Media Factory

Action anime and manga
Dark fantasy anime and manga
Crunchyroll anime
Media Factory manga
Kadokawa Dwango franchises
Seinen manga
Yen Press titles

redpajama_set_name: RedPajamaWikipedia


text:
Could Manipulating the Microbiome of Artworks Prevent Their Decay?
Treating the microbial community residing on a painting with probiotics may offer a way to stave off biodegradation, a study suggests.
ABOVE: © ISTOCK.COM, BET_NOIRE
On the ceiling of the basilica of Santa Maria in Vado, a church in Ferrara, Italy, is a circular canvas nearly three meters in diameter. On it is a depiction of the Virgin Mary being crowned queen of heaven by God, Christ, and the Holy Spirit. Called Coronation of the Virgin, the painting is believed to be a masterwork of early Baroque artist Carlo Bononi and has hung on the church ceiling since the 1600s, where it remained until 2012. That year, an earthquake struck Ferrara, forcing conservators to remove the painting from the ceiling. It was then leaned against an interior wall of the church, and later returned to its rightful place after restoration.
Despite centuries on the ceiling and some time on the floor, the artwork didn't show severe damage to its paint layers, with the exception of a network of cracks and some small cuts and deformations. The back of the piece, however, had severe deterioration as a result of exposure to birds, insects, and rodents that got into the church through a fissure in the ceiling and roof of the building where the painting hung. And they're not the only critters that got cozy with the painting; microbes also inhabited the work—feeding on its glue, canvas, and paint.
Thanks to their often degradable materials, artworks such as paintings are prime locations for microbial colonization, Sante Mazzacane, a researcher who studies chemical and microbial pollution at the University of Ferrara, tells The Scientist. In the past, art conservators and researchers have studied the effects of microbes on stone monuments, murals, and frescoes in order to better understand how to preserve them. But little work has been done to understand the microbial degradation of canvas paintings.
Artworks such as paintings are prime locations for microbial colonization.
Curious to know what was living on Coronation of the Virgin so he could properly restore it, Fabio Bevilacqua, a conservator in Bologna and Ferrara, teamed up with Mazzacane and Elisabetta Caselli, a microbiologist and medical geneticist also at the University of Ferrara, to identify the painting's microscopic inhabitants. The team rubbed rayon swabs on regions of the front and back of the painting and took tiny patches of paper and cotton fibers from the back of it. They then put the samples on agar plates to culture the microbes growing there.
Using optical and scanning electron microscopy, the team identified the microbes as several species of Staphylococcus and Bacillus bacteria and Aspergillus, Penicillium, Cladosporium, and Alternaria fungi. The researchers found that Staphylococcus microbes hung out mostly on the front of the piece, while the Bacillus species inhabited the back of the painting. As for the fungi species, Aspergillus typically congregated in the darker colors of the work, the reds and browns, while Cladosporium hunkered down in the lighter colors, the yellows and pinks, and Alternaria lived on the part of the painting that had touched the church floor (PLOS ONE, doi: 10.1371/journal.pone.0207630, 2018).
"The more you know about a painting, the better equipped you are to understand what variables are affecting its deterioration and how to restore it," says Bill Brown, chief conservator at the North Carolina Museum of Art in Raleigh, who was not involved in the study. He was especially interested in the authors' suggestion of a possible relationship between fading in red layers of paint and certain species of Bacillus and Aspergillus—although he's seen this sort of fading in other works, the damage isn't usually connected with microbes.
BONONI'S BACTERIA: The Italian artist's Coronation of the Virgin (below) is teaming with microbes, according to a recent study. Researchers identified Staphylococcus species (above, a–c) on the painting's front and Bacillus species (above, d–f) on its back.
Caselli et al., PLOS ONE, 13:e0207630, 2018
WIKIMEDIA COMMONS, Nicola Quirico
Understanding the microbiome of the piece did indeed help Bevilacqua determine what techniques he could use to decontaminate Coronation of the Virgin as he worked to restore it. One option was chemical biocides, which can wipe out all the microbes on an artwork. But this approach can open the painting up to infiltration by new microbial species—some of which may be even more damaging. So Caselli and Mazzacane looked for an alternative, drawing on some of their own research into the use of certain bacterial species as probiotics.
In work published since 2014, the researchers have shown that probiotics can prevent harmful bacteria from growing on surfaces in hospitals via competitive antagonism—where the probiotic uses up the nutrients that harmful bacteria need to survive. Using an experimental probiotic treatment on those surfaces led to a 52 percent decrease in hospital patient infections and a 75 percent decrease in antibiotic treatment costs, Mazzacane says. Maybe, he and his colleagues thought, the technique could be applied to the painting to get rid of the harmful microbes while preventing others from invading.
The researchers tested the idea in the lab. They ordered the bioactive product used in their hospital experiments from a local company, diluted the mixture in sterile water, then spread it on agar plates growing the microbial species found on the painting. The bioactive solution—comprising spores of Bacillus subtilis, B. pumilus, and B. megaterium—appeared to inhibit the growth of the painting's microbes, though the team has not yet tried the microbial treatment on the painting itself, opting for a more traditional biocide treatment.
"It is extremely valuable to look for new and different ways to preserve art," Tom Learner, head of the science division at the Getty Conservation Institute, who was not involved in the study, tells The Scientist. "I fully support exploring any novel approach like this."
The results are preliminary, Mazzacane notes, but do suggest that some Bacillus bacteria could be used as a probiotic to prevent the growth of microbes that damage artwork. Of course, the team still needs to ensure that those Bacillus species don't themselves cause damage. Treating masterworks with anything other than tried-and-true conservation methods isn't easy to do in the art world, so fully checking the safety of any new treatment is important, Learner says. "There is a general reluctance by conservators to carry out any kind of treatment that requires an invasive procedure, such as this," he says, "so the onus really is on the researchers to convince conservators that the treatment is safe, and hence one to consider."
degradation
Could Manipulating the Microbiome Treat Food Allergies?
How Manipulating the Plant Microbiome Could Improve Agriculture
How the Microbiome Influences Drug Action
Intracellular Magnetic Manipulations

redpajama_set_name: RedPajamaCommonCrawl


A silver halfgroat of Elizabeth I, (1558-1603). Reverse: CIVITAS LONDON; square shield on cross fourchee. North no. 2016. IM: hand, (1589-1592).
Obverse: E D G ROSA SINE SPINA; Crowned bust left with two pellets behind.
Obverse description: Crowned bust left, two pellets behind.
Reverse description: Square shield on cross fourchee.


text:
Q: Building RSS from other RSS feeds, how to prevent loop / recursion / circular inclusion? This is an RSS feed (A) where the user can add several images, but he/she can also add a RSS feed (B) from a different user with images. When requesting feed (A), the server then fetches feed (B), and the images from the feed are then added to the requested feed (A).
What are some mechanisms or options to prevent infinite circular recursion?
e.g. when feed (B) also includes feed (A)
// Feed A setup
// - image1a
// - image2a
// - feed-B

// Feed B setup
// - image1b
// - feed-A

// fetching / assembling feed A
// - image1a
// - image2a
// - (A fetches feed-B)
// - image1b
// - (B fetches feed-A)
// - image1a
// - image2a
// - (fetched A fetches feed-B again)
// - image1b
// - (second B fetches feed-A again)
// .. recursion

A: There are three solutions:

*

*Store the original feed id with each item and forward only items created initially for each feed,

*or forward all items for each feed, and pass around a list of all feeds the item has been in (and check that list),

*or use a unique itemID for each RSS, store it only once, put a unique constraint or primary key on the itemID, and thus never store an item twice for each feed.

A: As it turns out, the solution is in several stages.
1 locking : On request return a copy of the cached XML. During building the feed XML, set a lock. This prevents external feeds that are fetching this feed, from triggering a second new build. The external feed will only receive the cached XML.
2 identify items : The lock stops a potential runaway process, but the feed XML does grow on every request with the previously cached XML items. To prevent duplicates add a unique identifier for the feed to each "guid" field. If an item is the feeds own, don't include it and log a message (and notify if needed).

redpajama_set_name: RedPajamaStackExchange


As we have discussed in our Lengthonomics blogs, there are many times that 100m of cabling is not enough to reach where the end device needs to reside. GameChanger was designed to extend the distance supported by a single length of cable for longer distance Ethernet and Power of Ethernet applications. This solution eliminates IDFs, additional devices (repeaters, extenders and transceivers) for lengths up to 850' requiring 10Mb/s and PoE+ and lengths up to 656' (200m) for 100Mb/s and Gigabit Ethernet and PoE+ applications supporting cameras, WAPs, additional switches, and other Ethernet IoT edge devices.
In the past, the addition of repeaters, extenders, and transceivers have made not only verification of the overall link, but troubleshooting of failed communications difficult at best. When additional devices are in line, they require various levels of expertise to troubleshoot. In the case of an inline repeater that is powered, an electrician, low voltage engineer, and network engineer may all be needed to troubleshoot the problem. Where multiple devices are inline, this could take hours. If one assumes that the hourly cost for the electrician is $100, low voltage contractor is $85, and a network technician is $125, the hourly cost for one hour of troubleshooting is $310.00. With inline powered devices, the electrician would only be needed if the end power is at fault. So the low voltage contractor and network engineer would be used for a combined total of $210 per hour.
One problem with inline repeaters/extenders is that they are not always clearly documented as to location and may get buried with subsequent layers of cable making them difficult to find. Often these trades work with a 3-hour minimum on-site fee, making a single failure's price nearly $1,000 per hour when all three trades are used. To further complicate things, if multiple repeaters are inline, the number of reasons that a problem exist will be compounded by the number of components. Other things to consider will be time in lifts, up and down ladders, and should the cable be too short between components or if the repeaters can't be found, the cost to replace the channel after troubleshooting efforts fail. With powered fiber cable, should either the copper side or fiber side fail, both would need to be replaced as it is a hybrid cable. And, of course, to be considered is the cost of downtime. With security cameras, downtime could be critical due to the lack of visibility to a monitored area.
Long ago, someone coined the acronym K.I.S.S. "Keep it simple" is true today. With GameChanger, it is simply a matter of running the channel. In the past, validation was determined by turning on a cable and making sure the end device had communication. Today, there are ways to test this long link. We are proud to announce that there are multiple ways to test the full channel, the latest of which is the Fluke DSX CableAnalyzer Series of testers and via upgrade to existing DSX users. The test takes 11 seconds and will certify that the cable will support the applications as intended. As a leading tester for the cabling industry, it was important to have our parameters in the Fluke tester. The simple run once, test and done makes the GameChanger tested with Fluke a simple turnover from the installer to the customer with printed validation that the link will work. Unlike other methods that don't allow for end to end testing with all components in place, but rather testing channel components hoping the sum of all parts perform as intended. GameChanger and Fluke, it really is that simple. For a full list of supported testers contact Paige sales, visit our GameChanger landing page here.


text:
Home / News / Uncharted: The Lost Legacy (PS4) Review
Uncharted: The Lost Legacy (PS4) Review
Keenan McCall August 23, 2017	News, past, PS4 Reviews, Reviews Leave a comment 4,101 Views
It can be safely said that the "Uncharted" series will be just fine without Nathan Drake.
When it was announced the DLC for "Uncharted 4" had evolved into its own offshoot title starring longtime side character Chloe Frasier and newcomer Nadine Ross, some were skeptical about how well the series would fare after sending its main hero off with no way of returning. "Lost Legacy" puts all of those doubts to rest, providing a return to the series' roots while also sewing hope for new story lines focused on fleshing out the series' capable new protagonists.
Story and Characters
"Uncharted: The Lost Legacy" follows Chloe Frasier after the events of the fourth game, hot on the trail of an ancient treasure known as the Tusk of Ganesh. Hidden away in a long lost city, she has tracked it down using clues left behind by her father during his own search. The only problem is that a brutal revolutionary leader named Asav is also after the Tusk and willing to do anything to get his hands on it.
Enter Nadine Ross. Disgraced after losing her mercenary company Shoreline at the end of the last game, she has agreed to work with Chloe to outsmart Asav and use her share of the profits from the treasure to rebuild her company. Both chasing their own goals, the two must work together to uncover the Tusk before Asav can use it to achieve his dark ambitions.
The story is a return to the action flick spectacle of the original three games. Explosions, gunplay and adventure are matched by light hearted banter and jokes between the characters, making for an adrenaline packed ride that flies by. It's a nice change of pace from the more somber tone of "Uncharted 4" and makes for a game you can lose yourself in much more easily, enraptured by how the two heroes will work their way out of the latest obstacle.
Of course, this is all thanks to the phenomenally written characters of Chloe and Nadine. Both feel fleshed out and believable with clear ambitions of their own. Chloe's desire to bring closure to her father's hunt for the Tusk, Nadine's drive to re-establish her livelihood and the clashes these desires bring make the story all the more enthralling, especially as the two learn more about each other and build up a trust in one another. Small touches like offering a hand to one another while climbing or deciding who drives bolster this, making for a pair that easily has plenty more adventures to entertain players with.
Unfortunately, the same can't be said of the villain. Asav doesn't quite live up to their level and feels a bit flat, seemingly pursuing his plans for no other reason than to be evil. He still serves as a decent obstacle for the two, but he won't exactly be remembered for a worthwhile character arc.
The game uses the same mechanics players have come to know over the past four installments: Run through jungles, temples and cities, climb specially marked stones and structures, duck in and out of cover while exchanging fire with enemies, collect optional treasures and so forth. Everything feels just as refined as past "Uncharted" games and players of the past games should have no problem slipping back into their grooves.
"Lost Legacy" does introduce a more integral open world segment than the fourth game, but it feels a bit empty and can be cumbersome when one wants to keep going through the story. There are also moments when traversing climbing segments where a ledge that looks safe ends up being instant death. It never causes a major loss of progress, but it is frustrating when that same ledge becomes safe just because the character grabbed the ledge a few feet away first.
Puzzles still play a heavy role in gameplay to surprisingly good effect. The occasional "push this object" or rotation puzzle still make appearances, but there are also some clever new jumping and shadow based puzzles which actually provide some challenge and force the player to think them over.
Animation and Sound Design
Much like past entries into the series, "Lost Legacy" is stunning to look at with amazingly rendered characters and attention to detail. Beams of sunlight filter through gaps in crumbling stone ruins, bullets zip through the air and through cover, and Chloe and Nadine's faces display minute changes in emotion. Even small moments like looking at Chloe's phone to see a newly taken photo take longer when one notices a new cut has shown up on her hand, fresh from her brawl with that last enemy soldier.
Sound effects and music also carry their torches brilliantly. The sounds of gunfire and collapsing stone structures suck one into the world, adding to the tension of rushing to the next patch of cover or climbable pillar. Henry Jackman's latest composition serves as a perfect accompaniment to the gameplay and story, building to climaxes of strings or slow and somber tones perfectly.
Final Say
"Uncharted: The Lost Legacy" dispels any doubts that the series can't go on without Nathan Drake, providing a thrilling adventure with promising new protagonists in Chloe and Nadine. The future is bright for this franchise, as there's still clearly more adventures to be had with it.
Release date: August 22nd, 2017
Platform: PS4
Publisher: Sony
Developer: Naughty Dog
A new legacy found
Story and Characters - 90%
Gameplay - 85%
Animation and Sound Design - 95%
"Uncharted: The Lost Legacy" dispels any doubts that the series can't go on without Nathan Drake, providing a thrilling adventure with promising new protagonists in Chloe and Nadine.
Tags naughty dog PlayStation 4 sony Uncharted Uncharted: The Lost Legacy
About Keenan McCall
Keenan McCall is a journalist and writer with a passion for animation. From video games to anime, anything that sets art in motion will get him talking and writing nonstop.
Previous Injustice 2 expands with Raiden, Black Manta, and Hellboy
Next Call of Duty: WWII reveals Headquarters, the game's social hub


This qualitative exploratory research investigates how Canadian Jewish girls understand the discursive stereotype of the Jewish American Princess (JAP), and how they take up these understandings of the J AP in relation to their identities. Three focus groups and six interviews were conducted with girls attending Jewish high schools in Toronto, Canada to explore these questions. From a third wave Jewish feminist perspective, and taking a mediated action approach to identity, two analyses were conducted. A thematic analysis of peer relations, gender, community, and religious understandings demonstrates how aspects of individual identities mediate interpretations of the JAP. A series ofpor t rai t s of JAP-related identity were constructed to analyze how the JAP discursive stereotype also functions as a cultural tool that is taken up by the participants to mediate expressions of their identities. These findings establish the contradictory ways these Jewish girls describe, interpret, and utilize the JAP discursive stereotype, and the complex roles it plays in their social worlds.


The Court was hearing an appeal challenging a 2010 judgment rendered by the Joint Civil Judge, Senior Division, Sangli. The appeal for succession and heirship certificate was filed by two ladies, Draupada Jaydeo Pawar and Indubai Jaydeo Pawar, who claimed to be wives of the deceased Jaydeo Pawar.
Draupada claimed to have married the deceased in 1979 and applied for heirship after Jaydeo's death. Indubai had also filed an application for heirship, contending that she got married to the deceased in 1981 and had filed an application for maintenance a few years later, which was decided in her favor.
The Trial Court Judge had found in favor of Indubai, ruling that Draupada had failed to prove a valid marriage with the deceased. Meanwhile, Draupada passed away. The Trial Court then directed to issue succession certificate in Indubai's name, enabling her to arrears of family pension and future family pension. This was however on the condition that she would pay a share of the family pension to Draupada's five children. This order was challenged by Draupada's children before the High Court.
The appellants had submitted various documents to support the claim of Draupada's marriage to the deceased. They also submitted Jaydeo's Will, which he had executed before his death. He had bequeathed the entire property in favor of his wife Draupada through the will. On the basis of the will, Draupada had also succeeded in receiving the Letters of Administration of movable and immovable properties. Further, Draupada was named as Jaydeo's nominee in his pension papers. They hence submitted that Indubai's status as a second wife was illegal and that her marriage with Jaydeo was void.
On the other hand, Indubai had claimed that all documents produced were forged and were rightly disregarded by the Trial Court. She had further submitted that pension is not an 'estate' of an employer, which would be disposed of by a Will. Therefore, she claimed, the bequeathing of pension in favor of Draupada in the Will was not legal.
The Court ruled in favor of Draupada and disregarded the evidence of the written statement filed by Jaydeo in the case for maintenance filed by Indubai, wherein he had not mentioned Draupada. It opined that the suppression of the fact of first marriage by Jaydeo was obvious because he was in Government service and if he would have disclosed the fact of his first marriage, he would have been charged for misconduct under Rule 26 of the Maharashtra Civil Services (Conduct) Rules.
With regard to the question of bequeathing family pension through a Will, the Court observed that payment of pension is strictly governed by the service rules and therefore, they cannot be an 'estate' disposable by will. However, the Court observed that the statements made in the will about the status of Draupada and his final wish that Draupada alone should have the right over his pension, corroborated the fact of valid nomination of Draupada as his first wife. The Court thereafter held that family pension cannot be paid to the second wife, as she cannot claim to be a widow entitled to pension.


'Whats Cars' Car of the year.
What is (going to be) your first car?
What do you want your first vechile to be?
Thomas Cook & Monarch - rumbled!
The new Range Rover Out 1012!
Look at this car accident!!!
Fully Comp or Third Party?
Cheap but decent 1st cars?
Central london low emission zone.
For all you plane lovers.
looking at a new car!
Saw a C-130 land at EGGW tonight!
What are you paying for insurance?
Driving for 15 year olds.
Worlds first wooden sports car!
Time to bring back the Concord?
The Tata Nano- Great or terrible?
A day down at PIK.
Worst Week In History Of Aviation!
Going To New York Tomorrow.
Funny Air Traffic Control quotes.
How much is your Insurance?!
Custom Car Install my sound system :) work in progress..
GAHHH, what do I do?
What colour shall i get?
Whats your favourite thing to do on holiday?
Tesla, 0-60 4 seconds flat.
R32 Parts - Interior Pics.
Mexico in a week on Monday!
Has anyone been to Japan?
R32 bumper & DVD Player installed!
Mongoose Menace 08, should i get?
Sir Alan Sugar 'crashes' at Barton.
Has anyone been to Miami?
Whats your favorite form of transport?
off to germany in 6 hours.


Just say CC: Volkswagen will no longer use the Passat name for its latest coupe-convertible.
VOLKSWAGEN has discarded the 'Passat' moniker from its CC four-seat coupe as part of a mid-life facelift that sees the car move further upmarket.
The German brand's refreshed medium-size luxury contender made its debut yesterday at the LA Auto Show with more conservative front and rear styling and an array of new driver-assist technology.
The revised naming should help differentiate the car from its more humble Passat five-seat sedan and wagon siblings when its worldwide launch kicks off from February next year.
Volkswagen Australia general manager of press and public relations Karl Gehling told GoAuto the CC will go on sale locally by the end of 2012.
As we reported earlier this month, the facelifted model receives a redesigned nose and tail that aligns it more closely with the rest of the Volkswagen range.
The German marque has ditched the current model's teardrop headlights in favour of the sharper design found on the revised Passat, Eos and Tiguan.
The new lights are complemented by a much bolder three-bar chrome grille and a larger, more angular front bumper and fog light design than the current model.
Matching the new nose is more square-edged rear-end styling that incorporates LED tail-lights, mirroring those of the Passat sedan introduced to Australia earlier this year.
The CC is said to be the first Volkswagen to package Side Assist Plus with Lane Assist, which together warn of vehicles in the car's blind spots and can intervene with steering if it detects an imminent collision.
Also new are a Fatigue Detection system that monitors the driver's steering behaviour and sends out a warning at signs of tiredness, Dynamic Light Assist automatic high-beam glare control, and a camera-based traffic sign detection system.
Available as an option will be a proximity sensor in the boot that allows it to be opened wirelessly with a kicking leg motion (providing the person is in possession of the key), as well as a towbar that extends and retracts electronically with the push of a button.
It is unclear which of these features will be offered on local examples when the car arrives in this market next year.
The CC gets a bigger list of standard features in overseas markets – including bi-Xenon headlights with static cornering function and a touch-screen sound system – but these are already standard on the highly-specified current model sold in Australia.
The CC's engine line-up is unchanged, with a selection of four-cylinder diesels (with idle-stop) and four- and six-cylinder petrol units.
Volkswagen currently offers the sleek executive car in Australia as either a front-drive 2.0-litre turbo-diesel or in flagship 3.6-litre V6 petrol with 4MOTION all wheel-drive guise, both linked to the brand's DSG dual-clutch transmission.
Passat CC sales in Australia are down 35.3 per cent to the end of October, despite a mid-year upgrade that included second-generation Park Assist, idle-stop, regenerative braking and minor interior additions like new trim and a dash-mounted analogue clock.
Just 522 examples of the car were sold (against 807 for the same period last year), giving it a 3.6 per cent share of the over-$60k medium segment.


text:
New 4-Star Dublin Hotel Gets Planning Green Light
January 16, 2017 9:58 AM By Publications Checkout
One of the country's leading businessmen, Eamon Waters, chief executive of Panda Waste, looks set to press ahead with the building of a new seven-storey, 124-bedroom hotel in Dublin City Centre after his planning application was approved by Dublin City Council.
The location of the new four-star development is on Ship Street, close to Dublin Castle in the capital's city centre, reports The Sunday Times, which adds that Waters paid around €4 million for the 0.2-acre site.
The new hotel will be situated beside the Radisson Blu on Golden Lane, which was last month handed the planning go-ahead to add an additional 103 rooms, bringing the total number of rooms to 255. The Sunday Times also reports that Radisson Blu owner, Padraic Rhatigan, has submitted plans for apartments, a convention centre and a public square on his site.
Last week, Paddy McKillen Jr' planned new six-storey, 60-bedroom hotel was given the the green light for development on Dublin's North Wall Quay.
Paddy McKillen Jnr
Radisson Blu
Fáilte Ireland Hosts Its First Event On Driving Climate Action
Representatives Of Italian Tour Operator Francorosso Explore Ireland
Dublin Accommodation Property Being Offered For Sale
Fáilte Ireland Welcomes Golf Tour Operators To Golf Tourism Convention


This cream cheese and mayo based dip is made using imitation crab and seasonings. If you are lucky enough to have some fresh or canned crab meat on hand that would make for an even more special treat. This page contains a crabmeat dip recipe.
this sounds really good, and i want to try it. Just 1 question tho, do you thaw and drain crabmeat first?


text:
Q: data getting in react data grid only if it has blank row in advance
Notice for loop setting some row  but that i not needed
 but if i do not use it data is not getting in react data grid how to remove
 the for loop from code?


text:
import datetime
import decimal
import json
import traceback

import six
from django.conf import settings
from django.core.mail import EmailMessage
from django.db import models
from django.utils import timezone
from django.utils.encoding import smart_str
from django.template.loader import render_to_string

from django.contrib.sites.models import Site

import stripe

from jsonfield.fields import JSONField

from .managers import CustomerManager, ChargeManager, TransferManager
from .settings import (
    DEFAULT_PLAN,
    INVOICE_FROM_EMAIL,
    PAYMENTS_PLANS,
    plan_from_stripe_id,
    SEND_EMAIL_RECEIPTS,
    TRIAL_PERIOD_FOR_USER_CALLBACK,
    PLAN_QUANTITY_CALLBACK
)
from .signals import (
    cancelled,
    card_changed,
    subscription_made,
    webhook_processing_error,
    WEBHOOK_SIGNALS,
)
from .utils import (
    convert_tstamp,
    convert_amount_for_db,
    convert_amount_for_api,
)

stripe.api_key = settings.STRIPE_SECRET_KEY
stripe.api_version = getattr(settings, "STRIPE_API_VERSION", "2012-11-07")

class StripeObject(models.Model):

    stripe_id = models.CharField(max_length=255, unique=True)
    created_at = models.DateTimeField(default=timezone.now)

    class Meta:  # pylint: disable=E0012,C1001
        abstract = True

class EventProcessingException(models.Model):

    event = models.ForeignKey("Event", null=True)
    data = models.TextField()
    message = models.CharField(max_length=500)
    traceback = models.TextField()
    created_at = models.DateTimeField(default=timezone.now)

    @classmethod
    def log(cls, data, exception, event):
        cls.objects.create(
            event=event,
            data=data or "",
            message=str(exception),
            traceback=traceback.format_exc()
        )

    def __unicode__(self):
        return six.u("<{}, pk={}, Event={}>").format(self.message, self.pk, self.event)

class Event(StripeObject):

    kind = models.CharField(max_length=250)
    livemode = models.BooleanField(default=False)
    customer = models.ForeignKey("Customer", null=True)
    webhook_message = JSONField()
    validated_message = JSONField(null=True)
    valid = models.NullBooleanField(null=True)
    processed = models.BooleanField(default=False)

    @property
    def message(self):
        return self.validated_message

    def __unicode__(self):
        return "%s - %s" % (self.kind, self.stripe_id)

    def link_customer(self):
        cus_id = None
        customer_crud_events = [
            "customer.created",
            "customer.updated",
            "customer.deleted"
        ]
        if self.kind in customer_crud_events:
            cus_id = self.message["data"]["object"]["id"]
        else:
            cus_id = self.message["data"]["object"].get("customer", None)

        if cus_id is not None:
            try:
                self.customer = Customer.objects.get(stripe_id=cus_id)
                self.save()
            except Customer.DoesNotExist:
                pass

    def validate(self):
        evt = stripe.Event.retrieve(self.stripe_id)
        self.validated_message = json.loads(
            json.dumps(
                evt.to_dict(),
                sort_keys=True,
                cls=stripe.StripeObjectEncoder
            )
        )
        if self.webhook_message["data"] == self.validated_message["data"]:
            self.valid = True
        else:
            self.valid = False
        self.save()

    def process(self):  # @@@ to complex, fix later  # noqa
        """
            "account.updated",
            "account.application.deauthorized",
            "charge.succeeded",
            "charge.failed",
            "charge.refunded",
            "charge.dispute.created",
            "charge.dispute.updated",
            "chagne.dispute.closed",
            "customer.created",
            "customer.updated",
            "customer.deleted",
            "customer.subscription.created",
            "customer.subscription.updated",
            "customer.subscription.deleted",
            "customer.subscription.trial_will_end",
            "customer.discount.created",
            "customer.discount.updated",
            "customer.discount.deleted",
            "invoice.created",
            "invoice.updated",
            "invoice.payment_succeeded",
            "invoice.payment_failed",
            "invoiceitem.created",
            "invoiceitem.updated",
            "invoiceitem.deleted",
            "plan.created",
            "plan.updated",
            "plan.deleted",
            "coupon.created",
            "coupon.updated",
            "coupon.deleted",
            "transfer.created",
            "transfer.updated",
            "transfer.failed",
            "ping"
        """
        if not self.valid or self.processed:
            return
        try:
            if not self.kind.startswith("plan.") and not self.kind.startswith("transfer."):
                self.link_customer()
            if self.kind.startswith("invoice."):
                Invoice.handle_event(self)
            elif self.kind.startswith("charge."):
                self.customer.record_charge(
                    self.message["data"]["object"]["id"]
                )
            elif self.kind.startswith("transfer."):
                Transfer.process_transfer(
                    self,
                    self.message["data"]["object"]
                )
            elif self.kind.startswith("customer.subscription."):
                if self.customer:
                    self.customer.sync_current_subscription()
            elif self.kind == "customer.deleted":
                self.customer.purge()
            self.send_signal()
            self.processed = True
            self.save()
        except stripe.StripeError as e:
            EventProcessingException.log(
                data=e.http_body,
                exception=e,
                event=self
            )
            webhook_processing_error.send(
                sender=Event,
                data=e.http_body,
                exception=e
            )

    def send_signal(self):
        signal = WEBHOOK_SIGNALS.get(self.kind)
        if signal:
            return signal.send(sender=Event, event=self)

class Transfer(StripeObject):
    # pylint: disable=C0301
    event = models.ForeignKey(Event, related_name="transfers")
    amount = models.DecimalField(decimal_places=2, max_digits=9)
    currency = models.CharField(max_length=25, default="usd")
    status = models.CharField(max_length=25)
    date = models.DateTimeField()
    description = models.TextField(null=True, blank=True)
    adjustment_count = models.IntegerField(null=True)
    adjustment_fees = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    adjustment_gross = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    charge_count = models.IntegerField(null=True)
    charge_fees = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    charge_gross = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    collected_fee_count = models.IntegerField(null=True)
    collected_fee_gross = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    net = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    refund_count = models.IntegerField(null=True)
    refund_fees = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    refund_gross = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    validation_count = models.IntegerField(null=True)
    validation_fees = models.DecimalField(decimal_places=2, max_digits=9, null=True)

    objects = TransferManager()

    def update_status(self):
        self.status = stripe.Transfer.retrieve(self.stripe_id).status
        self.save()

    @classmethod
    def process_transfer(cls, event, transfer):
        defaults = {
            "amount": convert_amount_for_db(transfer["amount"], transfer["currency"]),
            "currency": transfer["currency"],
            "status": transfer["status"],
            "date": convert_tstamp(transfer, "date"),
            "description": transfer.get("description", "")
        }
        summary = transfer.get("summary")
        if summary:
            defaults.update({
                "adjustment_count": summary.get("adjustment_count"),
                "adjustment_fees": summary.get("adjustment_fees"),
                "adjustment_gross": summary.get("adjustment_gross"),
                "charge_count": summary.get("charge_count"),
                "charge_fees": summary.get("charge_fees"),
                "charge_gross": summary.get("charge_gross"),
                "collected_fee_count": summary.get("collected_fee_count"),
                "collected_fee_gross": summary.get("collected_fee_gross"),
                "refund_count": summary.get("refund_count"),
                "refund_fees": summary.get("refund_fees"),
                "refund_gross": summary.get("refund_gross"),
                "validation_count": summary.get("validation_count"),
                "validation_fees": summary.get("validation_fees"),
                "net": convert_amount_for_db(summary.get("net"), transfer["currency"]),
            })
        for field in defaults:
            if field.endswith("fees") or field.endswith("gross"):
                defaults[field] = convert_amount_for_db(defaults[field])  # assume in usd only
        if event.kind == "transfer.paid":
            defaults.update({"event": event})
            obj, created = Transfer.objects.get_or_create(
                stripe_id=transfer["id"],
                defaults=defaults
            )
        else:
            obj, created = Transfer.objects.get_or_create(
                stripe_id=transfer["id"],
                event=event,
                defaults=defaults
            )
        if created and summary:
            for fee in summary.get("charge_fee_details", []):
                obj.charge_fee_details.create(
                    amount=convert_amount_for_db(fee["amount"], fee["currency"]),
                    currency=fee["currency"],
                    application=fee.get("application", ""),
                    description=fee.get("description", ""),
                    kind=fee["type"]
                )
        else:
            obj.status = transfer["status"]
            obj.save()
        if event.kind == "transfer.updated":
            obj.update_status()

class TransferChargeFee(models.Model):

    transfer = models.ForeignKey(Transfer, related_name="charge_fee_details")
    amount = models.DecimalField(decimal_places=2, max_digits=9)
    currency = models.CharField(max_length=10, default="usd")
    application = models.TextField(null=True, blank=True)
    description = models.TextField(null=True, blank=True)
    kind = models.CharField(max_length=150)
    created_at = models.DateTimeField(default=timezone.now)

class Customer(StripeObject):

    user = models.ForeignKey(
        getattr(settings, "AUTH_USER_MODEL", "auth.User"),
        null=True
    )
    card_fingerprint = models.CharField(max_length=200, blank=True)
    card_last_4 = models.CharField(max_length=4, blank=True)
    card_kind = models.CharField(max_length=50, blank=True)
    date_purged = models.DateTimeField(null=True, editable=False)

    objects = CustomerManager()

    def __unicode__(self):
        return smart_str(self.user)

    @property
    def stripe_customer(self):
        return stripe.Customer.retrieve(self.stripe_id)

    def purge(self):
        try:
            self.stripe_customer.delete()
        except stripe.InvalidRequestError as e:
            if smart_str(e).startswith("No such customer:"):
                # The exception was thrown because the customer was already
                # deleted on the stripe side, ignore the exception
                pass
            else:
                # The exception was raised for another reason, re-raise it
                raise
        self.user = None
        self.card_fingerprint = ""
        self.card_last_4 = ""
        self.card_kind = ""
        self.date_purged = timezone.now()
        self.save()

    def delete(self, using=None):
        # Only way to delete a customer is to use SQL
        self.purge()

    def can_charge(self):
        return self.card_fingerprint and \
            self.card_last_4 and \
            self.card_kind and \
            self.date_purged is None

    def has_active_subscription(self):
        try:
            return self.current_subscription.is_valid()
        except CurrentSubscription.DoesNotExist:
            return False

    def cancel(self, at_period_end=True):
        try:
            current = self.current_subscription
        except CurrentSubscription.DoesNotExist:
            return
        sub = self.stripe_customer.cancel_subscription(
            at_period_end=at_period_end
        )
        current.status = sub.status
        current.cancel_at_period_end = sub.cancel_at_period_end
        current.current_period_end = convert_tstamp(sub, "current_period_end")
        current.save()
        cancelled.send(sender=self, stripe_response=sub)

    @classmethod
    def create(cls, user, card=None, plan=None, charge_immediately=True, trial_end=None, plans=None, coupon=None):
        if plans:
            PAYMENTS_PLANS = plans

        if card and plan:
            plan = PAYMENTS_PLANS[plan]["stripe_plan_id"]
        elif DEFAULT_PLAN:
            plan = PAYMENTS_PLANS[DEFAULT_PLAN]["stripe_plan_id"]
        else:
            plan = "None"

        # trial_end = None
        #if TRIAL_PERIOD_FOR_USER_CALLBACK and plan:
        #    trial_days = TRIAL_PERIOD_FOR_USER_CALLBACK(user)
        #    if not trial_end:
        #        trial_end = datetime.datetime.utcnow() + datetime.timedelta(
        #            days=trial_days
        #        )

        stripe_customer = stripe.Customer.create(
            email=user.email,
            card=card,
            plan=plan or DEFAULT_PLAN,
            trial_end=trial_end,
            coupon=coupon
        )

        if stripe_customer.active_card:
            cus = cls.objects.create(
                user=user,
                stripe_id=stripe_customer.id,
                card_fingerprint=stripe_customer.active_card.fingerprint,
                card_last_4=stripe_customer.active_card.last4,
                card_kind=stripe_customer.active_card.type
            )
        else:
            cus = cls.objects.create(
                user=user,
                stripe_id=stripe_customer.id,
            )

        if plan:
            if stripe_customer.subscription:
                cus.sync_current_subscription(cu=stripe_customer)
            if charge_immediately:
                cus.send_invoice()

        return cus

    def update_card(self, token):
        cu = self.stripe_customer
        cu.card = token
        cu.save()
        self.save_card(cu)

    def save_card(self, cu=None):
        cu = cu or self.stripe_customer
        active_card = cu.active_card
        self.card_fingerprint = active_card.fingerprint
        self.card_last_4 = active_card.last4
        self.card_kind = active_card.type
        self.save()
        card_changed.send(sender=self, stripe_response=cu)

    def retry_unpaid_invoices(self):
        self.sync_invoices()
        for inv in self.invoices.filter(paid=False, closed=False):
            try:
                inv.retry()  # Always retry unpaid invoices
            except stripe.InvalidRequestError as error:
                if smart_str(error) != "Invoice is already paid":
                    raise error

    def send_invoice(self):
        try:
            invoice = stripe.Invoice.create(customer=self.stripe_id)
            if invoice.amount_due > 0:
                invoice.pay()
            return True
        except stripe.InvalidRequestError:
            return False  # There was nothing to invoice

    def sync(self, cu=None):
        cu = cu or self.stripe_customer
        updated = False
        if hasattr(cu, "active_card") and cu.active_card:
            # Test to make sure the card has changed, otherwise do not update it
            # (i.e. refrain from sending any signals)
            if (self.card_last_4 != cu.active_card.last4 or
                    self.card_fingerprint != cu.active_card.fingerprint or
                    self.card_kind != cu.active_card.type):
                updated = True
                self.card_last_4 = cu.active_card.last4
                self.card_fingerprint = cu.active_card.fingerprint
                self.card_kind = cu.active_card.type
        else:
            updated = True
            self.card_fingerprint = ""
            self.card_last_4 = ""
            self.card_kind = ""

        if updated:
            self.save()
            card_changed.send(sender=self, stripe_response=cu)

    def sync_invoices(self, cu=None):
        cu = cu or self.stripe_customer
        for invoice in cu.invoices().data:
            Invoice.sync_from_stripe_data(invoice, send_receipt=False)

    def sync_charges(self, cu=None):
        cu = cu or self.stripe_customer
        for charge in cu.charges().data:
            self.record_charge(charge.id)

    def sync_current_subscription(self, cu=None):
        cu = cu or self.stripe_customer
        sub = getattr(cu, "subscription", None)
        if sub is None:
            try:
                self.current_subscription.delete()
            except CurrentSubscription.DoesNotExist:
                pass
        else:
            try:
                sub_obj = self.current_subscription
                sub_obj.plan = plan_from_stripe_id(sub.plan.id)
                sub_obj.current_period_start = convert_tstamp(
                    sub.current_period_start
                )
                sub_obj.current_period_end = convert_tstamp(
                    sub.current_period_end
                )
                sub_obj.amount = convert_amount_for_db(sub.plan.amount, sub.plan.currency)
                sub_obj.currency = sub.plan.currency
                sub_obj.status = sub.status
                sub_obj.cancel_at_period_end = sub.cancel_at_period_end
                sub_obj.start = convert_tstamp(sub.start)
                sub_obj.quantity = sub.quantity
                sub_obj.save()
            except CurrentSubscription.DoesNotExist:
                sub_obj = CurrentSubscription.objects.create(
                    customer=self,
                    plan=plan_from_stripe_id(sub.plan.id),
                    current_period_start=convert_tstamp(
                        sub.current_period_start
                    ),
                    current_period_end=convert_tstamp(
                        sub.current_period_end
                    ),
                    amount=convert_amount_for_db(sub.plan.amount, sub.plan.currency),
                    currency=sub.plan.currency,
                    status=sub.status,
                    cancel_at_period_end=sub.cancel_at_period_end,
                    start=convert_tstamp(sub.start),
                    quantity=sub.quantity
                )

            if sub.trial_start and sub.trial_end:
                sub_obj.trial_start = convert_tstamp(sub.trial_start)
                sub_obj.trial_end = convert_tstamp(sub.trial_end)
                sub_obj.save()

            return sub_obj

    def update_plan_quantity(self, quantity, charge_immediately=False):
        self.subscribe(
            plan=plan_from_stripe_id(
                self.stripe_customer.subscription.plan.id
            ),
            quantity=quantity,
            charge_immediately=charge_immediately
        )

    def subscribe(self, plan, quantity=None, trial_days=None,
                  charge_immediately=True, token=None, coupon=None):
        if quantity is None:
            if PLAN_QUANTITY_CALLBACK is not None:
                quantity = PLAN_QUANTITY_CALLBACK(self)
            else:
                quantity = 1
        cu = self.stripe_customer

        subscription_params = {}
        if trial_days:
            subscription_params["trial_end"] = \
                datetime.datetime.utcnow() + datetime.timedelta(days=trial_days)
        if token:
            subscription_params["card"] = token

        subscription_params["plan"] = PAYMENTS_PLANS[plan]["stripe_plan_id"]
        subscription_params["quantity"] = quantity
        subscription_params["coupon"] = coupon
        resp = cu.update_subscription(**subscription_params)

        if token:
            # Refetch the stripe customer so we have the updated card info
            cu = self.stripe_customer
            self.save_card(cu)

        self.sync_current_subscription(cu)
        if charge_immediately:
            self.send_invoice()
        subscription_made.send(sender=self, plan=plan, stripe_response=resp)
        return resp

    def charge(self, amount, currency="usd", description=None,
               send_receipt=True, capture=True):
        """
        This method expects `amount` to be a Decimal type representing a
        dollar amount. It will be converted to cents so any decimals beyond
        two will be ignored.
        """
        if not isinstance(amount, decimal.Decimal):
            raise ValueError(
                "You must supply a decimal value representing dollars."
            )
        resp = stripe.Charge.create(
            amount=convert_amount_for_api(amount, currency),  # find the final amount
            currency=currency,
            customer=self.stripe_id,
            description=description,
            capture=capture,
        )
        obj = self.record_charge(resp["id"])
        if send_receipt:
            obj.send_receipt()
        return obj

    def record_charge(self, charge_id):
        data = stripe.Charge.retrieve(charge_id)
        return Charge.sync_from_stripe_data(data)

class CurrentSubscription(models.Model):

    customer = models.OneToOneField(
        Customer,
        related_name="current_subscription",
        null=True
    )
    plan = models.CharField(default="None", max_length=100, null=True, blank=True)
    quantity = models.IntegerField()
    start = models.DateTimeField()
    # trialing, active, past_due, canceled, or unpaid
    status = models.CharField(max_length=25)
    cancel_at_period_end = models.BooleanField(default=False)
    canceled_at = models.DateTimeField(blank=True, null=True)
    current_period_end = models.DateTimeField(blank=True, null=True)
    current_period_start = models.DateTimeField(blank=True, null=True)
    ended_at = models.DateTimeField(blank=True, null=True)
    trial_end = models.DateTimeField(blank=True, null=True)
    trial_start = models.DateTimeField(blank=True, null=True)
    amount = models.DecimalField(decimal_places=2, max_digits=9)
    currency = models.CharField(max_length=10, default="usd")
    created_at = models.DateTimeField(default=timezone.now)

    @property
    def total_amount(self):
        return self.amount * self.quantity

    def plan_display(self):
        return PAYMENTS_PLANS[self.plan]["name"]

    def status_display(self):
        return self.status.replace("_", " ").title()

    def is_period_current(self):
        return self.current_period_end > timezone.now()

    def is_status_current(self):
        return self.status in ["trialing", "active"]

    def is_valid(self):
        if not self.is_status_current():
            return False

        if self.cancel_at_period_end and not self.is_period_current():
            return False

        return True

    def delete(self, using=None):  # pylint: disable=E1002
        """
        Set values to None while deleting the object so that any lingering
        references will not show previous values (such as when an Event
        signal is triggered after a subscription has been deleted)
        """
        super(CurrentSubscription, self).delete(using=using)
        self.plan = None
        self.status = None
        self.quantity = 0
        self.amount = 0

class Invoice(models.Model):

    stripe_id = models.CharField(max_length=255)
    customer = models.ForeignKey(Customer, related_name="invoices")
    attempted = models.NullBooleanField()
    attempts = models.PositiveIntegerField(null=True)
    closed = models.BooleanField(default=False)
    paid = models.BooleanField(default=False)
    period_end = models.DateTimeField()
    period_start = models.DateTimeField()
    subtotal = models.DecimalField(decimal_places=2, max_digits=9)
    total = models.DecimalField(decimal_places=2, max_digits=9)
    currency = models.CharField(max_length=10, default="usd")
    date = models.DateTimeField()
    charge = models.CharField(max_length=50, blank=True)
    created_at = models.DateTimeField(default=timezone.now)

    class Meta:  # pylint: disable=E0012,C1001
        ordering = ["-date"]

    def retry(self):
        if not self.paid and not self.closed:
            inv = stripe.Invoice.retrieve(self.stripe_id)
            inv.pay()
            return True
        return False

    def status(self):
        if self.paid:
            return "Paid"
        return "Open"

    @classmethod
    def sync_from_stripe_data(cls, stripe_invoice, send_receipt=True):
        c = Customer.objects.get(stripe_id=stripe_invoice["customer"])
        period_end = convert_tstamp(stripe_invoice, "period_end")
        period_start = convert_tstamp(stripe_invoice, "period_start")
        date = convert_tstamp(stripe_invoice, "date")

        invoice, created = cls.objects.get_or_create(
            stripe_id=stripe_invoice["id"],
            defaults=dict(
                customer=c,
                attempted=stripe_invoice["attempted"],
                attempts=stripe_invoice["attempt_count"],
                closed=stripe_invoice["closed"],
                paid=stripe_invoice["paid"],
                period_end=period_end,
                period_start=period_start,
                subtotal=convert_amount_for_db(stripe_invoice["subtotal"], stripe_invoice["currency"]),
                total=convert_amount_for_db(stripe_invoice["total"], stripe_invoice["currency"]),
                currency=stripe_invoice["currency"],
                date=date,
                charge=stripe_invoice.get("charge") or ""
            )
        )
        if not created:
            # pylint: disable=C0301
            invoice.attempted = stripe_invoice["attempted"]
            invoice.attempts = stripe_invoice["attempt_count"]
            invoice.closed = stripe_invoice["closed"]
            invoice.paid = stripe_invoice["paid"]
            invoice.period_end = period_end
            invoice.period_start = period_start
            invoice.subtotal = convert_amount_for_db(stripe_invoice["subtotal"], stripe_invoice["currency"])
            invoice.total = convert_amount_for_db(stripe_invoice["total"], stripe_invoice["currency"])
            invoice.currency = stripe_invoice["currency"]
            invoice.date = date
            invoice.charge = stripe_invoice.get("charge") or ""
            invoice.save()

        for item in stripe_invoice["lines"].get("data", []):
            period_end = convert_tstamp(item["period"], "end")
            period_start = convert_tstamp(item["period"], "start")

            if item.get("plan"):
                plan = plan_from_stripe_id(item["plan"]["id"])
            else:
                plan = "None"

            inv_item, inv_item_created = invoice.items.get_or_create(
                stripe_id=item["id"],
                defaults=dict(
                    amount=convert_amount_for_db(item["amount"], item["currency"]),
                    currency=item["currency"],
                    proration=item["proration"],
                    description=item.get("description") or "",
                    line_type=item["type"],
                    plan=plan,
                    period_start=period_start,
                    period_end=period_end,
                    quantity=item.get("quantity")
                )
            )
            if not inv_item_created:
                inv_item.amount = convert_amount_for_db(item["amount"], item["currency"])
                inv_item.currency = item["currency"]
                inv_item.proration = item["proration"]
                inv_item.description = item.get("description") or ""
                inv_item.line_type = item["type"]
                inv_item.plan = plan
                inv_item.period_start = period_start
                inv_item.period_end = period_end
                inv_item.quantity = item.get("quantity")
                inv_item.save()

        if stripe_invoice.get("charge"):
            obj = c.record_charge(stripe_invoice["charge"])
            obj.invoice = invoice
            obj.save()
            if send_receipt:
                obj.send_receipt()
        return invoice

    @classmethod
    def handle_event(cls, event, send_receipt=SEND_EMAIL_RECEIPTS):
        valid_events = ["invoice.payment_failed", "invoice.payment_succeeded"]
        if event.kind in valid_events:
            invoice_data = event.message["data"]["object"]
            stripe_invoice = stripe.Invoice.retrieve(invoice_data["id"])
            cls.sync_from_stripe_data(stripe_invoice, send_receipt=send_receipt)

class InvoiceItem(models.Model):

    stripe_id = models.CharField(max_length=255)
    created_at = models.DateTimeField(default=timezone.now)
    invoice = models.ForeignKey(Invoice, related_name="items")
    amount = models.DecimalField(decimal_places=2, max_digits=9)
    currency = models.CharField(max_length=10, default="usd")
    period_start = models.DateTimeField()
    period_end = models.DateTimeField()
    proration = models.BooleanField(default=False)
    line_type = models.CharField(max_length=50)
    description = models.CharField(max_length=200, blank=True)
    plan = models.CharField(default="", max_length=100, null=True, blank=True)
    quantity = models.IntegerField(null=True)

    def plan_display(self):
        return PAYMENTS_PLANS[self.plan]["name"]

class Charge(StripeObject):

    customer = models.ForeignKey(Customer, related_name="charges")
    invoice = models.ForeignKey(Invoice, null=True, related_name="charges")
    card_last_4 = models.CharField(max_length=4, blank=True)
    card_kind = models.CharField(max_length=50, blank=True)
    currency = models.CharField(max_length=10, default="usd")
    amount = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    amount_refunded = models.DecimalField(
        decimal_places=2,
        max_digits=9,
        null=True
    )
    description = models.TextField(blank=True)
    paid = models.NullBooleanField(null=True)
    disputed = models.NullBooleanField(null=True)
    refunded = models.NullBooleanField(null=True)
    captured = models.NullBooleanField(null=True)
    fee = models.DecimalField(decimal_places=2, max_digits=9, null=True)
    receipt_sent = models.BooleanField(default=False)
    charge_created = models.DateTimeField(null=True, blank=True)

    objects = ChargeManager()

    def calculate_refund_amount(self, amount=None):
        eligible_to_refund = self.amount - (self.amount_refunded or 0)
        if amount:
            return min(eligible_to_refund, amount)
        return eligible_to_refund

    def refund(self, amount=None):
        # pylint: disable=E1121
        charge_obj = stripe.Charge.retrieve(
            self.stripe_id
        ).refund(
            amount=convert_amount_for_api(self.calculate_refund_amount(amount=amount), self.currency)
        )
        Charge.sync_from_stripe_data(charge_obj)

    def capture(self, amount=None):
        self.captured = True
        charge_obj = stripe.Charge.retrieve(
            self.stripe_id
        ).capture(
            amount=convert_amount_for_api(self.calculate_refund_amount(amount=amount), self.currency)
        )
        Charge.sync_from_stripe_data(charge_obj)

    @classmethod
    def sync_from_stripe_data(cls, data):
        customer = Customer.objects.get(stripe_id=data["customer"])
        obj, _ = customer.charges.get_or_create(
            stripe_id=data["id"]
        )
        invoice_id = data.get("invoice", None)
        if obj.customer.invoices.filter(stripe_id=invoice_id).exists():
            obj.invoice = obj.customer.invoices.get(stripe_id=invoice_id)
        obj.card_last_4 = data["card"]["last4"]
        obj.card_kind = data["card"]["type"]
        obj.currency = data["currency"]
        obj.amount = convert_amount_for_db(data["amount"], obj.currency)
        obj.paid = data["paid"]
        obj.refunded = data["refunded"]
        obj.captured = data["captured"]
        obj.fee = convert_amount_for_db(data["fee"])  # assume in usd only
        obj.disputed = data["dispute"] is not None
        obj.charge_created = convert_tstamp(data, "created")
        if data.get("description"):
            obj.description = data["description"]
        if data.get("amount_refunded"):
            # pylint: disable=C0301
            obj.amount_refunded = convert_amount_for_db(data["amount_refunded"], obj.currency)
        if data["refunded"]:
            obj.amount_refunded = obj.amount
        obj.save()
        return obj

    def send_receipt(self):
        if not self.receipt_sent:
            site = Site.objects.get_current()
            protocol = getattr(settings, "DEFAULT_HTTP_PROTOCOL", "http")
            ctx = {
                "charge": self,
                "site": site,
                "protocol": protocol,
            }
            subject = render_to_string("payments/email/subject.txt", ctx)
            subject = subject.strip()
            message = render_to_string("payments/email/body.txt", ctx)
            num_sent = EmailMessage(
                subject,
                message,
                to=[self.customer.user.email],
                from_email=INVOICE_FROM_EMAIL
            ).send()
            self.receipt_sent = num_sent > 0
            self.save()

redpajama_set_name: RedPajamaGithub


When is Flims going to get fresh snow?
This is the Snow Forecast and Weather Outlook for Flims, Switzerland from 18 April.
For current snow depths and skiing conditions, see our Current Snow Report for Flims.
The next notable snow forecast for Flims is 1cm-, expected on 19 April, with around 2cm1in forecast over the next 7 days.
Flims-Laax-Falera (including Flims) is reporting "Good Snow" with 1cm- new snow forecast in the next 48 hours.
Snow Line ranging from 2,360m7,743ft to 2,341m7,680ft, with rain below.
Snow Line ranging from 2,534m8,314ft to 2,479m8,133ft, with rain below.
Snow Line ranging from 2,868m9,409ft to 2,469m8,100ft, with rain below.
Snow Line ranging from 2,715m8,907ft to 2,254m7,395ft, with rain below.
Snow Line ranging from 2,408m7,900ft to 1,177m3,862ft, with rain below.
Snow Line ranging from 2,562m8,406ft to 1,792m5,879ft, with rain below.
Snow Line ranging from 2,562m8,406ft to 1,485m4,872ft, with rain below.
This Snow Forecast for Flims, Switzerland gives the predicted Snowfall and Freezing Levels for the next week.
The forecast snowfall depths given are the likely average accumulations for the Lower and Upper slopes. The actual snow depth in Flims, on any given piste or itinerary, may be dramatically different, particularly if the snowfall is accompanied by high winds and/or varying air temperatures.
Flims Snow Forecast built at 20:12, next update at 00:00.
Create your own J2Ski Account to get Free Snow Reports and Forecast, with Powder Alerts, for Flims.
For more information about this Swiss Ski Resort, See Also Skiing and Snowboarding in Flims .
Snow and Weather Forecasts for other Ski Areas within Flims-Laax-Falera.
Snow and Weather Forecasts for other popular Ski Areas near Flims.
Piste and Lift Stats for Flims, Switzerland.
Note :- The Snow Forecast for Flims, on J2Ski, is updated frequently and subject to significant change; snow depths and skiing conditions vary rapidly, as can all Mountain Weather Forecasts.


Pure beauty is found in nature and from nature Seduction is created. Carefully chosen natural ingredients help to restore the skin to its youth and replenishes the moisture levels to retain the effect of Seduction throughout the day.
The Nourishing Cuticle Oil intensely hydrates the natural nail and cuticles and is recommended as a home care product. Fast absorbing and with a light perfume that reminds you throughout the day of your inner seductiveness.
Seduction luxurious Scrub gently exfoliates while protecting your skin with light oils. Revealing your natural and youthful glow your hands will feel softer than you can imagine.
Rich Cream and Mask envelopes your hands in the deepest and most generously moisturizing mask, the skin regains it's natural texture and the result is amazing. After the mask has penetrated use the remainder to massage the hand and fingers to ensure full absorption. Your hands will look better than ever and the gentle perfume will linger, reminding you of the beauty of this service.
Seduction Delicate Hand Lotion is the perfect hand lotion on the go! With the same deeply moisturizing ingredients as in the Rich Cream and Mask but in a lighter and quicker absorbing formula, the Delicate Hand Lotion is easy to apply, non greasy and an everyday essential!


Journajobs. Our goal is that every journalist and news organisation benefits from a European Journalism Centre programme.
Today's Journajobs.eu headlines: Observe fresh posts and updates on Journajobs. This site's feed is stale or rarely updated (or it might be broken for a reason), but you may check related news or Journajobs.eu popular pages instead. It is generally safe for browsing, so you may click any item to proceed to the site.
Headlines: eCons, pols, hate, polluters. . .
You think Journalist / Senior Content Redakteur (German language) is something for you? Head over to JournaJobs - Journalism Jobs and apply or perhaps find another job that might suit you.