|
|
@@ -31,64 +31,6 @@ from constance import config
|
|
|
from marktplatz.widgets import *
|
|
|
|
|
|
|
|
|
-class Credit(models.Model):
|
|
|
- owner = CharField(verbose_name='Building or Product owner',blank=True,max_length = 300)
|
|
|
- architecture = CharField(verbose_name='Architecture',blank=True,max_length = 300)
|
|
|
- concept = CharField(verbose_name='Product artist/ concept/ design/ planning',blank=True,max_length = 300)
|
|
|
- structural_engeneering = CharField(verbose_name='Structural engineering',blank=True,max_length = 300)
|
|
|
- facade_design = CharField(verbose_name='Facade design',blank=True,max_length = 300)
|
|
|
- face_construction = CharField(verbose_name='Facade construction',blank=True,max_length = 300)
|
|
|
- kinetic_design = CharField(verbose_name='Kinetic engineering',blank = True,max_length = 300)
|
|
|
- light_design = CharField(verbose_name='Light design',blank = True,max_length = 300)
|
|
|
- tecnical_layout = CharField(verbose_name='Technical layout light',blank = True,max_length = 300)
|
|
|
- display_content = CharField(verbose_name='Display content/ visuals/ showreel',blank = True,max_length = 300)
|
|
|
- light_hardware = CharField(verbose_name='Light hardware (LED hardware)',blank = True,max_length = 300)
|
|
|
- lightning_software = CharField(verbose_name='Lighting control software',blank = True,max_length = 300)
|
|
|
- product_coordination = CharField(verbose_name='Product co-ordination',blank = True,max_length = 300)
|
|
|
- membrane_skin = CharField(verbose_name='Membrane skin',blank = True,max_length = 300)
|
|
|
- interaction_design = CharField(verbose_name='Interaction design/ programming',blank = True,max_length = 300)
|
|
|
- sponsor = CharField(verbose_name='Product sponsor/ support',blank = True,max_length = 500)
|
|
|
- module_elems = CharField(verbose_name='Pixel or other basic module/ elements',blank = True,max_length = 300)
|
|
|
-
|
|
|
- def __iter__(self):
|
|
|
- for field in self._meta.fields:
|
|
|
- if field.value_to_string(self) != '-' and field.value_to_string(self) != 'N/A':
|
|
|
- yield (field.verbose_name, field.value_to_string(self))
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-class Description(models.Model):
|
|
|
- facade = TextField(verbose_name='Facade type and geometry (structure)',blank = True,max_length = 900)
|
|
|
- light_creation = TextField(verbose_name='Kind of light creation',blank = True,max_length = 900)
|
|
|
- resolution = TextField(verbose_name='Resolution and transmitting behaviour',blank = True,max_length = 900)
|
|
|
- pixel_distance = CharField(verbose_name='Pixel distance',blank = True,max_length = 300)
|
|
|
- luminance = TextField(verbose_name='Luminace',blank = True,max_length = 900)
|
|
|
- urban_situation = TextField(verbose_name='Urban situation',blank = True,max_length = 900)
|
|
|
- description_showreel = TextField(verbose_name='Description of showreel',blank = True,max_length = 900)
|
|
|
-
|
|
|
- def __iter__(self):
|
|
|
- for field in self._meta.fields:
|
|
|
- if (field.value_to_string(self) != '-') and (field.value_to_string(self) != 'N/A'):
|
|
|
- yield (field.verbose_name, field.value_to_string(self))
|
|
|
-
|
|
|
-
|
|
|
-class Interaction(models.Model):
|
|
|
- communtity = TextField(verbose_name='Community or communities involved',blank = True,max_length = 900)
|
|
|
- host = CharField(verbose_name='Host organization',blank = True,max_length = 900)
|
|
|
- legal_form = CharField(verbose_name='Legal form',blank=True,max_length = 900)
|
|
|
- issues = TextField(verbose_name='Issues addressed',blank = True,max_length = 900)
|
|
|
- impact = TextField(verbose_name='Impact',blank = True,max_length = 900)
|
|
|
- tools = TextField(verbose_name='Tools developed',blank = True,max_length = 900)
|
|
|
- tools_used = TextField(verbose_name='Tools used',blank = True,max_length = 900)
|
|
|
- next_steps = TextField(verbose_name='Next steps',blank = True,max_length = 900)
|
|
|
-
|
|
|
- def __iter__(self):
|
|
|
- for field in self._meta.fields:
|
|
|
- if (field.value_to_string(self) != '-') and (field.value_to_string(self) != 'N/A'):
|
|
|
- yield (field.verbose_name, field.value_to_string(self))
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
|
|
|
class Contact(models.Model):
|
|
|
user = OneToOneField(User, on_delete=models.CASCADE,blank=True)
|
|
|
@@ -122,70 +64,14 @@ class Category(models.Model):
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
class Product(models.Model):
|
|
|
|
|
|
-
|
|
|
- #https://stackoverflow.com/questions/1355150/when-saving-how-can-you-check-if-a-field-has-changed
|
|
|
-
|
|
|
-
|
|
|
def __init__(self, *args, **kwargs):
|
|
|
+
|
|
|
super(Product, self).__init__(*args, **kwargs)
|
|
|
|
|
|
def save(self, update_fields=None, *args, **kwargs):
|
|
|
- # print ("is this workig?")
|
|
|
- # if self.frei != self.__original_frei and self.frei == "JAJA":
|
|
|
- # print ( "activates --------")
|
|
|
- # self.frei_activated = True
|
|
|
-
|
|
|
- # print ('update_fields: ', update_fields)
|
|
|
- # post_save.connect(search_agent)
|
|
|
-
|
|
|
- # if self.frei != self.__original_frei and self.frei == "JAJA":
|
|
|
- # for agent in SearchAgent.objects.all():
|
|
|
- # for agentOrt in agent.ort:
|
|
|
- # print(agentOrt)
|
|
|
- # if agentOrt == self.ort:
|
|
|
- # print ('send_mail')
|
|
|
- #
|
|
|
- # context = {}
|
|
|
- #
|
|
|
- # print ( reverse('search-agent-delete' , kwargs={ 'pk': agent.pk, 'hash': agent.hash } ) )
|
|
|
- #
|
|
|
- # context['product_name']=self.name
|
|
|
- # context['product_claim']=self.claim
|
|
|
- # context['product_beschreibung']=self.beschreibung
|
|
|
- # context['product_learning']=self.learning
|
|
|
- # context['product_gruendungsjahr']=self.gruendungsjahr
|
|
|
- # context['product_betriebgenommen']=self.betriebgenommen
|
|
|
- # context['product_status']=self.status
|
|
|
- # context['product_adresse']=self.adresse
|
|
|
- # context['product_plz']=self.plz
|
|
|
- # context['product_adresse_zusatz']=self.adresse_zusatz
|
|
|
- # context['product_ort']=self.ort
|
|
|
- # context['product_website']=self.website
|
|
|
- # context['product_email']=agent.hash
|
|
|
- # context['agent_hash']=self.email
|
|
|
- #
|
|
|
- #
|
|
|
- #
|
|
|
- # context['recipient'] = [ agent.email, ]
|
|
|
- # context['msg_subject' ] = ('Gemeinschaffen - ' + self.name )
|
|
|
- #
|
|
|
- # mail.send(
|
|
|
- # context['recipient'],
|
|
|
- # config.EMAIL_NOREPLY,
|
|
|
- # context = context,
|
|
|
- # template='generic',
|
|
|
- # headers={ 'Reply-To': context['product_email'] },
|
|
|
- # priority='now',
|
|
|
- # )
|
|
|
-
|
|
|
-
|
|
|
+ #https://stackoverflow.com/questions/1355150/when-saving-how-can-you-check-if-a-field-has-changed
|
|
|
super().save( update_fields=update_fields, *args, **kwargs) # Call the "real" save() method.
|
|
|
|
|
|
|
|
|
@@ -294,8 +180,7 @@ class Product(models.Model):
|
|
|
photo = CharField(max_length=500, null=True, blank=True, help_text="")
|
|
|
videocts = CharField(max_length=500, null=True, blank=True, help_text="")
|
|
|
category = ManyToManyField(Category, help_text="",null = True, blank=True)
|
|
|
- credits = ForeignKey(Credit, null = True, blank=True, on_delete=models.SET_NULL, help_text="")
|
|
|
- description = ForeignKey(Description, on_delete=models.SET_NULL, help_text="",null = True, blank=True)
|
|
|
+ # credits = ForeignKey(Credit, null = True, blank=True, on_delete=models.SET_NULL, help_text="")
|
|
|
contact = ForeignKey(Contact, null = True,on_delete=models.SET_NULL, help_text="")
|
|
|
#interaction = ForeignKey(Interaction, null = True,on_delete = models.SET_NULL, help_text="")
|
|
|
|
|
|
@@ -554,67 +439,6 @@ def auto_delete_file_on_delete(sender, instance, **kwargs):
|
|
|
|
|
|
|
|
|
|
|
|
-#@receiver(models.signals.pre_save, sender=Media)
|
|
|
-#def auto_delete_file_on_change(sender, instance, **kwargs):
|
|
|
-# """
|
|
|
-# Deletes old file from filesystem
|
|
|
-# when corresponding `MediaFile` object is updated
|
|
|
-# with new file.
|
|
|
-# """
|
|
|
-# if not instance.pk:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# try:
|
|
|
-# old_file = Media.objects.get(pk=instance.pk).image
|
|
|
-# except Media.DoesNotExist:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# new_file = instance.image
|
|
|
-# if not old_file == new_file:
|
|
|
-# if os.path.isfile(old_file.path):
|
|
|
-# os.remove(old_file.path)
|
|
|
-#
|
|
|
-# try:
|
|
|
-# old_file = Media.objects.get(pk=instance.pk).image_small
|
|
|
-# except Media.DoesNotExist:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# new_file = instance.image_small
|
|
|
-# if not old_file == new_file:
|
|
|
-# if os.path.isfile(old_file.path):
|
|
|
-# os.remove(old_file.path)
|
|
|
-#
|
|
|
-# try:
|
|
|
-# old_file = Media.objects.get(pk=instance.pk).image_medium
|
|
|
-# except Media.DoesNotExist:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# new_file = instance.image_medium
|
|
|
-# if not old_file == new_file:
|
|
|
-# if os.path.isfile(old_file.path):
|
|
|
-# os.remove(old_file.path)
|
|
|
-#
|
|
|
-# try:
|
|
|
-# old_file = Media.objects.get(pk=instance.pk).image_big
|
|
|
-# except Media.DoesNotExist:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# new_file = instance.image_big
|
|
|
-# if not old_file == new_file:
|
|
|
-# if os.path.isfile(old_file.path):
|
|
|
-# os.remove(old_file.path)
|
|
|
-#
|
|
|
-# try:
|
|
|
-# old_file = Media.objects.get(pk=instance.pk).image_norm
|
|
|
-# except Media.DoesNotExist:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# new_file = instance.image_norm
|
|
|
-# if not old_file == new_file:
|
|
|
-# if os.path.isfile(old_file.path):
|
|
|
-# os.remove(old_file.path)
|
|
|
-#
|
|
|
-
|
|
|
|
|
|
class Video(models.Model):
|
|
|
product = ForeignKey(Product, on_delete=models.CASCADE)
|
|
|
@@ -634,25 +458,6 @@ def auto_delete_video_on_delete(sender, instance, **kwargs):
|
|
|
if os.path.isfile(instance.image.path):
|
|
|
os.remove(instance.image.path)
|
|
|
|
|
|
-#@receiver(models.signals.pre_save, sender=Video)
|
|
|
-#def auto_delete_video_on_change(sender, instance, **kwargs):
|
|
|
-# """
|
|
|
-# Deletes old file from filesystem
|
|
|
-# when corresponding `MediaFile` object is updated
|
|
|
-# with new file.
|
|
|
-# """
|
|
|
-# if not instance.pk:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# try:
|
|
|
-# old_file = Video.objects.get(pk=instance.pk).image
|
|
|
-# except Media.DoesNotExist:
|
|
|
-# return False
|
|
|
-#
|
|
|
-# new_file = instance.image
|
|
|
-# if not old_file == new_file:
|
|
|
-# if os.path.isfile(old_file.path):
|
|
|
-# os.remove(old_file.path)
|
|
|
|
|
|
|
|
|
|
|
|
@@ -665,3 +470,47 @@ class Vote(models.Model):
|
|
|
def __iter__(self):
|
|
|
for field in self._meta.fields:
|
|
|
yield (field.verbose_name, field.value_to_string(self))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+class Credit(models.Model):
|
|
|
+ owner = CharField(verbose_name='Building or Product owner',blank=True,max_length = 300)
|
|
|
+ architecture = CharField(verbose_name='Architecture',blank=True,max_length = 300)
|
|
|
+ concept = CharField(verbose_name='Product artist/ concept/ design/ planning',blank=True,max_length = 300)
|
|
|
+ structural_engeneering = CharField(verbose_name='Structural engineering',blank=True,max_length = 300)
|
|
|
+ facade_design = CharField(verbose_name='Facade design',blank=True,max_length = 300)
|
|
|
+ face_construction = CharField(verbose_name='Facade construction',blank=True,max_length = 300)
|
|
|
+ kinetic_design = CharField(verbose_name='Kinetic engineering',blank = True,max_length = 300)
|
|
|
+ light_design = CharField(verbose_name='Light design',blank = True,max_length = 300)
|
|
|
+ tecnical_layout = CharField(verbose_name='Technical layout light',blank = True,max_length = 300)
|
|
|
+ display_content = CharField(verbose_name='Display content/ visuals/ showreel',blank = True,max_length = 300)
|
|
|
+ light_hardware = CharField(verbose_name='Light hardware (LED hardware)',blank = True,max_length = 300)
|
|
|
+ lightning_software = CharField(verbose_name='Lighting control software',blank = True,max_length = 300)
|
|
|
+ product_coordination = CharField(verbose_name='Product co-ordination',blank = True,max_length = 300)
|
|
|
+ membrane_skin = CharField(verbose_name='Membrane skin',blank = True,max_length = 300)
|
|
|
+ interaction_design = CharField(verbose_name='Interaction design/ programming',blank = True,max_length = 300)
|
|
|
+ sponsor = CharField(verbose_name='Product sponsor/ support',blank = True,max_length = 500)
|
|
|
+ module_elems = CharField(verbose_name='Pixel or other basic module/ elements',blank = True,max_length = 300)
|
|
|
+
|
|
|
+ def __iter__(self):
|
|
|
+ for field in self._meta.fields:
|
|
|
+ if field.value_to_string(self) != '-' and field.value_to_string(self) != 'N/A':
|
|
|
+ yield (field.verbose_name, field.value_to_string(self))
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+class Interaction(models.Model):
|
|
|
+ communtity = TextField(verbose_name='Community or communities involved',blank = True,max_length = 900)
|
|
|
+ host = CharField(verbose_name='Host organization',blank = True,max_length = 900)
|
|
|
+ legal_form = CharField(verbose_name='Legal form',blank=True,max_length = 900)
|
|
|
+ issues = TextField(verbose_name='Issues addressed',blank = True,max_length = 900)
|
|
|
+ impact = TextField(verbose_name='Impact',blank = True,max_length = 900)
|
|
|
+ tools = TextField(verbose_name='Tools developed',blank = True,max_length = 900)
|
|
|
+ tools_used = TextField(verbose_name='Tools used',blank = True,max_length = 900)
|
|
|
+ next_steps = TextField(verbose_name='Next steps',blank = True,max_length = 900)
|
|
|
+
|
|
|
+ def __iter__(self):
|
|
|
+ for field in self._meta.fields:
|
|
|
+ if (field.value_to_string(self) != '-') and (field.value_to_string(self) != 'N/A'):
|
|
|
+ yield (field.verbose_name, field.value_to_string(self))
|