Advertisement
hellsgate

Model layouts - venue

Dec 23rd, 2013
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.51 KB | None | 0 0
  1. class CorecrmModel(SaveTheChange, models.Model):
  2.     request = None
  3.  
  4.     def delete(self):
  5.         if hasattr(self, 'active'):
  6.             self.active = False
  7.             self.save()
  8.         elif hasattr(self, 'is_active'):
  9.             self.is_active = False
  10.             self.save()
  11.         else:
  12.             super(CorecrmModel, self).delete()
  13.  
  14.     class Meta:
  15.         abstract = True
  16.  
  17.  
  18. class VenueType(CorecrmModel):
  19.     name = models.CharField(max_length=50)
  20.  
  21.     def __unicode__(self):
  22.         return self.name
  23.  
  24.  
  25. class Venue(CorecrmModel):
  26.     name = models.CharField(max_length=100, blank=False)
  27.     logo = ImageWithThumbsField(upload_to='venue/venue/logo/', sizes=((80, 125), (125, 80), (103, 103)),
  28.         blank=True, default='')
  29.     group = models.ForeignKey(GroupOperator, default=1)
  30.     venue_type = models.ManyToManyField(VenueType, help_text='')
  31.     address1 = models.CharField(max_length=255, blank=False)
  32.     address2 = models.CharField(max_length=255, blank=True)
  33.     address3 = models.CharField(max_length=255, blank=True)
  34.     city = models.CharField(max_length=50, blank=False)
  35.     region = models.CharField(max_length=50, blank=True)
  36.     postcode = models.CharField(max_length=10, blank=False)
  37.     country = models.CharField(max_length=255, blank=True, default='')
  38.     bdm = models.ForeignKey('people.UserProfile', related_name='venue_bdms',
  39.             verbose_name='BDM',
  40.             limit_choices_to={'groups__name__in': [u'BDM']}
  41.         )
  42.     hoo = models.ForeignKey('people.UserProfile', related_name='venue_hoos',
  43.             verbose_name='head of ops',
  44.             limit_choices_to={'groups__name__in': [u'Head of Ops']}
  45.         )
  46.     function_facilities = models.ManyToManyField(VenueFunctionFacility, blank=True)
  47.     screening_formats = models.ManyToManyField('cinema.ScreeningFormat', blank=True, null=True)
  48.     default_pre_film_time = models.PositiveSmallIntegerField(blank=True, null=True)
  49.     default_post_film_time = models.PositiveSmallIntegerField(blank=True, null=True)
  50.     fes_id = models.PositiveIntegerField(blank=True, null=True)
  51.  
  52.     def __unicode__(self):
  53.         return self.name
  54.  
  55.  
  56. class Area(CorecrmModel):
  57.     name = models.CharField(max_length=100, verbose_name=u'name of area')
  58.     friendly_name = models.CharField(max_length=100, blank=True, default='')
  59.     venue = models.ForeignKey(Venue)
  60.     area_type = models.ManyToManyField(AreaType)
  61.     description = models.TextField(blank=True)
  62.     configurable = models.BooleanField(default=False, verbose_name='table layout can be changed')
  63.     capacity = models.IntegerField(default=0)
  64.     code = models.CharField(max_length=100, blank=True, default='')
  65.     is_customer_selectable = models.BooleanField(default=True)
  66.     is_online_bookable = models.BooleanField(default=True)
  67.     max_standing = models.SmallIntegerField(default=0)
  68.     max_seating = models.SmallIntegerField(default=0)
  69.     include_in_avail_search = models.BooleanField(default=True)
  70.     order = models.SmallIntegerField(blank=True, default=0)
  71.     min_covers = models.SmallIntegerField(default=0, verbose_name="minimum covers per table")
  72.     max_covers = models.SmallIntegerField(default=0, verbose_name="maximum covers per table")
  73.  
  74.     def __unicode__(self):
  75.         return "%s, %s" % (self.venue.name, self.name)
  76.  
  77.  
  78. class AreaLayout(CorecrmModel):
  79.     name = models.CharField(max_length=100)
  80.     description = models.TextField()
  81.     area = models.ForeignKey(Area)
  82.     additional_notes = models.TextField(blank=True)
  83.     layout_type = models.ManyToManyField(AreaLayoutType, default=None)
  84.  
  85.     def __unicode__(self):
  86.         return "%s: %s" % (self.area.venue.name, self.name)
  87.  
  88.  
  89. class Booth(CorecrmModel):
  90.     name = models.CharField(max_length=100)
  91.     description = models.TextField(blank=True)
  92.     area_layout = models.ForeignKey(AreaLayout, limit_choices_to={
  93.         'area__venue__venue_type__name__in': ['Nightclub', 'Pub', 'Bar']})
  94.     capacity = models.IntegerField()
  95.  
  96.  
  97. class BoothAdmin(admin.ModelAdmin):
  98.     list_filter = [PermittedVenueForBoothListFilter]
  99.     ordering = ['area_layout__area__venue__name', 'name']
  100.  
  101.     def queryset(self, request):
  102.         queryset = Booth.objects.none()
  103.         venues = request.user.valid_venues
  104.         for venue in venues:
  105.             for area in venue.area_set.all():
  106.                 for al in area.arealayout_set.all():
  107.                     queryset = queryset | al.booth_set.all()
  108.         return queryset
  109.  
  110.     def __unicode__(self):
  111.         return "%s: %s" % (self.area_layout.area.venue.name, self.name)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement