@@ -70,6 +70,10 @@ class Meta:
7070 def fullname (self ):
7171 return f'{ self .name } ({ self .canton } )'
7272
73+ @property
74+ def bfs_number (self ):
75+ return self .id
76+
7377 def __str__ (self ):
7478 return self .fullname
7579
@@ -195,20 +199,6 @@ def create_screenshot_file(self, is_thumbnail=False):
195199 )
196200 return screenshot_file
197201
198- def save (self , * args , ** kwargs ):
199- def test_exists (pk ):
200- if list (self .__class__ .objects .filter (pk = pk )):
201- new_id = create_slug_hash_6 ()
202- test_exists (new_id )
203- else :
204- return pk
205-
206- if self ._state .adding :
207- self .id = create_slug_hash_6 ()
208- self .id = test_exists (self .id )
209-
210- super ().save (* args , ** kwargs )
211-
212202 def image_twitter (self ):
213203 if bool (self .screenshot ):
214204 return get_thumbnail (
@@ -231,53 +221,58 @@ def __str__(self):
231221 else :
232222 return self .title
233223
224+ def save (self , * args , ** kwargs ):
225+ def test_exists (pk ):
226+ if list (self .__class__ .objects .filter (pk = pk )):
227+ new_id = create_slug_hash_6 ()
228+ test_exists (new_id )
229+ else :
230+ return pk
231+
232+ if self ._state .adding :
233+ self .id = create_slug_hash_6 ()
234+ self .id = test_exists (self .id )
234235
235- @receiver (post_save , sender = Snapshot )
236- def save_screenshot_handler (sender , ** kwargs ):
237- instance = kwargs .get ('instance' )
236+ if self .data :
237+ storage = OverwriteStorage ()
238+ if self .permission is int (SnapshotPermission .PUBLIC ):
239+ self .create_meta (storage )
240+ else :
241+ storage .delete (f'snapshot-meta/{ self .id } .html' )
238242
239- def save_screenshot ():
240- post_save .disconnect (save_screenshot_handler , sender = Snapshot )
243+ super ().save (* args , ** kwargs )
244+
245+ if hasattr (settings , 'SAVE_SCREENSHOT_ENABLED' ) and settings .SAVE_SCREENSHOT_ENABLED is True :
246+ self .create_screenshot ()
247+
248+ super ().save (* args , ** kwargs )
249+
250+ def create_screenshot (self ):
241251 # only create snapshot if data changed
242- if instance .data_changed ([
252+ if self .data_changed ([
243253 'data' , 'screenshot_generated' , 'thumbnail_generated'
244- ]) or not bool (instance .thumbnail_generated ):
245- if not 'resources' in instance .data :
246- return
247- try :
248- # disconnect to break save recursive loop
249- post_save .disconnect (save_screenshot_handler , sender = Snapshot )
250- screenshot_file = instance .create_screenshot_file ()
251- thumbnail_file = instance .create_screenshot_file (is_thumbnail = True )
252- instance .screenshot_generated = screenshot_file
253- instance .thumbnail_generated = thumbnail_file
254- instance .save ()
255- finally :
256- # always reconnect signal
257- post_save .connect (save_screenshot_handler , sender = Snapshot )
258-
259- def save_meta (storage ):
254+ ]) or not bool (self .thumbnail_generated ):
255+ print ('resources' , 'resources' in self .data )
256+ if not 'resources' in self .data :
257+ raise ValueError ('no resources key in data' )
258+
259+ screenshot_file = self .create_screenshot_file ()
260+ thumbnail_file = self .create_screenshot_file (is_thumbnail = True )
261+ self .screenshot_generated = screenshot_file
262+ self .thumbnail_generated = thumbnail_file
263+
264+ def create_meta (self , storage ):
260265 domain = Site .objects .get_current ().domain
261266 proto = 'https' if settings .USE_HTTPS else 'http'
262267 meta = f'''
263- <meta property="og:title" content="{ instance .title_data } ">
264- <meta property="og:description" content="{ instance .description_data } ">
268+ <meta property="og:title" content="{ self .title_data } ">
269+ <meta property="og:description" content="{ self .description_data } ">
265270<meta property="og:type" content="website">
266- <meta property="og:url" content="{ proto } ://{ domain } { instance .get_absolute_url ()} ">
267- <meta property="og:image" content="{ proto } ://{ domain } /{ instance .image_facebook ()} ">
268- <meta name="twitter:image" content="{ proto } ://{ domain } /{ instance .image_twitter ()} ">
271+ <meta property="og:url" content="{ proto } ://{ domain } { self .get_absolute_url ()} ">
272+ <meta property="og:image" content="{ proto } ://{ domain } /{ self .image_facebook ()} ">
273+ <meta name="twitter:image" content="{ proto } ://{ domain } /{ self .image_twitter ()} ">
269274'''
270- storage .save (f'snapshot-meta/{ instance .id } .html' , ContentFile (meta ))
271-
272- if hasattr (settings , 'SAVE_SCREENSHOT_ENABLED' ) and settings .SAVE_SCREENSHOT_ENABLED is True :
273- save_screenshot ()
274-
275- if instance .data :
276- storage = OverwriteStorage ()
277- if instance .permission is int (SnapshotPermission .PUBLIC ):
278- save_meta (storage )
279- else :
280- storage .delete (f'snapshot-meta/{ instance .id } .html' )
275+ storage .save (f'snapshot-meta/{ self .id } .html' , ContentFile (meta ))
281276
282277
283278class Workspace (models .Model ):
0 commit comments