diff --git a/README.md b/README.md index 8c4bdfe..912fa07 100644 --- a/README.md +++ b/README.md @@ -51,3 +51,10 @@ If you're in production collect static files: Run it: ./manage.py runserver + + +## Words generation + +To generate the french dict I used + + $ unmunch <(grep po:adj /usr/share/hunspell/fr_FR.dic) /usr/share/hunspell/fr_FR.aff | LC_ALL=C grep '^[a-z]*$' | grep '^[a-z]\{2,7\}$' | uniq > dict/french diff --git a/dict/french b/dict/french new file mode 100644 index 0000000..99646d2 --- /dev/null +++ b/dict/french @@ -0,0 +1,4140 @@ +abject +abjecte +abjects +abkhaze +ablatif +aboral +aborale +aboraux +abortif +abougri +aboyant +aboyeur +abrasif +abricot +abrupt +abrupte +abrupts +abscons +absent +absente +absents +absidal +absolu +absolue +absolus +abstrus +absurde +abuseur +abusif +abusifs +abusive +abyssal +abyssin +acadien +acajou +acaule +acaules +acausal +accore +accores +accort +accorte +accorts +accro +accros +acerbe +acerbes +achiral +achrome +acide +acides +acineux +actif +actifs +active +actives +actuel +actuels +adamite +addict +addicts +additif +adelphe +adepte +adeptes +adipeux +adique +adiques +adoptif +adorant +adroit +adroite +adroits +adscrit +adulte +adultes +adverse +affable +affin +affine +affines +affins +affixal +affreux +afghan +afghane +afghans +afocal +afocale +afocaux +afro +agame +agames +agenais +agile +agiles +agitant +aglyphe +agnathe +agnelin +agraire +agreste +aigre +aigres +aigret +aigrets +aigu +aigus +aimable +aimant +aimante +aimants +aise +aises +aixois +aixoise +alaire +alaires +albinos +alcalin +alcoolo +aldin +aldine +aldines +aldins +alerte +alertes +alezan +alezane +alezans +algal +algale +algales +algaux +algide +algides +algique +allant +allante +allants +allate +allates +allusif +alpin +alpine +alpines +alpins +alta +altai +altais +altait +altant +altas +altasse +alte +altent +alter +altera +alterai +alteras +alterez +alterne +altes +altez +altier +altiers +altiez +altions +altons +alvin +alvine +alvines +alvins +amant +amante +amantes +amants +amaril +amarile +amarils +amateur +ambiant +ambigu +ambigus +ambleur +ambre +ambrien +amer +amers +ami +amiable +amibien +amical +amicale +amicaux +amie +amies +amis +amish +amishs +amniote +amoral +amorale +amoraux +ample +amples +amusant +amuseur +anal +anale +anales +anar +anars +anaux +ancien +anciens +andalou +andin +andine +andines +andins +angevin +anglais +angora +angoras +anhydre +animal +animale +animaux +annal +annale +annales +annaux +annexe +annexes +annuel +annuels +anodin +anodine +anodins +anomal +anomale +anomaux +anonyme +anormal +antifa +antifas +antique +anxieux +aorte +aortes +apache +apaches +aphone +aphones +aphteux +aphylle +apical +apicale +apicaux +apicole +apifuge +apivore +apode +apodes +apostat +apte +aptes +aptien +aptiens +apyre +apyres +aqueuse +aqueux +aquilin +arabe +arabes +arable +arables +aramide +aranais +arawak +arawaks +ardent +ardente +ardents +ardu +ardue +ardues +ardus +aride +arides +arien +arienne +ariens +arsin +arsine +arsines +arsins +artisan +arvale +arvales +aryen +aryenne +aryens +asexuel +asinien +asocial +asperme +assidu +assidue +assidus +astable +astral +astrale +astraux +atlante +atonal +atonale +atonaux +atone +atones +atroce +atroces +attique +aubain +aubaine +aubains +aubois +auboise +auburn +auburns +audible +audio +audios +auditif +audois +audoise +augural +auguste +aulique +aurique +auroral +aurore +austral +autiste +autre +autres +avalant +avar +avare +avares +avars +avenant +avenu +avenue +avenues +avenus +aversif +aveugle +aviaire +avicole +avide +avides +avien +avienne +aviens +axial +axiale +axiales +axiaux +axile +axiles +axonais +axonal +axonale +axonaux +azoteux +azygos +azyme +azymes +baba +babas +badaud +badaude +badauds +badin +badine +badines +badins +bai +baie +baies +bais +balaise +ballant +balourd +balte +baltes +balzan +balzane +balzans +bambara +bambin +bambine +bambins +banal +banale +banales +banals +banaux +bancal +bancale +bancals +bandant +bantou +bantoue +bantous +barbant +barbare +barbet +barbets +barbu +barbue +barbues +barbus +barge +barges +barjo +barjos +barjot +barjots +barlong +baroque +bas +basal +basale +basales +basaux +basique +basque +basques +basse +basses +batave +bataves +bathyal +battant +bavant +bavante +bavants +bavard +bavarde +bavards +baveuse +baveux +baylien +beau +beaux +beige +beiges +bel +belge +belges +belle +belles +bels +bengali +benoit +benoite +benoits +berceur +bernois +besson +bessons +bestial +beur +beurs +biactif +biaxe +biaxes +bibande +bidual +biduale +biduaux +biennal +biface +bifaces +bifide +bifides +bifocal +bigame +bigames +bigle +bigles +bigleux +bigot +bigote +bigotes +bigots +bileuse +bileux +bilieux +bimane +bimanes +bimodal +binaire +bio +bios +bipale +bipales +bipare +bipares +biparti +bipenne +biplace +biquet +biquets +birman +birmane +birmans +birotor +bis +bise +bises +bitable +bitonal +bitube +bitubes +bivalve +bizarre +black +blacks +blafard +blanc +blanche +blancs +blet +blets +blette +blettes +bleu +bleue +bleues +bleus +blond +blonde +blondes +blonds +boa +boai +boaient +boais +boait +boant +boas +boasse +boasses +bobo +bobos +bocager +boe +boent +boer +boera +boerai +boerais +boerait +boeras +boerez +boeriez +boerons +boeront +boers +boes +boez +boiez +boions +boiteux +bombant +bon +bonasse +bonnard +bonne +bonnes +bonobo +bonobos +bons +boons +borain +boraine +borains +bordant +borgne +borgnes +borique +boscot +boscots +bosnien +bosseur +bossu +bossue +bossues +bossus +bot +bote +botes +bots +boucher +boudeur +boueuse +boueux +bouffon +bougon +bougons +boulot +boulots +bourge +bourges +bourru +bourrue +bourrus +boutant +bovin +bovine +bovines +bovins +bradeur +branchu +braque +braques +brave +braves +bref +brefs +breton +bretons +briard +briarde +briards +brisant +brulant +bruleur +brumal +brumale +brumaux +brumeux +brun +brune +brunes +brunet +brunets +bruns +brusque +brut +brutal +brutale +brutaux +brute +brutes +bruts +bruyant +buccal +buccale +buccaux +bulbeux +bulgare +bulleux +buvable +buveur +buveurs +buveuse +cadet +cadets +cadette +cadrant +caduc +caducs +caduque +cagnard +cagneux +cagot +cagote +cagotes +cagots +cairote +cajun +cajuns +calable +califal +calleux +calmant +calme +calmes +camard +camarde +camards +cambial +camus +camuse +camuses +candide +canin +canine +canines +canins +cannois +canon +canons +canope +canopes +capable +capital +caprin +caprine +caprins +captant +captif +captifs +captive +carcel +carcels +cardial +caribe +caribes +carieux +carpien +casha +cashai +cashais +cashait +cashant +cashas +cashe +cashent +casher +cashera +cashers +cashes +cashez +cashiez +cashons +cassant +casseur +castard +castral +casuel +casuels +cataire +catalan +cathare +catho +cathos +caudal +caudale +caudaux +caudine +causal +causale +causant +causaux +causeur +cave +caves +censier +censuel +central +certain +cessant +chagrin +champi +champis +charnel +charnu +charnue +charnus +chaste +chastes +chaud +chaude +chaudes +chauds +chauve +chauves +chauvin +chelou +cheloue +chelous +chenu +chenue +chenues +chenus +cher +chers +chevelu +chiant +chiante +chiants +chic +chicano +chiche +chiches +chics +chien +chienne +chiens +chiite +chiites +chilien +chinois +chipeur +chiral +chirale +chiraux +chlasse +chleu +chleue +chleues +chleus +chnoque +choral +chorale +chorals +chti +chtimi +chtimis +chtis +cinoque +cireur +cireurs +cireuse +cireux +cirier +ciriers +citadin +citoyen +citrin +citrine +citrins +civil +civile +civiles +civils +civique +clair +claire +claires +clairet +clairs +claude +claudes +clean +cleans +clivant +cloacal +cloche +cloches +clonal +clonale +clonaux +coactif +coaxial +cocasse +cocher +cochers +cochon +cochons +cockney +cocu +cocue +cocues +cocus +codable +codant +codante +codants +coi +cois +coite +coites +colique +collant +comique +commode +commun +commune +communs +compact +complet +comtal +comtale +comtaux +comtois +con +conatif +concave +concis +concise +concret +confus +confuse +congru +congrue +congrus +conique +conne +connes +connexe +cons +consort +content +conteur +contigu +continu +contrit +contus +contuse +convers +convexe +cool +cools +copieux +copiste +copte +coptes +coquet +coquets +coquin +coquine +coquins +cordial +coriace +cornier +cornu +cornue +cornues +cornus +coronal +correct +corse +corses +cosaque +cossard +cossu +cossue +cossues +cossus +costal +costale +costaud +costaux +cotable +cotidal +couard +couarde +couards +couillu +coulant +coupant +courant +courbe +courbes +courson +court +courte +courtes +courts +couseur +coutant +couteux +couvi +couvis +coxal +coxale +coxales +coxaux +crade +crades +crado +crados +cradot +cradots +crayeux +creek +creeks +creuse +creuses +creux +crevant +crevard +criant +criante +criants +criard +criarde +criards +crieur +crieurs +crieuse +croate +croates +croche +croches +crochu +crochue +crochus +croupal +croupi +croupie +croupis +croyant +cru +crucial +crue +cruel +cruelle +cruels +crues +crural +crurale +cruraux +crus +crustal +cubain +cubaine +cubains +cube +cubes +cubique +cubiste +cubital +cuisant +cultuel +cupide +cupides +curable +curatif +curial +curiale +curiaux +curieux +cursif +cursifs +cursive +curule +curules +cynique +dalmate +danien +daniens +danois +danoise +dansant +darique +darne +darnes +datable +dateur +dateurs +dateuse +datif +datifs +dative +datives +delta +deltas +demi +demie +demies +demis +dense +denses +dental +dentale +dentaux +dentu +dentue +dentues +dentus +dernier +design +designs +despote +dextre +dextres +dicible +dicrote +didyme +didymes +diffus +diffuse +digeste +digital +digne +dignes +diluant +dilutif +dingue +dingues +direct +directe +directs +discal +discale +discaux +discret +disert +diserte +diserts +dispos +dispose +dissolu +distal +distale +distant +distaux +distyle +diurnal +diurne +diurnes +dive +divers +diverse +dives +divin +divine +divines +divins +divis +divise +divises +docile +dociles +docte +doctes +dodu +dodue +dodues +dodus +dogon +dogonne +dogons +dolent +dolente +dolents +dolosif +domien +domiens +dopant +dopante +dopants +dorien +doriens +dorique +dormant +dormeur +dorsal +dorsale +dorsaux +dosable +doseur +doseurs +doseuse +dotal +dotale +dotales +dotaux +double +doubles +douce +douces +doucet +doucets +douteur +douteux +doux +drapier +droit +droite +droites +droits +dru +drue +drues +drus +druze +druzes +dry +drys +dual +duale +duales +duaux +ducal +ducale +ducales +ducaux +ductile +duel +duelle +duelles +duels +dumdum +dumdums +dunaire +dupe +dupes +dur +durable +dural +durale +durales +duratif +duraux +dure +dures +durs +eccrine +effusif +elfe +elfes +elfique +embu +embue +embues +embus +enclin +encline +enclins +ennemi +ennemie +ennemis +entier +entiers +entrant +envieux +ergatif +errant +errante +errants +erse +erses +eskimo +eskimos +estival +eudiste +eurois +euroise +exact +exacte +exactes +exacts +exempt +exempte +exempts +exigu +exigus +exogame +expert +experte +experts +express +exquis +exquise +externe +extra +extras +facho +fachos +facial +faciale +faciaux +facile +faciles +factice +factuel +fada +fadas +fadasse +fade +fades +fagnard +faible +faibles +failli +faillie +faillis +falot +falote +falotes +falots +fameuse +fameux +fana +fanas +fangeux +faraud +faraude +farauds +farceur +farfelu +faste +fastes +fat +fatal +fatale +fatales +fatals +fats +fausse +fausses +fautif +fautifs +fautive +fauve +fauves +faux +favique +favori +favoris +femelle +fendant +fermant +ferme +fermes +ferreux +fertile +fervent +fessier +fessu +fessue +fessues +fessus +festif +festifs +festive +feu +feue +feues +feuillu +feus +fiable +fiables +fibreux +fichant +fichu +fichue +fichues +fichus +fictif +fictifs +fictive +fidjien +fier +fiers +filable +filaire +filant +filante +filants +filial +filiale +filiaux +fin +final +finale +finales +finals +finaud +finaude +finauds +fine +fines +finnois +fins +fiscal +fiscale +fiscaux +fissile +fixable +fixatif +fixe +fixes +fixiste +flache +flaches +flagada +flamand +flapi +flapie +flapies +flapis +flasque +flicard +floche +floches +flood +floods +floral +florale +floraux +flou +floue +floues +flous +fluent +fluente +fluents +fluet +fluets +fluette +fluide +fluides +fluvial +focal +focale +focales +focaux +fofolle +foireux +fol +folique +folk +folkeux +folklo +folklos +folks +folle +folles +follet +follets +fols +fonceur +foncier +fondant +forain +foraine +forains +fordien +foreur +foreurs +foreuse +formant +formel +formels +fort +forte +fortes +forts +fortuit +fossile +fou +foufou +foufous +foulant +fourbe +fourbes +fourbu +fourbue +fourbus +fourchu +fous +foutral +foutu +foutue +foutues +foutus +fractal +fragile +fraiche +frais +franc +franche +francs +franque +friable +friand +friande +friands +frigide +frileux +frisant +frison +frisons +frivole +froid +froide +froides +froids +frontal +frugal +frugale +frugaux +fruste +frustes +frustre +fugace +fugaces +fugitif +fugueur +fumable +fumant +fumante +fumants +fumeur +fumeurs +fumeuse +fumeux +fun +funeste +funk +funks +funky +funkys +funs +furieux +furtif +furtifs +furtive +fusant +fusante +fusants +fusible +futile +futiles +futur +future +futures +futurs +fuyant +fuyante +fuyants +fuyard +fuyarde +fuyards +gaffeur +gaga +gagas +gagnant +gai +gaie +gaies +gais +galant +galante +galants +galate +galates +galbant +galeuse +galeux +gallois +gambien +gamin +gamine +gamines +gamins +ganache +gantois +garant +garante +garants +gardois +gascon +gascons +gauche +gaucher +gauches +gaulois +gaumais +gavache +gay +gays +gazaoui +gazeuse +gazeux +gazier +gaziers +gent +gente +gentes +gentil +gentils +gents +gerbant +gerbeur +germain +gersois +gestant +gestuel +gibbeux +gibelin +gigogne +ginguet +girond +gironde +gironds +gisant +gisante +gisants +gitan +gitane +gitanes +gitans +givrant +givreux +glabre +glabres +glaceux +glacial +glamour +glauque +glial +gliale +gliales +gliaux +global +globale +globaux +glottal +glouton +gluant +gluante +gluants +gobeur +gobeurs +gobeuse +godiche +gogol +gogole +gogoles +gogols +gommeux +gonzo +gonzos +gordien +gore +gores +goth +gothe +gothes +goths +goulu +goulue +goulues +goulus +gourd +gourde +gourdes +gourds +gouteux +goy +goys +gracile +graduel +grand +grande +grandes +grandet +grands +gras +grasse +grasses +gratuit +grave +graves +gravide +grec +grecque +grecs +grenu +grenue +grenues +grenus +griffu +griffue +griffus +grimaud +gringe +gringes +grippal +gris +grisant +grise +grises +grison +grisons +grivois +grognon +gros +grosse +grosses +groupal +grugeur +grunge +grunges +guai +guais +guarani +gulaire +gupta +guptas +gypseux +habile +habiles +hadal +hadale +hadales +hadaux +hagard +hagarde +hagards +haineux +halal +halals +halin +haline +halines +halins +han +hans +haram +harams +hardi +hardie +hardies +hardis +harki +harkie +harkies +harkis +haut +hautain +haute +hautes +hauts +havrais +herbeux +herbu +herbue +herbues +herbus +herseur +hervien +hessien +heureux +hiatal +hiatale +hiataux +hideuse +hideux +hifi +hifis +hilaire +hilare +hilares +hindi +hindie +hindies +hindis +hippie +hippies +hippy +hippys +hircin +hircine +hircins +hirsute +hispide +hittite +holiste +homo +homos +hongre +hongres +honteux +horaire +horsain +hostile +houleux +huileux +huilier +humain +humaine +humains +humble +humbles +humide +humides +humique +humoral +hurlant +hurleur +huron +huronne +hurons +hussite +hutin +hutins +hutu +hutue +hutues +hutus +hyalin +hyaline +hyalins +hybride +hype +hypes +icarien +idiot +idiote +idiotes +idiots +idiste +idistes +idoine +idoines +ignare +ignares +ignoble +iliaque +ilien +ilienne +iliens +illatif +imageur +imberbe +imbu +imbue +imbues +imbus +immense +immonde +immoral +immun +immune +immunes +immuns +impair +impaire +impairs +impie +impies +implexe +impoli +impolie +impolis +impuni +impunie +impunis +impur +impure +impures +impurs +inactif +inapte +inaptes +inca +incas +incisif +incivil +inconnu +incuit +incuite +incuits +inculte +incuse +incuses +indemne +indien +indiens +indigne +indigo +indivis +indou +indoue +indoues +indous +indu +indue +indues +indus +inepte +ineptes +inerme +inermes +inerte +inertes +inexact +infant +infante +infants +infect +infecte +infects +infichu +infime +infimes +infini +infinie +infinis +infirme +infolio +informe +infoutu +infus +infuse +infuses +ingambe +ingrat +ingrate +ingrats +inique +iniques +initial +injuste +inodore +inplano +inquiet +insane +insanes +insigne +instant +intact +intacte +intacts +intello +intense +interne +intime +intimes +intrus +intruse +inuit +inuite +inuites +inuits +inusuel +inutile +invasif +invendu +inverse +iodique +ionien +ioniens +ionique +irakien +iranien +iridien +irien +irienne +iriens +isarien +isiaque +isobare +isogame +isogone +isolant +isopode +isotope +issant +issante +issants +italien +ivoirin +ivre +ivres +jaciste +jacobin +jalouse +jaloux +jambier +jappeur +jaseur +jaseurs +jaseuse +jaune +jaunes +jaunet +jaunets +jazzy +jazzys +jetable +jeune +jeunes +jeunet +jeunets +jeunot +jeunots +jobard +jobarde +jobards +jociste +jointif +joli +jolie +jolies +joliet +joliets +jolis +joseph +josephs +jouable +joual +jouale +jouales +jouals +jouette +joufflu +jovial +joviale +joviaux +jovien +joviens +joyeuse +joyeux +jugal +jugale +jugales +jugaux +jugeur +jugeurs +jugeuse +juif +juifs +juive +juives +julien +juliens +jumeau +jumeaux +jumelle +jungien +junior +juniors +juste +justes +juteuse +juteux +kabyle +kabyles +kafir +kafirs +kalmouk +kantien +kazakh +kazakhe +kazakhs +khmer +khmers +kifkif +kifkifs +kinois +kinoise +kirghiz +kitch +kitchs +klezma +klezmai +klezmas +klezme +klezmer +klezmes +klezmez +kosovar +kouffar +kurde +kurdes +labial +labiale +labiaux +labile +labiles +ladin +ladine +ladines +ladins +ladre +ladres +lai +laid +laide +laides +laids +laie +laies +laineur +laineux +lainier +lais +laiteux +laitier +lakiste +lambda +lambdas +laminal +lampant +landais +lanice +lanices +laotien +lapon +lapone +lapones +lapons +laqueur +laqueux +large +larges +las +lascif +lascifs +lascive +lassant +lasse +lasses +latent +latente +latents +latin +latina +latinas +latine +latines +latino +latinos +latins +lavable +lavant +lavante +lavants +laveur +laveurs +laveuse +lavique +laxatif +laxiste +lent +lente +lentes +lents +lesbien +leste +lestes +letton +lettone +lettons +lexical +liant +liante +liantes +liants +libre +libres +libyen +libyens +licite +licites +lieur +lieurs +lieuse +lieuses +lige +liges +light +lights +ligneux +ligueur +lilial +liliale +liliaux +lillois +limeur +limeurs +limeuse +liminal +limite +limites +limpide +lingual +linier +liniers +lippu +lippue +lippues +lippus +liquide +lisible +lissant +lisse +lisses +lisseur +litho +lithos +live +lives +livide +livides +lobaire +local +locale +locales +locatif +locaux +locrien +logique +lombard +long +longs +longue +longues +longuet +loquace +lorrain +lotois +lotoise +louable +louche +louches +lourd +lourde +lourdes +lourds +louvet +louvets +loyal +loyale +loyales +loyaux +lucide +lucides +luddite +ludique +lugubre +luisant +lunaire +lupique +lustral +luxueux +lycien +lyciens +lydien +lydiens +lyrique +lytique +macabre +mafflu +mafflue +mafflus +mafieux +mafique +mage +mages +magique +magyar +magyare +magyars +maigre +maigres +maitre +maitres +majeur +majeure +majeurs +malade +malades +maladif +malaire +malien +maliens +maligne +malin +maline +malines +malins +malique +malotru +malouin +malpoli +malsain +maltais +malvenu +mamelu +mamelue +mamelus +manchot +manuel +manuels +maori +maorie +maories +maoris +maous +maousse +marathe +marengo +marial +mariale +mariaux +marieur +marin +marine +marines +marins +mariole +marital +marlou +marlous +marnais +marneur +marneux +marnois +marrant +marri +marrie +marries +marris +marron +marrons +marteau +martial +martien +martyr +martyre +martyrs +marxien +maso +masos +massif +massifs +massive +mat +mate +mates +matinal +matois +matoise +mats +mature +matures +maure +maures +mauvais +mauve +mauves +maximal +maximum +melba +melbas +melkite +membre +membres +membru +membrue +membrus +menante +mensuel +mental +mentale +mentaux +menteur +menu +menue +menues +menus +merdeux +mesquin +messin +messine +messins +meuble +meubles +meulier +meunier +meusien +mien +mienne +miennes +miens +mignard +mignon +mignons +migrant +mimique +minable +mince +minces +mineur +mineure +mineurs +minier +miniers +minimal +minime +minimes +minimum +minoen +minoens +miro +miros +missive +miteuse +miteux +mitoyen +mitral +mitrale +mitraux +mixte +mixtes +moabite +mobile +mobiles +mochard +moche +moches +modal +modale +modales +modaux +moderne +modeste +modique +mogol +mogole +mogoles +mogols +mohawk +mohawks +moindre +moite +moites +mol +molaire +moldave +molle +molles +mollet +mollets +mols +monacal +mondain +mondial +mongol +mongole +mongols +monial +moniale +moniaux +montant +montois +moqueur +moral +morale +morales +moraux +morbide +mordant +mordeur +morfal +morfale +morfals +mormon +mormone +mormons +morne +mornes +morose +moroses +mortel +mortels +morveux +mosan +mosane +mosanes +mosans +mossi +mossis +moteur +moteurs +motrice +mou +moulant +mourant +mouride +mous +moussu +moussue +moussus +mouvant +moyen +moyenne +moyens +muet +muets +muette +muettes +mulard +mularde +mulards +muqueux +mural +murale +murales +muraux +mure +mures +muri +murie +muries +murin +murine +murines +murins +muris +murrhin +musard +musarde +musards +muscat +muscats +museur +museurs +museuse +musical +mussif +mussifs +mussive +mutable +mutant +mutante +mutants +mutin +mutine +mutines +mutins +mutique +mutuel +mutuels +myope +myopes +mytho +mythos +nagari +nagaris +nageur +nageurs +nageuse +nahua +nahuas +nain +naine +naines +nains +nantais +nareuse +nareux +nasal +nasale +nasales +nasard +nasarde +nasards +nasaux +natal +natale +natales +natals +natif +natifs +native +natives +nattier +naturel +navajo +navajos +naval +navale +navales +navals +navrant +naze +nazes +nazi +nazie +nazies +nazis +neigeux +nerveux +net +nets +nette +nettes +neuf +neufs +neuneu +neuneus +neural +neurale +neuraux +neutre +neutres +neuve +neuves +newlook +niable +niables +niais +niaise +niaises +nicheur +nigaud +nigaude +nigauds +nippon +nippone +nippons +nitreux +nival +nivale +nivales +nivaux +noble +nobles +noceur +noceurs +noceuse +nocif +nocifs +nocive +nocives +nodal +nodale +nodales +nodaux +noir +noiraud +noire +noires +noirs +nominal +nonaire +nonstop +normal +normale +normand +normaux +norrois +notable +notoire +noueuse +noueux +nouveau +nouvel +nouvels +nu +nuageux +nubien +nubiens +nubile +nubiles +nucal +nucale +nucales +nucaux +nudiste +nue +nues +nul +nullard +nulle +nulles +nuls +numide +numides +nunuche +nuptial +nus +nymphal +nympho +nymphos +oasien +oasiens +oblatif +oblique +oblong +oblongs +obscur +obscure +obscurs +obtus +obtuse +obtuses +occitan +occulte +ocre +ocreuse +ocreux +octal +octale +octales +octaux +octuple +odieuse +odieux +odorant +off +offrant +offset +offsets +ogival +ogivale +ogivaux +ohmique +oiseuse +oiseux +oisien +oisiens +oisif +oisifs +oisive +oisives +olive +ollaire +omanais +ombreux +ombrien +oncial +onciale +onciaux +onusien +opalin +opaline +opalins +opaque +opaques +open +opens +opime +opimes +optatif +optimal +optimum +optique +opulent +orageux +oral +orale +orales +oranais +orange +orant +orante +orantes +orants +oraux +orbital +ordinal +ornais +ornaise +osirien +osmique +osque +osques +osseuse +osseux +ossu +ossue +ossues +ossus +otage +otages +otique +otiques +ottoman +ouateux +ougrien +ourdou +ourdoue +ourdous +ourlien +outrema +outreme +ouvrant +ouvreur +ouvrier +ouzbek +ouzbeks +ovale +ovales +ovarien +ovin +ovine +ovines +ovins +ovipare +oxydant +pagnote +pair +paire +paires +pairs +palatal +palatin +palier +paliers +palude +paludes +panard +panarde +panards +pansu +pansue +pansues +pansus +pantois +papable +papal +papale +papales +papaux +papou +papoue +papoues +papous +parano +paranos +pareil +pareils +parent +parente +parents +parigot +parjure +parlant +parleur +parsi +parsie +parsies +parsis +partant +parthe +parthes +partial +partiel +pascal +pascale +pascals +passant +passif +passifs +passive +patagon +pataud +pataude +patauds +patelin +patent +patente +patents +paterne +patient +pattu +pattue +pattues +pattus +paulien +paumier +pauvre +pauvres +pauvret +payable +payant +payante +payants +paysan +paysans +peccant +peinard +pelvien +penaud +penaude +penauds +pendant +pensant +penseur +pensif +pensifs +pensive +pentu +pentue +pentues +pentus +perclus +perdant +perfide +perlier +permien +pers +persan +persane +persans +perse +perses +perso +persos +pervers +pesant +pesante +pesants +pesteux +petiot +petiote +petiots +petit +petite +petites +petits +peul +peule +peules +peuls +peureux +photo +photos +picard +picarde +picards +picte +pictes +pieuse +pieuses +pieux +pigiste +pilaire +pileur +pileurs +pileuse +pileux +pillard +pilleur +pimpant +pinceur +pingre +pingres +pipeur +pipeurs +pipeuse +piquant +piqueux +pirate +pirates +pire +pires +pisseux +pitaud +pitaude +pitauds +piteuse +piteux +placide +plagal +plagale +plagaux +plain +plaine +plaines +plains +plan +planant +plane +planes +planeur +plans +plat +plate +plates +plats +plein +pleine +pleines +pleins +pleural +pleutre +pliable +pliant +pliante +pliants +plouc +ploucs +ployant +plumeux +plural +plurale +pluraux +pluriel +pluvial +podagre +poilant +poilu +poilue +poilues +poilus +pointu +pointue +pointus +polaire +polard +polarde +polards +polysoc +pompeux +pompier +ponce +ponces +ponceur +ponceux +pondeur +pontife +pop +pops +porcin +porcine +porcins +poreuse +poreux +porno +pornos +portal +portale +portant +portaux +porte +portes +porteur +portier +poseur +poseurs +poseuse +positif +postal +postale +postaux +potable +potache +potager +pouacre +poupard +poupin +poupine +poupins +pourpre +poussif +pragois +premier +prenant +preneur +preste +prestes +priant +priante +priants +primal +primale +primaux +prime +primes +pro +probant +probe +probes +proche +proches +profane +profond +profus +profuse +prolixe +prompt +prompte +prompts +propice +propre +propres +propret +pros +prude +prudent +prudes +puant +puante +puantes +puants +pubien +pubiens +public +publics +puceau +puceaux +pucelle +pudique +pugnace +pulpeux +pulsant +punique +punitif +punk +punks +pur +pure +pures +purique +puriste +purs +putatif +putride +pyrique +pythien +qatari +qatarie +qataris +quart +quarte +quartes +quarts +quea +queai +queais +queait +queant +queas +queasse +quee +queent +queer +queera +queerai +queeras +queerez +queers +quees +queez +queiez +queions +queons +quiet +quiets +quinaud +quint +quinte +quintes +quints +quitte +quittes +rabique +racial +raciale +raciaux +raciste +radial +radiale +radiant +radiaux +radical +radieux +radin +radine +radines +radins +radique +rageant +rageur +rageurs +rageuse +raide +raides +rameuse +rameux +ramollo +rampant +rance +rances +rapiat +rapiate +rapiats +rapide +rapides +rare +rares +ras +rasant +rasante +rasants +rase +rases +rassis +rassise +rasta +rastas +ratier +ratiers +rauque +rauques +rayable +rebelle +rebeu +rebeue +rebeues +rebeus +rebman +rebmane +rebmans +recru +recrue +recrues +recrus +rectal +rectale +rectaux +redneck +reggae +reggaes +relaps +relapse +relatif +relou +reloue +reloues +relous +relutif +remuant +remueur +rennais +replet +replets +restant +retors +retorse +revif +revifs +revive +revives +rexiste +rhodien +riant +riante +riantes +riants +ribaud +ribaude +ribauds +riche +riches +rieur +rieurs +rieuse +rieuses +rigide +rigides +rigois +rigoise +rigolo +rigolos +rimeur +rimeurs +rimeuse +ringard +ripou +ripous +risible +rital +ritale +ritales +ritals +rituel +rituels +rival +rivale +rivales +rivaux +robuste +rocheux +rococo +rococos +rogue +rogues +roide +roides +rom +romain +romaine +romains +roman +romand +romande +romands +romane +romanes +romans +roms +ronceux +ronchon +rond +ronde +rondes +ronds +rongeur +rose +roses +rossard +rosse +rosses +rostral +rotatif +rouable +rouan +rouanne +rouans +rouge +rouges +roulant +rouleur +roumain +rouquin +rousse +rousses +routier +roux +royal +royale +royales +royaux +rubican +rude +rudes +rugueux +ruineux +runique +rupin +rupine +rupines +rupins +rural +rurale +rurales +ruraux +rurbain +russien +rustaud +rustre +rustres +sabin +sabine +sabines +sabins +sableux +sacral +sacrale +sacraux +sadique +sagace +sagaces +sage +sages +sain +saine +saines +sains +saint +sainte +saintes +saints +salace +salaces +salant +salante +salants +salaud +salauds +sale +sales +salien +saliens +salin +saline +salines +salins +salique +salubre +samnite +sanguin +sanieux +sapide +sapides +sarde +sardes +sarmate +sarrois +sati +satis +sauf +saufs +saunant +saur +saure +saures +saurs +sauteur +sauvage +sauve +sauves +savant +savante +savants +saxon +saxonne +saxons +schizo +schizos +sciable +scout +scoute +scoutes +scouts +scratch +scrotal +scythe +scythes +sec +second +seconde +seconds +secret +secrets +secs +sensuel +septal +septale +septaux +serein +sereine +sereins +serin +serine +serines +serins +serrate +servant +servile +sessile +seul +seule +seules +seulet +seulets +seuls +sexuel +sexuels +sexy +sexys +seyant +seyante +seyants +siamois +sien +sienne +siennes +siens +sikh +sikhe +sikhes +sikhs +simien +simiens +simple +simples +simplet +sinoque +sinueux +sinusal +sismal +sismale +sismaux +skiable +slave +slaves +slavon +slavons +snob +snobs +sobre +sobres +social +sociale +socialo +sociaux +sodique +solaire +solide +solides +soluble +somali +somalie +somalis +sombre +sombres +songeur +sonique +sonnant +sonore +sonores +soprano +sorcier +sordide +sororal +sortant +sorteur +sot +sots +sotte +sottes +souabe +souabes +soudain +soudant +soudier +soufi +soufie +soufies +soufis +soul +soulant +soulard +soule +soules +souls +souple +souples +sourd +sourde +sourdes +sourds +soyeuse +soyeux +spatial +spinal +spinale +spinaux +spiral +spirale +spirant +spiraux +spirite +spitant +sportif +spumeux +stable +stables +standby +statif +statifs +stative +sternal +strict +stricte +stricts +stupide +suant +suante +suantes +suants +suave +suaves +subaigu +subit +subite +subites +subits +sublime +subtil +subtile +subtils +suceur +suceurs +suceuse +sucrant +sucrier +sudiste +sudoral +suisse +suisses +suivant +suiveur +sujet +sujets +sujette +superbe +sur +suraigu +sural +surale +surales +suraux +sure +sures +suret +surets +surette +surfin +surfine +surfins +surgi +surgie +surgies +surgis +suri +surie +suries +suris +surs +survif +survifs +survive +susdit +susdite +susdits +suspect +sutural +svelte +sveltes +swahili +sylvien +sympa +sympas +synchro +synodal +syntone +syrien +syriens +systyle +tabou +taboue +taboues +tabous +tachant +tacite +tacites +tactile +tadjik +tadjike +tadjiks +taiseux +talaire +taliban +tamil +tamile +tamiles +tamils +tamoul +tamoule +tamouls +tangent +tannant +tapant +tapante +tapants +taquin +taquine +taquins +tarbais +tardif +tardifs +tardive +tarnais +tarsal +tarsale +tarsaux +tarsien +tartare +tarte +tartes +tatar +tatare +tatares +tatars +taurin +taurine +taurins +taxable +taxatif +techno +technos +tel +telle +telles +tels +tenable +tenace +tenaces +tenant +tenante +tenants +tendre +tendres +tenseur +tentant +terne +ternes +terreux +terrien +teuton +teutons +texan +texane +texanes +texans +textile +textuel +thermal +thrace +thraces +tibial +tibiale +tibiaux +tien +tienne +tiennes +tiens +tierce +tierces +timide +timides +tiqueur +titiste +tocard +tocarde +tocards +toilier +tombal +tombale +tombant +tombaux +tonal +tonale +tonales +tonals +tonique +tonnant +top +topique +tops +tordant +torique +torpide +torride +tors +torse +torses +tortu +tortue +tortues +tortus +torve +torves +toscan +toscane +toscans +total +totale +totales +totaux +touareg +touffu +touffue +touffus +tourier +touvain +toxique +traceur +tractif +tradi +tradis +traitre +trapu +trapue +trapues +trapus +trash +trashs +triable +tribal +tribale +tribaux +tricard +trifide +trigone +trin +trine +trines +trins +tripale +triple +triples +tripode +triste +tristes +trivial +trognon +trouble +troyen +troyens +tsigane +tuable +tuables +tuant +tuante +tuantes +tuants +tubaire +tubard +tubarde +tubards +tufier +tufiers +tumoral +tupi +tupie +tupies +tupis +turbide +turc +turcs +turgide +turpide +turque +turques +tussah +tussahs +tutoral +tutsi +tutsie +tutsies +tutsis +typique +ubique +ubiques +ulnaire +ultime +ultimes +ultra +ultras +ummite +ummites +unaire +unaires +unanime +uniate +uniates +uniaxe +uniaxes +unipare +unique +uniques +unisexe +unitif +unitifs +unitive +uranyle +urbain +urbaine +urbains +urgent +urgente +urgents +urineux +urique +uriques +usant +usante +usantes +usants +usinier +usuel +usuelle +usuels +utile +utiles +uval +uvale +uvales +uvaux +vacant +vacante +vacants +vachard +vache +vaches +vacive +vacives +vagal +vagale +vagales +vagaux +vagile +vagiles +vaginal +vague +vagues +vain +vaine +vaines +vains +valable +valaque +valide +valides +vandale +vanneur +variant +varois +varoise +vasard +vasarde +vasards +vaseuse +vaseux +vassal +vassale +vassaux +vaste +vastes +vaudois +vaudou +vaudoue +vaudous +vecteur +veinard +veineux +velche +velches +velu +velue +velues +velus +venant +venante +venants +vendeur +vengeur +venteux +ventral +ventru +ventrue +ventrus +verbal +verbale +verbaux +verbeux +vermeil +vernal +vernale +vernaux +versant +vert +verte +vertes +verts +verveux +veuf +veufs +veule +veules +veuve +veuves +vexant +vexante +vexants +viable +viables +viager +viagers +vibrant +vicieux +vicinal +victime +vide +vides +vidien +vidiens +vieil +vieille +vierge +vierges +vieux +vif +vifs +viking +vikings +vil +vilain +vilaine +vilains +vile +viles +villeux +vils +vinaire +vineuse +vineux +vinique +vintage +violent +violet +violets +violine +viral +virale +virales +viraux +vireuse +vireux +viride +virides +viril +virile +viriles +virils +virtuel +viseuse +viseux +visible +visuel +visuels +vital +vitale +vitales +vitaux +vite +vites +vitreux +vivable +vivace +vivaces +vivant +vivante +vivants +vive +vives +vivrier +vocal +vocale +vocales +vocaux +vogoul +vogoule +vogouls +voisin +voisine +voisins +volable +volage +volages +volant +volante +volants +volatil +voleur +voleurs +voleuse +volitif +vomique +vomitif +vorace +voraces +vosgien +voteur +voteurs +voteuse +votif +votifs +votive +votives +voyant +voyante +voyants +voyeur +voyeurs +voyeuse +voyou +voyous +vrai +vraie +vraies +vrais +wallon +wallons +whig +whigs +wiccan +wiccane +wiccans +wifi +wifis +wolof +wolofe +wolofes +wolofs +wormien +xhosa +xhosas +yidiche +youpin +youpine +youpins +zadiste +zain +zains +zambien +zarbi +zarbis +zaydite +zen +zend +zende +zendes +zends +zens +zinzin +zinzins +zonal +zonale +zonales +zonard +zonarde +zonards +zonaux +zoulou +zouloue +zoulous +zutique diff --git a/paste/middleware.py b/paste/middleware.py index 2440701..1ba92ef 100644 --- a/paste/middleware.py +++ b/paste/middleware.py @@ -1,3 +1,6 @@ +from webtools import settings + + from django.contrib.sessions.middleware import ( SessionMiddleware as DjangoSessionMiddleware, ) diff --git a/paste/tools.py b/paste/tools.py index 1575a90..13abfb5 100644 --- a/paste/tools.py +++ b/paste/tools.py @@ -2,12 +2,44 @@ import string import random import shortuuid import os +import re from webtools import settings +from functools import lru_cache from .models import Paste +@lru_cache() +def find_words(): + if not settings.DICT: + return None + short_words = [] + try: + with open(settings.DICT) as dictionary: + for line in dictionary: + line = line.strip() + if re.match("[a-z]{2,5}$", line): + short_words.append(line) + return short_words + except FileNotFoundError: + return None + + def random_id(model): - """Returns a short uuid for the slug of the given model.""" + """Returns a short uuid for the slug of the given model. + + If a DICT is given in the settings, try to use it to generate nicer URLS like: + """ + short_words = find_words() + if short_words: + slug = ( + random.choice(string.digits) + + random.choice(string.ascii_uppercase) + + "-" + + random.choice(short_words) + ) + if not model.objects.filter(slug=slug): + return slug + # else, fallback to the shortuuid strategy: uuid = random.choice("0123456789") + shortuuid.uuid() for i in range(3, len(uuid)): potential_uuid = uuid[:i] diff --git a/paste/urls.py b/paste/urls.py index 6ff0106..46ba435 100644 --- a/paste/urls.py +++ b/paste/urls.py @@ -9,9 +9,9 @@ urlpatterns = [ url(r"^history$", views.history, name="history"), url(r"^static/(?P.*)", serve, {"document_root": settings.STATIC_ROOT}), url( - r"^paste/(?P[a-zA-Z0-9]+)/(?P[a-z]+)?$", + r"^paste/(?P[a-zA-Z0-9-]+)/(?P[a-z]+)?$", views.show, name="paste", ), - url(r"^(?P[0-9][a-zA-Z0-9]+)$", views.show, name="short_paste"), + url(r"^(?P[0-9][a-zA-Z0-9-]+)$", views.show, name="short_paste"), ] diff --git a/webtools/settings.py b/webtools/settings.py index 0ce86ee..85d0db1 100644 --- a/webtools/settings.py +++ b/webtools/settings.py @@ -8,136 +8,128 @@ SITE_ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) ### Customize/configure Pasteque -DISPLAY_NAME = 'Pasteque' +DISPLAY_NAME = "Pasteque" COMPRESS_ENABLED = False -SECRET_KEY = 'change_me' -ALLOWED_HOSTS = ['localhost','127.0.0.1'] -TIME_ZONE = 'Europe/Brussels' -LANGUAGE_CODE = 'fr-FR' -DEBUG = False +SECRET_KEY = "change_me" +ALLOWED_HOSTS = ["localhost", "127.0.0.1"] +TIME_ZONE = "Europe/Brussels" +LANGUAGE_CODE = "fr-FR" +DICT = os.path.join(SITE_ROOT, "dict", "french") +DEBUG = True TEMPLATE_DEBUG = DEBUG -ADMINS = ( - ('user', 'user@hostname.domain'), -) +ADMINS = (("user", "user@hostname.domain"),) DATABASES = { - 'default': { - 'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. - 'NAME': os.path.join(SITE_ROOT, 'var', 'db', 'webtools.sqlite3'), + "default": { + "ENGINE": "django.db.backends.sqlite3", # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. + "NAME": os.path.join(SITE_ROOT, "var", "db", "webtools.sqlite3"), # The following settings are not used with sqlite3: - 'USER': '', - 'PASSWORD': '', - 'HOST': '', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. - 'PORT': '', # Set to empty string for default. + "USER": "", + "PASSWORD": "", + "HOST": "", # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. + "PORT": "", # Set to empty string for default. } } ### End of customisation -APP_NAME = 'Pasteque' -APP_VERSION = 'v0.1' +APP_NAME = "Pasteque" +APP_VERSION = "v0.1" SITE_ID = 1 MANAGERS = ADMINS USE_I18N = True USE_L10N = True USE_TZ = True -MEDIA_URL = '' -CACHE_PATH = os.path.join(SITE_ROOT, 'var', 'pygments-static') -COMPRESS_ROOT = os.path.join(SITE_ROOT, 'static') -MEDIA_ROOT = os.path.join(SITE_ROOT, 'assets') -STATIC_ROOT = os.path.join(SITE_ROOT, 'static') -STATIC_URL = '/static/' +MEDIA_URL = "" +CACHE_PATH = os.path.join(SITE_ROOT, "var", "pygments-static") +COMPRESS_ROOT = os.path.join(SITE_ROOT, "static") +MEDIA_ROOT = os.path.join(SITE_ROOT, "assets") +STATIC_ROOT = os.path.join(SITE_ROOT, "static") +STATIC_URL = "/static/" STATICFILES_FINDERS = ( - 'django.contrib.staticfiles.finders.FileSystemFinder', - 'django.contrib.staticfiles.finders.AppDirectoriesFinder', - 'compressor.finders.CompressorFinder', + "django.contrib.staticfiles.finders.FileSystemFinder", + "django.contrib.staticfiles.finders.AppDirectoriesFinder", + "compressor.finders.CompressorFinder", ) TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', + "django.template.loaders.filesystem.Loader", + "django.template.loaders.app_directories.Loader", ) TEMPLATES = [ { - 'BACKEND': 'django.template.backends.django.DjangoTemplates', - 'DIRS': [], - 'APP_DIRS': True, - 'OPTIONS': { - 'context_processors': [ - 'django.contrib.auth.context_processors.auth', - 'django.contrib.messages.context_processors.messages', - 'django.template.context_processors.debug', - 'django.template.context_processors.request', - 'paste.context_processors.app_details', + "BACKEND": "django.template.backends.django.DjangoTemplates", + "DIRS": [], + "APP_DIRS": True, + "OPTIONS": { + "context_processors": [ + "django.contrib.auth.context_processors.auth", + "django.contrib.messages.context_processors.messages", + "django.template.context_processors.debug", + "django.template.context_processors.request", + "paste.context_processors.app_details", ], }, }, ] MIDDLEWARE = [ - 'paste.middleware.SessionMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.common.CommonMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', + "paste.middleware.SessionMiddleware", + "django.contrib.auth.middleware.AuthenticationMiddleware", + "django.contrib.messages.middleware.MessageMiddleware", + "django.middleware.common.CommonMiddleware", + "django.middleware.csrf.CsrfViewMiddleware", ] -ROOT_URLCONF = 'webtools.urls' -WSGI_APPLICATION = 'webtools.wsgi.application' +ROOT_URLCONF = "webtools.urls" +WSGI_APPLICATION = "webtools.wsgi.application" INSTALLED_APPS = ( - 'django.contrib.staticfiles', - 'django.contrib.contenttypes', - 'django.contrib.admin', - 'django.contrib.auth', - 'django.contrib.messages', - 'django.contrib.sessions', - 'compressor', - 'paste', + "django.contrib.staticfiles", + "django.contrib.contenttypes", + "django.contrib.admin", + "django.contrib.auth", + "django.contrib.messages", + "django.contrib.sessions", + "compressor", + "paste", ) PASTE = { - 'has_title': False, - 'has_expire_by_views': False, - 'has_meta_table': False, - 'show_char_left': False, - 'private_by_default': True, - 'enabled_renderers': ['pygments', 'raw'], - 'default_renderer': 'pygments', - 'max_characters': 100000, - 'default_lifetime': 60 * 24 * 7 * 365, - 'default_language': 'Python', + "has_title": False, + "has_expire_by_views": False, + "has_meta_table": False, + "show_char_left": False, + "private_by_default": True, + "enabled_renderers": ["pygments", "raw"], + "default_renderer": "pygments", + "max_characters": 100000, + "default_lifetime": 60 * 24 * 7 * 365, + "default_language": "Python", } LOGGING = { - 'version': 1, - 'disable_existing_loggers': False, - 'filters': { - 'require_debug_false': { - '()': 'django.utils.log.RequireDebugFalse' - } - }, - 'handlers': { - 'mail_admins': { - 'level': 'ERROR', - 'filters': ['require_debug_false'], - 'class': 'django.utils.log.AdminEmailHandler' + "version": 1, + "disable_existing_loggers": False, + "filters": {"require_debug_false": {"()": "django.utils.log.RequireDebugFalse"}}, + "handlers": { + "mail_admins": { + "level": "ERROR", + "filters": ["require_debug_false"], + "class": "django.utils.log.AdminEmailHandler", }, - 'console': { - 'level': 'DEBUG', - 'class': 'logging.StreamHandler', - }, - 'logfile': { - 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', - 'filename': os.path.join(SITE_ROOT, 'var', 'logs', 'error.log'), - 'maxBytes': 50000, - 'backupCount': 2, + "console": {"level": "DEBUG", "class": "logging.StreamHandler",}, + "logfile": { + "level": "DEBUG", + "class": "logging.handlers.RotatingFileHandler", + "filename": os.path.join(SITE_ROOT, "var", "logs", "error.log"), + "maxBytes": 50000, + "backupCount": 2, }, }, - 'loggers': { - 'django.request': { - 'handlers': ['console','logfile'], - 'level': 'ERROR', - 'propagate': True, + "loggers": { + "django.request": { + "handlers": ["console", "logfile"], + "level": "ERROR", + "propagate": True, }, - } + }, }